Linux防火墙规则需理解匹配顺序、状态机制与持久化逻辑:规则自上而下匹配,限制性规则须前置;必须放行RELATED/ESTABLISHED连接;--permanent仅保存配置,须reload或save才生效;firewalld需明确zone、接口与服务关系。

Linux防火墙规则不是写完就生效的配置清单,而是需要理解匹配逻辑、执行顺序和状态机制的一套运行策略。新手常因忽略底层原理,导致服务不通、规则失效或安全形同虚设。
规则顺序决定一切
防火墙按从上到下的顺序逐条匹配,一旦命中就立即执行动作(ACCEPT/DROP/REJECT),不再继续检查后续规则。比如:
- 先写
iptables -A INPUT -p tcp --dport 22 -j ACCEPT,再写iptables -A INPUT -s 192.168.1.100 -j DROP—— 后者对SSH完全无效,因为流量早已被前面的规则放行 - 正确做法是:把限制性规则(如封IP、限端口)放在允许性规则之前;或者用
-I插入到链首,而非-A追加到末尾 - firewalld虽不直接暴露链序,但富规则(rich rules)也按添加顺序生效,
--permanent后必须firewall-cmd --reload才真正载入顺序
别忘了连接状态管理
现代防火墙默认启用连接跟踪(conntrack),但新手常漏配“已建立连接”的放行规则,结果自己连不上服务器。
- iptables中务必包含:
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT(或新版用-m conntrack --ctstate) - firewalld默认自动处理响应流量,但若手动添加了
--direct规则或关闭了默认zone策略,就得自己补上状态相关逻辑 - 测试时可用
ss -tn或netstat -tn确认连接是否处于ESTABLISHED状态,再比对规则是否覆盖
永久生效 ≠ 立即生效
很多命令加了--permanent就以为万事大吉,其实只是写进配置文件,没重载就不会跑在内存里。
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。
还木有评论哦,快来抢沙发吧~