conntrack 删除不会停止运行大文件的复制

conntrack 删除不会停止运行大文件的复制

我有一个配置了 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 会话,其源 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 规则。即使一种方法不能立即起作用(如果除了 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 条目并停止下载。

本答案复制自: https://superuser.com/questions/1258689/conntrack-delete-does-not-stop-runnig-copy-of-big-file

相关内容