conntrack delete は大きなファイルのコピーの実行を停止しません

conntrack delete は大きなファイルのコピーの実行を停止しません

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 エントリが作成されなくなり、ダウンロードがカットされるはずです。

関連情報