Iptables 伪装规则已删除,现有连接仍然存在

Iptables 伪装规则已删除,现有连接仍然存在

我有一个 LAN 配置,其中在网关上应用了 iptables 伪装规则,以启用 LAN 中的计算机访问互联网。它工作正常,但是即使在删除伪装规则后,现有连接仍然存在。例如:ping 8.8.8.8即使在删除伪装规则后,LAN 中的计算机上仍会继续。再次 ping 时不起作用。因此,删除伪装规则后,现有连接不会被终止。我添加的规则是:

iptables -A POSTROUTING -o eth0 -j MASQUERADE

任何修改此规则/其他解决方案以终止现有连接的建议。 ?

答案1

只要 conntrack 条目存在(icmp (ping) 超时 30),nat 表就不再使用。它只是被 conntrack 条目短路了。

您可以使用以下命令实时检查此行为conntrack -E(如果没有该命令,请安装 conntrack 软件包)。每一条[NEW]记录都意味着一个新的流出现并且nat表被读取一次。然后就不再用了。

要删除剩余的条目,请使用conntrack -D[...] 。检查手册。例如,在删除 MASQUERADE 规则后,同时对 8.8.8.8 的 ping 操作仍然有效,请执行以下操作:

conntrack -D  --orig-dst 8.8.8.8

应该会破坏这个 ping。请注意,您的内部 IP 将泄漏到互联网(直到它被不喜欢互联网上不可路由源 IP 的路由器阻止)。

在不删除 MASQUERADE 规则的情况下终止连接的其他方法:

请注意,NAT 不适用于防火墙。使用 NAT 通常提供像防火墙一样的保护只是一个副作用。您应该使用过滤表来阻止流量。

在 FORWARD 链的早期,如果存在,则在通常-m conntrack --state ESTABLISHED -j ACCEPT放置(跳转到)称为黑名单的新链之前。在此链中,只需插入与您要终止的当前连接相匹配的任何规则,无论是特定的源 ip、目标 ip、端口……您还可以使用该set模块和ipset命令。请参阅中的示例man iptables-extensionsiptables -A FORWARD -m set --match-set test src,dst只需将其放入黑名单链中并添加-j DROP.

相关内容