事前ルーティングされたチェーンの 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