Without the NEW rules nothing is laced into the db and thus ESTABLISHED,RELATED will never match anything.
Isso é falso.
Existem cinco estados da terra do usuário (há mais no espaço do kernel) e, embora A conexão ESTABLISHED ou RELACIONADA logicamente precisa começar com um NOVO pacote, você não precisa de nenhuma regra NEW explícita para produzir tal conexão (você precisa de um ACCEPT explícito que implicitamente inclui NOVOS pacotes, entretanto). Siga a lógica e considere os outros quatro estados primeiro, por exemplo:
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -m state --state INVALID -j REJECT --reject-with icmp-net-prohibited
-A INPUT -m state --state INVALID -j REJECT --reject-with icmp-net-prohibited
Eu deixei de fora o NOTRACK, pois isso só pode existir por causa de uma regra anterior de iptables
. Adivinha o que resta depois que essas regras foram aplicadas? Apenas novos pacotes. Agora você pode classificar os que quiser. Ele funcionará, eu prometo e anote: sem nenhuma nova regra . Nenhum.
Exactly how does iptables go about tagging packets based on the packet state?
De acordo com a referência anterior , uma conexão é estabelecida assim que uma resposta é enviada. A natureza do protocolo evidentemente entra em jogo aqui um pouco (o kernel também aplica essas regras); por exemplo. quando um pacote SYN TCP NOVO é aceito, um SYN / ACK é enviado em resposta e a conexão é ESTABLISHED; após um FIN / ACK final é extinto.
Como uma conexão é considerada RELACIONADA evidentemente depende mais do protocolo envolvido; basicamente, refere-se a conexões de / para hosts que já possuem uma conexão ESTABLISHED. Observe que às vezes você precisa carregar módulos especiais (por exemplo, para ftp) para que isso funcione.