Marcar pacotes com iptables baseados em TTL e comprimento

1

Não consigo corresponder aos pacotes no TTL

Eu quero marcar os pacotes que, depois de serem roteados, tenham um TTL menor que 10 com o seguinte comando:

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

Mas continuo recebendo o mesmo erro:

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.

Estou usando o iptables v1.4.21 . Presumo que não seja um problema de módulos carregados, pois a saída detalhada reconhece a correspondência TTL.

Alguém tem uma ideia do que poderia ser o problema?

    
por lferran 16.09.2016 / 20:58

1 resposta

0

O problema veio do fato de que as extensões do netfilter não foram incluídas na minha versão corrigida do kernel Linux.

Então eu tive que recompilar o kernel e ativar várias opções de configuração, como:

# 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
...

e agora tudo está funcionando!

    
por 20.09.2016 / 10:08

Tags