Iptables, qual é a diferença entre -m state e -m conntrack?

48

Qual é a diferença prática entre:

iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

e

iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

Qual é o melhor para usar?

Obrigado.

    
por Bourne 10.02.2012 / 23:56

3 respostas

26

Ambos usam os mesmos componentes internos do kernel (subsistema de rastreamento de conexão).

Cabeçalho do xt_conntrack.c:

xt_conntrack - Netfilter module to match connection tracking
information. (Superset of Rusty's minimalistic state match.)

Então, eu diria que o módulo de estado é mais simples (e talvez menos propenso a erros). Também é mais longo no kernel. Conntrack do outro lado tem mais opções e recursos [1].

Minha chamada é usar o conntrack se você precisar de seus recursos, caso contrário, fique com o módulo de estado.

Questão semelhante no netfilter maillist.

[1] Bastante útil como "-m conntrack --ctstate DNAT -j MASQUERADE" roteamento / correção DNAT; -)

    
por 11.02.2012 / 01:29
8

Não há diferença no resultado dessas duas regras. Ambas as extensões de correspondência usam os mesmos dados para corresponder ao estado de rastreamento da conexão. state é a extensão de correspondência "antiga" e conntrack é mais recente e tem muito mais opções do que apenas corresponder ao estado de rastreamento de conexão.

    
por 11.02.2012 / 01:21
1

Documento Iptables

Como a documentação diz:

The conntrack match is an extended version of the state match, which makes it possible to match packets in a much more granular way. It let's you look at information directly available in the connection tracking system, without any "frontend" systems, such as in the state match. For more information about the connection tracking system, take a look at the The state machine chapter.

    
por 28.09.2015 / 12:10