iptables および --tcp-flags

iptables および --tcp-flags

事前ルーティングされたチェーンの nat テーブルに次の規則がある場合:

   0     0 REDIRECT   tcp  --  eth5  any     anywhere             anywhere             tcp flags:FIN,SYN,RST,ACK/SYN redir ports 20000

私の意図は、DNATを受信インターフェイス(したがってリダイレクト先)に送信することで、SYNフラグが設定されていて他のすべてのフラグが設定されていないパケットのみをリダイレクトしたいと思います。このルールが正しいかどうかを知りたいです。 SYNおよびURGフラグのみが設定されたパケットがある場合はどうなりますか?または、単にSYNとPUSHフラグを設定しますか?私が知る限り、これは上記の規則に従わない。この場合、パケットはリダイレクトされません。

私が理解したところによると、--tcp-flagsルールを次のように変更する必要があります。

--tcp-flags ALL SYN

この場合 PUSH および URG フラグが設定されていてもリダイレクト(編集: いいえ!!) になりますが、これがまさに私が望むものです。だから私はそれが正しいと思います。

私の推論は正しいですか?

編集:これについて考えながら、ますます混乱しています。今書いたことを考えると、PUSHフラグまたはURGフラグを含めるかどうかは問題ではありません。どちらの場合もリダイレクトされないようです。だから論理的にはそうだ。

FIN,SYN,RST,ACK/SYN is equal to --tcp-flags ALL SYN

関連情報