按文档加了放行规则,端口还是不通,规则列表里能看到那条放行,位置却在拒绝规则之后。

这类报错背后常见的原因有几处,逐个排除就行。规则按顺序匹配,先命中的拒绝规则生效。也可能是放行加在了错误的链上。

不容易想到的是,规则只在运行时生效,重启后丢失。

动手时先按顺序看规则和命中计数

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

中间停过一次,把已经改的东西回滚干净,再重新来一遍。

同样的操作我在测试机上先走了一遍,线上只做验证过的部分。

别只看报错消失,验证要多做一步。放行规则命中计数开始增长,端口访问正常,重启后规则仍在。

补一句。命中计数是判断规则是否真正生效的最好依据,为空的规则说明流量根本没走到这里,先查链和表有没有选对。如果同一现象隔几天又出现,说明根因没找到,别当偶发处理。

作者 9823189