如何停止crontrack会话

时间:2017-10-06 21:04:14

标签: c linux linux-kernel iptables netfilter

我有基于linux系统的路由器。我有相关的SDK来定制路由器的linux系统。

当我从iptables规则禁用端口转发时,正在运行的crontack会话不会停止并保持建立状态。

当我从iptable规则禁用端口转发时,我想停止所有正在运行的crontack会话。我的意思是,只删除与删除的规则相关的crontack会话。因此,使用dest IP(lan IP)=删除规则的目标IP停止所有crontack会话。

如何在内核空间中执行此操作?如何开发一个内核模块,遍历所有crontack会话并检查目标IP并仅删除具有给定ipaddress的会话?是否有一些链接?

否则是用户空间方式(C函数或Linux命令)来停止特定的crontack会话?

1 个答案:

答案 0 :(得分:0)

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 -D ...

删除conntrack条目

这应该可以防止创建新的conntrack条目并切断下载。

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