生存时间

生存时间

我想禁止接收和发送所有大小超过512字节的数据包,并且TTL字段大于30

我是否正确理解了 TTL 看起来是这样的:

iptables -t mangle -A input -j TTL --ttl-set 30

但是我还需要在这个规则里指定数据包不超过512字节,我该怎么做?

答案1

我是否正确理解了 TTL 看起来是这样的:

iptables -t mangle -A input -j TTL --ttl-set 30 ?

不。-j TTL 目标用于修改IPv4 TTL头字段。

您不想这样做,您想匹配 TTL 值(和数据包大小 512),然后使用目标-j REJECT来禁止它。

您需要使用匹配的模块:

iptables可以使用扩展数据包匹配模块。它们以两种方式加载:隐式加载,当指定-p或时--protocol,或使用-m--match选项,后跟匹配的模块名称;此后,根据特定模块,各种额外的命令行选项变为可用。
来源:man iptables

只需激活ttl 配套模块:

生存时间

此模块匹配 IP 标头中的生存时间字段。
--ttl-eq ttl 匹配给定的 TTL 值。
--ttl-gt ttl 如果 TTL 大于给定的 TTL 值,则匹配。
--ttl-lt ttl 如果 TTL 小于给定的 TTL 值,则匹配。
来源:man iptables

length配套模块:

长度

此模块将数据包的长度与特定值或值范围进行匹配。 --length [!] length[:length]
来源:man iptables

综合起来,你会得到如下规则:

iptables -A INPUT --match length 513:65535  --match ttl --ttl-gt 30 -j REJECT  

或者

 iptables -A INPUT --match length ! 1:512  --match ttl --ttl-gt 30 -j REJECT 

相关内容