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、ポートなど、終了する現在の接続に一致するルールを挿入するだけです。モジュールset
とipset
コマンドも使用できます。次の例を参照してくださいman iptables-extensions
。iptables -A FORWARD -m set --match-set test src,dst
ブラックリストチェーンに入れて-j DROP
。