按文档加了放行规则,端口还是不通,规则列表里能看到那条放行,位置却在拒绝规则之后。
这类报错背后常见的原因有几处,逐个排除就行。规则按顺序匹配,先命中的拒绝规则生效。也可能是放行加在了错误的链上。
不容易想到的是,规则只在运行时生效,重启后丢失。
动手时先按顺序看规则和命中计数
iptables -L INPUT -n -v --line-numbers
然后把放行插到拒绝之前
iptables -I INPUT 1 -p tcp --dport 8080 -j ACCEPT
随后确认默认策略
iptables -S | head -5
持久化规则
iptables-save > /etc/iptables/rules.v4
中间停过一次,把已经改的东西回滚干净,再重新来一遍。
同样的操作我在测试机上先走了一遍,线上只做验证过的部分。
别只看报错消失,验证要多做一步。放行规则命中计数开始增长,端口访问正常,重启后规则仍在。
补一句。命中计数是判断规则是否真正生效的最好依据,为空的规则说明流量根本没走到这里,先查链和表有没有选对。如果同一现象隔几天又出现,说明根因没找到,别当偶发处理。