尽管阻止传入 ping 数据包仍接收 ping 数据包

尽管阻止传入 ping 数据包仍接收 ping 数据包

我使用此命令iptables -A INPUT -p icmp --icmp-type echo-request -j DROP来阻止我的计算机接收的 ping 数据包,但该ping google.com命令仍然开始从 Google 获取 ping 数据包。

答案1

您的 iptables 规则阻止对您的系统的外部回显请求,但仍接收回显回复。当您 ping google.com 时,您的系统会向 google.com 发送 echo-r​​equest(这是允许的),然后 google.com 将 echo-r​​eplies 响应到您的系统(这也是允许的)。

在您当前的情况下,您可以通过再添加一项 INPUT 规则来阻止回显回复。

$ sudo iptables -A INPUT -p icmp --icmp-type echo-reply -j DROP

另一种不同的方法是使用 OUTPUT 链来阻止系统发送回显请求和回显回复。

$ sudo iptables -A OUTPUT -p icmp --icmp-type echo-request -j DROP
$ sudo iptables -A OUTPUT -p icmp --icmp-type echo-reply -j DROP

答案2

这里可以播放三种可能的内容:

首先,你丢弃“echo-要求”,这些是你的 ping 程序发送的内容。你从远程得到的回复是“echo-r​​eply”,你没有阻止它们。

一些发送原始数据包的低级方法实际上绕过了 iptables。我想我至少记得 ISC DHCP 服务器/客户端工作,即使 iptables 设置为丢弃 DHCP 数据包。 (至少客户端需要能够发送以零地址作为源的数据包,因为它在启动时还没有地址。)如果我没有记错的话,那就是AF_PACKET(请参阅packet(7)),但是该ping工具在我的 Debian 上不使用它,并且遵守 iptables。

第三,由于您过去-A常常追加到INPUT链中,因此在其之前可能会有一些东西使新规则无效,具体取决于您的 iptables 的设置方式。

相关内容