iptables 丢弃所有传入的 ICMP 请求,但来自一个 IP 的请求除外

Squ*_*are 8 linux iptables

目前,我有类似的东西:

iptables -A INPUT -p ICMP --icmp-type 8 -j DROP
iptables -A INPUT -s x.x.x.x -p ICMP --icmp-type 8 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)

但是,当我运行第二个命令时,它看起来好像 iptables 刚刚停止。我必须摆脱它才能回到终端。也许我做错了,但一些见解会有所帮助。

Cal*_*leb 11

您需要以相反的顺序运行规则。iptables 对命令运行的顺序很敏感。如果规则匹配,它不会继续检查更多规则,它只是遵守那个规则。如果您先设置丢弃,则接受规则将永远不会得到测试。通过使用源 IP 设置特定的接受,然后将更通用的策略设置为丢弃,您将影响预期的行为。

iptables -A INPUT -s x.x.x.x -p ICMP --icmp-type 8 -j ACCEPT
iptables -A INPUT -p ICMP --icmp-type 8 -j DROP
Run Code Online (Sandbox Code Playgroud)

至于您似乎遇到的挂起问题,您确定输入了有效的 IP 地址吗?也许您可以在该命令前面加上前缀,strace iptables …以查看它似乎挂起时正在执行的操作。