在 Debian 中清除并重置 iptables

在 Debian 中清除并重置 iptables

要清除 iptables 中的所有规则,我使用这个

#!/bin/bash
echo "clearing iptables ... "
sudo iptables -F
sudo iptables -X
sudo iptables -t nat -F
sudo iptables -t nat -X
sudo iptables -t mangle -F
sudo iptables -t mangle -X
sudo iptables -P INPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
sudo iptables -P OUTPUT ACCEPT

到目前为止,此方法有效,因为 iptables 中不再有任何条目,可以使用以下方法检查

sudo iptables -L

或者

sudo iptables -S

但是,已转发到不同目标的流量仍被路由到该目标。

看起来,清除后的 iptables 仍然处于活动状态!

到目前为止,摆脱这些规则的唯一方法是重新启动系统,但这不太优雅。

Debianiptables 似乎没有作为服务运行,因此启动或停止该服务不起作用。

如何彻底清除或重置 iptables,以使先前定义的规则停用?

答案1

  1. 刷新 iptables 规则不会影响已建立的连接(这些连接已通过 重定向)DNAT。这是相关的,因为 UDP 数据包的 conntrack 条目包含重定向信息,该信息在 iptables 规则之外使用。

  2. 使用 检查现有的 conntrack 条目conntrack -L并使用命令监视 conntrack 事件conntrack -E

  3. 使用该conntrack -F命令清除conntrack表项,新的UDP包将不再被重定向。

  4. 要将 iptables 规则作为服务进行管理,请使用netfilter-persistentiptables-persistent包。

  5. 最好使用iptables-save/iptables-restore命令,而不是手动运行iptables。它更安全、更原子化。

  6. 要管理远程主机上的 iptables 规则,请使用该iptables-apply命令,如果尚未确认,则允许回滚规则集。

答案2

sudo ufw status verbose; sudo iptables -L; 

也许 ufw 正在运行?尝试停止。

您能否详细介绍一下您的系统、网络以及哪些流量仍在路由?

1-2 个示例是可以的,包括初始防火墙规则。

编辑:

通过我的一些脚本检查.....还冲洗了链条。

sudo iptables -F INPUT
sudo iptables -F FORWARD 
sudo iptables -F OUTPUT

答案3

清除 iptables 规则的脚本足以刷新所有规则并将默认策略设置为“接受”。这实际上禁用了防火墙,因为没有规则,一切都被允许。

我们从您的评论中知道您正在发送 UDP 数据包。您可能会觉得旧规则仍然有效一段时间,尤其是当有连续的​​ UDP 数据包流通过您的防火墙机器时。这主要是因为 UDP 没有办法关闭连接,因此防火墙不知道当前活动流何时结束。唯一的方法是使用空闲超时来刷新活动的“连接”,当没有看到更多数据包时。

您有两个选择:

  1. 等待一段时间再重试。这需要停止任何当前活动的“连接”。您可以在 中找到 UDP 超时/proc/sys/net/netfilter/nf_conntrack_udp_timeout
  2. 使用conntrack工具手动删除现有的“连接”。

请注意,即使 UDP 是无连接协议,Linux 防火墙也会跟踪 TCP/UDP 的活动套接字。

相关内容