iptables丢弃长度和TTL条件不起作用

时间:2014-05-11 15:30:58

标签: linux unix networking ping iptables

使用Linux主机上的iptables实用程序需要创建迷你防火墙。 我需要删除包长度大于722且TTL大于22的所有传入连接。需要完全AND。仅当两个条件都为TRUE时才丢弃。

sudo iptables -N LOGDROP
sudo iptables -A OUTPUT -m ttl --ttl-gt 22 -j LOGDROP
sudo iptables -A INPUT -m ttl --ttl-gt 22 -j LOGDROP
sudo iptables -A LOGDROP -m length --length 722:65535 -j DROP

主机的IP地址为10.6.7.9,带有防火墙。

我从这台主机做了4次测试,试图ping另一台主机:

ping -s 10000 -t 250 10.6.7.10 //fail (TTL AND LENGHT are wrong)
ping -s 100 -t 200 10.6.7.10 //success (TTL is wrong)
ping -s 10 -t 10 10.6.7.10 //success (Both are right)
ping -s 10000 -t 10 10.6.7.10 // fail, BUT SHOULD BE TRUE.

为什么上次ping不起作用,以及如何解决?谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

问题是回复路径。

使用ping -t,您只会更改要发送的数据包的TTL。 回复数据包的起始TTL设置为操作系统默认值(Linux中为64)。

因此,在第四种情况下,您的传出数据包的TTL为10,大小为10000。从10.6.7.10返回的数据包的TTL为64,大小为10000,因此将被丢弃。

您可以使用嗅探器(例如wireshark)来验证这一点。