IPTables偽装ルールは削除されましたが、既存の接続はまだ存在します。

IPTables偽装ルールは削除されましたが、既存の接続はまだ存在します。

LAN上のコンピュータがインターネットにアクセスできるように、ゲートウェイにiptables偽装ルールが適用されるLAN設定があります。正常に動作しますが、仮面舞踏会ルールを削除した後でも、既存の接続はまだ存在します。例:ping 8.8.8.8仮面舞踏会ルールを削除した後も、LAN上のコンピュータは続行します。もう一度pingすると動作しません。したがって、マスカレードルールを削除しても既存の接続は終了しません。私が追加したルールは次のとおりです。

iptables -A POSTROUTING -o eth0 -j MASQUERADE

既存の接続を終了するためにこのルール/他のソリューションを変更する方法に関する提案です。 ?

答え1

conntrackエントリが存在する限り、natテーブルは使用されません(icmp(ping)タイムアウト30)。 conntrackエントリのために短絡されました。

次のコマンドを使用して、この動作をリアルタイムで確認できますconntrack -E(このコマンドが利用できない場合は、conntrackパッケージをインストールしてください)。各[NEW]レコードは、新しいストリームが表示され、NATテーブルが一度読み込まれることを意味します。これで廃止されました。

残りの項目を削除するにはconntrack -D[...]を使用します。マニュアルを確認してください。たとえば、ping 8.8.8.8が引き続き機能している間にMASQUERADEルールを削除してから、次のようにします。

conntrack -D  --orig-dst 8.8.8.8

このpingをやめるべきです。内部IPはインターネットに漏洩します(インターネットからルーティングできない送信元IPが好きではないルーターによってブロックされるまで)。

MASQUERADEルールを削除せずに接続を終了する別の方法:

NATはファイアウォールでは機能しません。 NATを使用すると、副作用としてファイアウォールなどの保護が提供されることがよくあります。トラフィックをブロックするには、フィルタテーブルを使用する必要があります。

FORWARDチェーンの初期に存在する場合、-m conntrack --state ESTABLISHED -j ACCEPT通常はブラックリストと呼ばれる新しいチェーンが配置(ジャンプ)される前です。このチェーンには、特定の送信元IP、宛先IP、ポートなど、終了する現在の接続に一致するルールを挿入するだけです。モジュールsetipsetコマンドも使用できます。次の例を参照してくださいman iptables-extensionsiptables -A FORWARD -m set --match-set test src,dstブラックリストチェーンに入れて-j DROP

関連情報