我有一台运行 RedHat 的 Linux 服务器,我想让它可 ping 通但对 traceroute/tracert 不可见。我设置了一些 iptables 规则,但无论我尝试什么,都是阻止或允许 ping 和 traceroute。我可以使用 ipfw 在另一台运行 FreeBSD 的机器上使其工作,使用以下规则,ipfw add deny icmp from me to any icmptypes 11 out
此规则允许我 ping 我的机器,当跟踪到达机器时,它会跳过它并显示 *****。我如何在 redhat 中使用 iptables 或任何其他可能的方式实现这一点?谢谢!
答案1
互联网控制消息协议 (ICMP) 有许多消息由“类型”字段标识。您需要使用 0 和 8 ICMP 代码类型。
(0) is for echo-reply
(8) is for echo-request
对于 iptables,首先设置你的 IP:
SERVER_IP="<put_your_ip_here>"
第二,允许 ping
iptables -A INPUT -p icmp --icmp-type 8 -s 0/0 -d $SERVER_IP -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type 0 -s $SERVER_IP -d 0/0 -m state --state ESTABLISHED,RELATED -j ACCEPT
下一个规则是完全禁用 ICMP
iptables -A INPUT -p icmp -s 0/0 -d $SERVER_IP -j DROP