我正在尝试通过不断 ping 某些服务以确保它们正常运行来测试它们的活跃性。它通过 ping 地址 ( 192.168.20.1
) 来检查是否“活着”。
我尝试通过 iptables 禁用它,但当我使用该 IP 地址sudo iptables -I OUTPUT -s 192.168.20.1 -j DROP
时,仍然会传输和接收数据包。ping
我还尝试过编辑/etc/sysctl.conf
文件并添加net.ipv4.icmp_echo_ignore_all=1
然后重新启动,但sysctl -p
没有成功。我只需对192.168.20.1
静止器执行 ping 操作即可成功获得响应。
有没有办法阻止 IP 地址,以便该ping
命令无法成功地将数据包返回到我的主机?另外,如果有有关将其恢复的信息,我们将不胜感激。
解决方案
能够通过这一行简单地阻止 icmp 协议:
iptables -A OUTPUT --proto icmp -j DROP
由于 linuxping
命令通过 ICMP 工作,因此简单地将其丢弃以进行联网将会导致 ping 失败。更改为-A
就是-D
将其恢复的方法。
答案1
几个选项
sudo echo “1” > /proc/sys/net/ipv4/icmp_echo_ignore_all
sudo sysctl -w net.ipv4.icmp_echo_ignore_all=1 && sysctl -p
sudo iptables -A INPUT -p icmp –icmp-type echo-request -j REJECT
sudo iptables -A INPUT -p icmp –icmp-type echo-request -j DROP
sudo iptables -A OUTPUT -p icmp –icmp-type echo-reply -j DROP
我认为你的使用-I
是有意义的,OUTPUT
因为正如 Giacomo 所说,在它之前你可能还有其他规则在起作用。您确定在正确的目标计算机上安装了规则吗?
如果以上方法都不起作用,您可以列出您的 iptables 规则。