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
...
이제 모든 것이 잘 작동합니다!