我有基于linux系统的路由器,有相关的SDK可以定制路由器的linux系统。
当我从 iptables 规则中禁用端口转发时,正在运行的 conntrack 会话不会关闭并保持建立状态。
当我从 iptable 规则禁用端口转发时,我想停止所有正在运行的 conntrack 会话。我的意思是,只删除与已删除规则相关的 conntrack 会话。因此,停止所有目标 IP(lan IP)= 已删除规则的目标 IP 的 conntrack 会话。
如何在内核空间中做到这一点?如何开发一个内核模块,遍历所有 conntrack 会话并检查目标 IP 并仅删除具有给定 ipaddress 的会话?有相关链接吗?
是否有用户空间方式( C 函数或 Linux 命令)来停止特定的 conntrack 会话?
答案1
是的,该conntrack
工具有删除单个状态或刷新整个状态表的选项。它使用 Netlink 与内核交互。
conntrack --delete --orig-port-dst 80