我无法匹配 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
...
现在一切正常!