禁 ping 之后,麻烦才刚开始
为了“安全”在防火墙里全禁 ICMP,过几天开始出现奇怪的问题:某些站点连不上、大文件传一半断、TLS 握手偶发超时。
ICMP 除了 echo,还承载 destination unreachable(含 fragmentation needed)和 time exceeded。全禁之后 PMTUD 失效,路径 MTU 小于 1500 的链路会把大包静默丢弃。
合理的做法是只放行必要类型:
-A INPUT -p icmp --icmp-type echo-request -m limit --limit 10/s -j ACCEPT
-A INPUT -p icmp --icmp-type fragmentation-needed -j ACCEPT
-A INPUT -p icmp --icmp-type time-exceeded -j ACCEPT
echo-request 限速是为了防放大攻击,不是必须全禁。真要隐藏主机,用 DROP 而不是 REJECT,至少别把自己的排障工具一起关掉。