我使用此命令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-request(这是允许的),然后 google.com 将 echo-replies 响应到您的系统(这也是允许的)。
在您当前的情况下,您可以通过再添加一项 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-reply”,你没有阻止它们。
一些发送原始数据包的低级方法实际上绕过了 iptables。我想我至少记得 ISC DHCP 服务器/客户端工作,即使 iptables 设置为丢弃 DHCP 数据包。 (至少客户端需要能够发送以零地址作为源的数据包,因为它在启动时还没有地址。)如果我没有记错的话,那就是AF_PACKET
(请参阅packet(7)
),但是该ping
工具在我的 Debian 上不使用它,并且遵守 iptables。
第三,由于您过去-A
常常追加到INPUT
链中,因此在其之前可能会有一些东西使新规则无效,具体取决于您的 iptables 的设置方式。