阻止 ICMP 不可达的传出数据包

阻止 ICMP 不可达的传出数据包

我正在尝试使用 iptables 规则来阻止以下流量;这是对无法访问主机的响应。

17:50:11.140992 IP 10.1.1.93 > 72.21.91.29: ICMP host 10.1.1.93 unreachable, length 48
17:50:11.140997 IP 10.1.1.93 > 72.21.91.29: ICMP host 10.1.1.93 unreachable, length 48

我添加了以下规则

[admin@user ~]# iptables -I OUTPUT -p icmp -m icmp --icmp-type 3/1 -s 10.1.1.93 -j DROP
[admin@user ~]# iptables -nL 
Chain INPUT (policy DROP)
...
...
Chain OUTPUT (policy DROP)
target     prot opt source               destination         
DROP       icmp --  10.1.1.93            0.0.0.0/0            icmptype 3 code 1
ACCEPT     all  --  0.0.0.0/0            8.8.8.8              /* COMMENT */

还尝试阻止所有 icmp 类型 3 数据包,但不知何故我仍然在 tcpdump 中看到这些数据包。有人能帮我看看我做错了什么吗?

[admin@user ~]# iptables -I OUTPUT -p icmp -m icmp --icmp-type 3 -s 10.1.1.93 -j DROP

编辑:我看到的最接近的问题是这个尚未有答案的问题。https://unix.stackexchange.com/questions/217750/undesired-icmp-destionation-unreachable-message

答案1

由于10.1.1.93不是任何接口的地址并且您有一个 SNAT 规则,我猜测 ICMP 数据包是使用不同的源地址生成的,因此您的iptables规则不匹配。

为了摆脱这些Destination Host Unreachable数据包,您可以向规则中添加正确的地址iptables,或者根本不添加地址:

iptables -I OUTPUT -p icmp -m icmp --icmp-type host-unreachable -j DROP

但是,我会努力解决他们的原因:有人试图连接到只能出现在传出连接上而不是传入连接上的地址。规则如下:

iptables -A FORWARD -d 10.1.1.93 -m conntrack --ctstate NEW -j DROP

应该可以解决您的问题。备注:它在FORWARD表中,因为这些连接不会延伸到INPUT

相关内容