记录一下那天晚上的排查过程。在 iptables 里加了放行规则,当时生效,重启或者重载防火墙之后规则全没了,端口又不通。
原因不止一个,得分开看。防火墙管理服务会重建规则链,手写的规则被清掉。少数情况下是两套工具同时操作同一张表,顺序难以预期。
不容易想到的是,规则加在了错误的链或者错误的表上。
先确认防火墙服务状态
systemctl status firewalld
接着看当前生效的规则
firewall-cmd --list-all
随后用防火墙命令持久化放行
firewall-cmd --permanent --add-port=8080/tcp
剩下的就是重载后核对
firewall-cmd --reload && firewall-cmd --list-ports
排查用的命令都是临时敲的,没有写成脚本,事后才整理。
手上没有现成的复现脚本,就照着线上请求手工拼了一个。
别只看报错消失,验证要多做一步。重载和重启之后规则仍然存在,端口访问正常。
同一台机器上别混用两套工具,谁管理就由谁负责;临时规则只适合验证,不能当成上线配置。同一份配置在测试环境跑通,不代表线上没事,两边的默认值经常不一样。