iptables -F 是否永久删除所有 iptables 规则?

Mik*_*e B 8 rhel iptables

在 RHEL 培训文档中,作者说:

...运行以下命令以禁用当前系统上的防火墙:iptables -F

他明确使用了“禁用”这个词,对我来说,这表明重新启用会很简单。在阅读 iptables 的手册页时,我看到了这一点:

刷新选定的链(如果没有给出表中的所有链)。这相当于将所有规则一一删除

我可以获得有关预期行为的说明吗?

War*_*ung 13

iptables规则被存储在Red Hat系统两个地方:

  • 在运行内核的内存中,防火墙代码在此检查网络 I/O。刷新iptables -F规则只会摆脱这个规则集。

  • /etc/sysconfig/iptables从它们装上开机。您可以使用service iptables reload或强制重新加载而无需重新启动...restart

所以答案是否定的,刷新规则iptables -F不是永久性的。

当您进入setup并修改防火墙规则时,它会将它们保存在/etc/sysconfig/iptables. 您不应该直接编辑该文件,但如果您知道iptables命令行格式,则可以很容易地找出该文件的格式。


小智 10

此外,作为参考,这里是如何刷新所有当前的 iptables 规则:

#!/bin/sh
echo "Stopping firewall and allowing everyone..."
iptables=/sbin/iptables
$iptables -F
$iptables -X
$iptables -t nat -F
$iptables -t nat -X
$iptables -t mangle -F
$iptables -t mangle -X
$iptables -P INPUT ACCEPT
$iptables -P FORWARD ACCEPT
$iptables -P OUTPUT ACCEPT
Run Code Online (Sandbox Code Playgroud)

  • 实际上还有比这更多的表。至少`-t raw` 和`-t security`。使用`/proc/net/ip_tables_names`代替硬编码 (4认同)