NATポートフォワーディングが設定されたルーターがあります。 natを介して大きなファイルのhttpコピーを起動しました。 httpサーバーは、ダウンロードする大きなファイルを含むLANPCでホストされます。 WAN PCからファイルのダウンロードを開始しました。ファイルコピーの実行中にNATルールを無効にしました。ファイルのコピーは残ります。NAT転送を無効にすると、ファイルのコピーを停止します。 conntrack-toolを使用したルール。
私の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 addressで作成されました。これは、削除された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
私が欠けているものは何ですか?
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 as192.168.3.17としてしばらくの間表示される可能性があります。 192.168.33.13によって拒否/無視されます)、他の方法で再試行するとすぐに(192.168.33.13からのACK再試行...)、これは一致します。
これを入力します:
echo 0 > /proc/sys/net/netfilter/nf_conntrack_tcp_loose
そして、conntrack -D
..を使用してconntrackエントリを削除してみてください。
これにより、新しいconntrackエントリが作成されなくなり、ダウンロードが削減されることが期待されます。