
NAT ポート転送が設定されたルーターがあります。NAT 経由で大きなファイルの http コピーを開始しました。http サーバーは、ダウンロードする大きなファイルを含む LAN PC でホストされています。WAN PC からファイルのダウンロードを開始しました。ファイル コピーの実行中は NAT ルールを無効にしました。ファイルのコピーは残ります。conntrack-tool で NAT 転送ルールを無効にするときに、ファイルのコピーを停止したいと思います。
私のconntrackリストには次のconntrackセッションが含まれています
# conntrack -L | grep "33.13"
tcp 6 431988 ESTABLISHED src=192.168.33.13 dst=192.168.33.215 sport=52722 dport=80 src=192.168.3.17 dst=192.168.33.13 sport=80 dport=52722 [ASSURED] use=1
次のコマンドで削除しようとしました:
# conntrack -D --orig-src 192.168.33.13
tcp 6 431982 ESTABLISHED src=192.168.33.13 dst=192.168.33.215 sport=52722 dport=80 src=192.168.3.17 dst=192.168.33.13 sport=80 dport=52722 [ASSURED] use=1
conntrack v1.4.3 (conntrack-tools): 1 flow entries have been deleted.
conntrackセッションが削除されたことは次のコマンドで確認できます。ただし、別のconntrackセッションが作成され、src ipアドレスは削除されたconntrackのLANアドレスです。
# conntrack -L | grep "33.13"
tcp 6 431993 ESTABLISHED src=192.168.3.17 dst=192.168.33.13 sport=80 dport=52722 src=192.168.33.13 dst=192.168.33.215 sport=52722 dport=80 [ASSURED] use=1
conntrack v1.4.3 (conntrack-tools): 57 flow entries have been shown.
新しいconntrackを削除しようとしましたが、そのまま残ります
# conntrack -D --orig-src 192.168.3.17
# conntrack -L | grep "33.13"
conntrack v1.4.3 (conntrack-tools): 11 flow entries have been shown.
tcp 6 431981 ESTABLISHED src=192.168.3.17 dst=192.168.33.13 sport=80 dport=52722 src=192.168.33.13 dst=192.168.33.215 sport=52722 dport=80 [ASSURED] use=1
何が足りないのでしょうか?
答え1
https://www.kernel.org/doc/Documentation/networking/nf_conntrack-sysctl.txt
nf_conntrack_tcp_loose - BOOLEAN
0 - disabled not 0 - enabled (default)
If it is set to zero, we disable picking up already established connections.
したがって、すでに確立されている接続はオンザフライで検出され (SYN/SYN+ACK/ACK は関係ありません)、新しい conntrack エントリとして追加されます。新しい conntrack エントリであるため、nat テーブルが再度トラバースされ、DNAT ルールが再度適用されます。1 つの方法がすぐに機能しない場合でも (DNAT ルールに加えて SNAT/MASQUERADE が定義されていない場合、http サーバーの送信パケットは WAN 上で 192.168.3.17 としてしばらく表示され、192.168.33.13 によって拒否/無視される可能性があります)、他の方法が再試行されるとすぐに (192.168.33.13 からの ACK 再試行など)、これは一致します。
これを入力してください:
echo 0 > /proc/sys/net/netfilter/nf_conntrack_tcp_loose
そして、次の方法で conntrack エントリを削除してみてくださいconntrack -D
...
これにより、新しい conntrack エントリが作成されなくなり、ダウンロードがカットされるはずです。