Não pretendo ser um especialista em iptables
regras, mas o primeiro comando está usando a extensão de rastreamento de conexão ( conntrack
) enquanto o segundo está usando a state
extensão.
Ponto de dados # 1
De acordo com este documento, a conntrack
extensão foi substituída state
.
Obsolete extensions:
• -m state: replaced by -m conntrack
Ponto de dados # 2
Mesmo assim, achei as perguntas e respostas do SF intituladas: Perguntas sobre firewall e estado e política? onde o OP alegou ter feito essa pergunta no IRC em # iptables @ freenode. Depois de discuti-lo lá, ele chegou à conclusão de que:
Tecnicamente, a partida do conntrack substitui - e, portanto, obsoleta - a partida do estado. Mas praticamente a correspondência entre estados não é obsoleta de forma alguma.
Ponto de dados # 3
Por fim, encontrei as perguntas e respostas do SF intituladas: Iptables, qual é a diferença entre -m state e -m conntrack? . A resposta desta pergunta é provavelmente a melhor evidência e conselho sobre como visualizar o uso de conntrack
e state
.
excerto
Ambos usam os mesmos componentes internos do kernel abaixo (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 - o módulo state é mais simples (e talvez menos propenso a erros). Também é mais longo no kernel. O Conntrack do outro lado tem mais opções e recursos [1] .
Minha chamada é usar o conntrack se você precisar de recursos, caso contrário, atenha-se ao módulo de estado.
[1] Bastante útil, como "-m conntrack --ctstate DNAT -j MASQUERADE"
roteamento / correção DNAT ;-)
Ponto de dados # 4
Encontrei esse tópico nas discussões netfilter@vger.kernel.org netfilte / iptables, intitulado: state match is obsolete 1.4.17 , que praticamente diz que state
é apenas um alias para conntrack
que, na verdade, não importa o que você use, em ambas as circunstâncias que você está usando conntrack
.
excerto
Na verdade, eu tenho que concordar. Por que não mantemos "state" como um alias e aceitamos a sintaxe antiga em "conntrack"?
O estado está atualmente com alias e traduzido para o conntrack no iptables se o kernel o possuir. Nenhum script está quebrado.
Se o alias for feito no espaço do usuário, a parte do kernel poderá ser removida - um dia, talvez.
O alias já está feito no espaço do usuário. Digita-se "state" e é convertido em "conntrack" e depois é enviado para o kernel. (Até onde eu sei se os aliases do módulo ipt_state, etc foram adicionados ao módulo conntrack, até o módulo do kernel do estado pode ser removido.)
Referências