Use this checklist before promoting any host firewall change
to production. Any critical failure must be resolved before
deploy.
How to use this checklist
Run each command twice: once on the target host, and once from a known-good source outside it. The distinction matters more here than anywhere else in this course. A firewall check run locally reads the ruleset; only a check run from off the host proves what that ruleset actually does to arriving traffic.
Several commands are written so that no output is the pass condition - they print only the rules that are wrong. Any line they emit is a finding, and the line names the chain and rule handle you need to fix.
Record the output of each command against the change ticket. The ruleset you are promoting and the evidence that it behaves as intended belong in the same place, because the revert plan is only credible if someone can see what the previous state was.
A warn item does not block the deploy, but an unresolved
warn is a decision someone has to own in writing.
Cluster nodes
Pacemaker clusters need more than the 5405/UDP that every guide names. Scope all of these to the ring subnet:
| Port | Proto | Service | Symptom when blocked |
|---|---|---|---|
| 5404-5412 | UDP | Corosync / knet (one port per link) | Membership loss; a single-port rule breaks the second ring only, so the cluster looks healthy until the first ring fails |
| 2224 | TCP | pcsd | pcs status works on every node, but pcs host auth and pcs cluster start <node> time out |
| 3121 | TCP | pacemaker_remote | Remote and guest nodes report offline |
| 21064 | TCP | DLM | GFS2/OCFS2 mounts hang rather than fail |
| 112 | IP proto | VRRP (keepalived) | Split-brain VIP: both peers become MASTER |
# nftables, ring subnet only
sudo nft add rule inet filter input ip saddr 10.0.0.0/24 udp dport 5404-5412 accept
sudo nft add rule inet filter input ip saddr 10.0.0.0/24 tcp dport 2224 accept
sudo nft add rule inet filter input ip saddr 10.0.0.0/24 tcp dport 3121 accept
sudo nft add rule inet filter input ip saddr 10.0.0.0/24 tcp dport 21064 accept
sudo nft add rule inet filter input ip saddr 10.0.0.0/24 ip protocol 112 accept
# firewalld ships the common set as one service
sudo firewall-cmd --permanent --add-service=high-availability
Confirm the real mcastport with corosync-cmapctl | grep mcastport rather than assuming 5405, and verify the result
from a peer node. ss -lntup on the node shows the daemons
listening whether or not the filter in front of them permits
anything.
Sign-off
- Operator: _________________ Date: ___________
- Reviewer: ________________ Date: ___________