根据 TTL 和长度使用 iptables 标记数据包

根据 TTL 和长度使用 iptables 标记数据包

我无法匹配 TTL 上的数据包

我想使用以下命令标记路由后 TTL 小于 10 的数据包:

iptables -v --table mangle -A POSTROUTING -o h_0_0-eth0 -m ttl --ttl-lt 10 -j MARK --set-mark 10

但我不断收到同样的错误:

MARK  all opt -- in * out h_0_0-eth0  0.0.0.0/0  -> 0.0.0.0/0   TTL match TTL < 10 MARK set 0xa
iptables: No chain/target/match by that name.

我在用iptables v1.4.21。我认为这不是加载模块的问题,因为详细输出识别 TTL 匹配。

有人知道可能是什么问题吗?

答案1

问题是由于我的 Linux 内核补丁版本中没有包含 netfilter 扩展。

所以我不得不重新编译内核并激活各种配置选项,例如:

# Xtables targets
#
CONFIG_NETFILTER_XT_TARGET_AUDIT=y
CONFIG_NETFILTER_XT_TARGET_CHECKSUM=y
CONFIG_NETFILTER_XT_TARGET_CLASSIFY=y
CONFIG_NETFILTER_XT_TARGET_CONNMARK=y
CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=y
CONFIG_NETFILTER_XT_TARGET_DSCP=y

# This one provides the TTL target
CONFIG_NETFILTER_XT_TARGET_HL=y 
CONFIG_NETFILTER_XT_TARGET_HMARK=y
...

现在一切正常!

相关内容