RSTの削除とNOTRACKの使用

RSTの削除とNOTRACKの使用

私は独自のファイアウォールを構築しています。ユーザー空間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接続追跡で接続が追跡されないようにします。

関連情報