私は独自のファイアウォールを構築しています。ユーザー空間TCP / IPスタックを構築するとします。
ただし、カーネルが認識しないパケットを受信すると、カーネルはRST + ACKを送信します(ACKが送信されたかどうかわかりません(更新:実際にACKが送信されたように見えます))。
ポートを開かないため、カーネルのデフォルト動作をオーバーライドする方法が必要です。
発信RSTをブロックするためにIPテーブルを使用することを提案する人を見つけ、NOTRACKの使用を提案する答えも見つけました。
NOTRACKの仕組みやメリットとデメリットがわかりません。 RSTをブロックすると接続を終了する必要があるため、別の問題が発生しますが、RSTをブロックすると私のRSTを送信するのが難しくなります。
iptables -t raw -A PREROUTING -p tcp --port 8080 -j NOTRACK
私の仮説は、この規則がカーネルがポート8080からの着信パケットを制御するのを防ぐことです。これが本当なら、RSTをブロックするよりもはるかに良いでしょう。
修正する:
実際にこれをWiresharkでテストしました。 NOTRACKルールを追加した後でもまだRSTが送信されるので、NOTRACKの用途は何であるかわかりません。
iptables -t raw -A PREROUTING -p tcp --sport 443 -j NOTRACK
答え1
NOTRACK
接続追跡で接続が追跡されないようにします。