Se eu tiver a seguinte regra na tabela nat na cadeia de pré-criação:
0 0 REDIRECT tcp -- eth5 any anywhere anywhere tcp flags:FIN,SYN,RST,ACK/SYN redir ports 20000
Minha intenção é DNAT para a interface de entrada (daí o alvo de redirecionamento) e eu quero redirecionar apenas os pacotes onde o SYN-Flag está definido e todos os outros sinalizadores estão indefinidos. Eu estou querendo saber se esta regra está correta. O que acontece se houver um pacote com apenas o SYN e o URG Flag set? Ou apenas com o sinalizador SYN e PUSH? Tanto quanto eu sei que não seria compatível com a regra acima. Neste caso, o pacote simplesmente não seria redirecionado.
Pelo que entendi, devo alterar a regra --tcp-flags
para:
--tcp-flags ALL SYN
Nesse caso, mesmo que os sinalizadores PUSH e URG estejam definidos, ele (Edit: NOT !!) será redirecionado e é o que eu quero. Então é por isso que acho que isso seria correto.
O meu raciocínio está certo?
Edit: Como estou pensando nisso, estou ficando cada vez mais confuso. Refletindo sobre o que acabei de escrever, não importa se incluímos o flag PUSH ou URG, porque parece que em ambos os casos ele não seria redirecionado. Então, logicamente, parece que
FIN,SYN,RST,ACK/SYN is equal to --tcp-flags ALL SYN