如何保存 Iptables 规则或设置?
我正在使用 GUI 工具为连接到 ADSL(DSL/Cable)网络的家用计算机设置防火墙规则。但是,重启后我的规则没有保存。有什么方法可以保存并再次加载所有防火墙规则吗?
您需要使用 iptables-save 命令。它用于将 IP 表的内容以易于解析的格式转储到屏幕上。使用 shell 提供的 I/O 重定向,您可以将 iptables 防火墙规则保存到文本文件中。要恢复 iptables 规则,请使用 iptables-restore 命令。它用于从文件指定的数据恢复 IP 表。使用 shell 提供的 I/O 重定向从文件中读取。
教程详细信息 | |
---|---|
难度等级 | 简单的 |
Root 权限 | 是的 |
要求 | Linux 终端 |
类别 | 防火墙 |
操作系统兼容性 | CentOS • Debian • Linux • RHEL • Stream • Ubuntu |
预计阅读时间 | 2 分钟 |
示例:保存和恢复 Iptables 规则
在此示例中,将当前 iptables 防火墙规则保存到名为 /root/dsl.fw 的文件中,输入:
# iptables-save > /root/dsl.fw
要恢复 iptables 规则,请输入:
# iptables-restore < /root/dsl.fw
要在 Linux 系统重启时自动恢复规则,请将以下命令添加到 /etc/rc.local 文件中,输入:
# vi /etc/rc.local
附加行:使用 vim 时按,然后按
/sbin/iptables-restore < /root/dsl.fw
保存并关闭文件。Esc
关于 RHEL/CentOS 6.x 和较早 Fedora 版本的说明
请注意,在 Red Hat Enterprise Linux (RHEL) / CentOS / Fedora Linux 下,您可以使用以下命令保存和恢复防火墙规则。要将规则保存到 /etc/sysconfig/iptables 文件:
# /etc/init.d/iptables save
要从 /etc/sysconfig/iptables 文件恢复规则:
# /etc/init.d/iptables start
Debian/Ubuntu Linux 用户恢复规则
如果您使用的是 Debian / Ubuntu Linux,请打开/etc/network/interfaces:
# vi /etc/network/interfaces
将该行附加到 eth0 部分:
post-up iptables-restore </path/to/file
关闭并保存文件。重新启动系统。
使用基于 systemd 的 Linux 发行版启用 /etc/rc.local 支持
输入以下 systemctl 命令
sudo systemctl enable rc-local.service
现在您可以使用 /etc/rc.local 在启动时恢复 iptables 规则。了解如何在启动 Linux 系统时在 systemd 上启用 rc.local shell 脚本。
总结
这个快速教程页面解释了在 Linux 上永久存储或恢复 iptables 规则的几种方法。
Debian/Ubuntu 命令:
iptables-save > rules.v4 ip6tables-save > rules.v6
Debian/Ubuntu 恢复命令
iptables-restore < rules.v4 ip6tables-restore < rules.v6
RHEL/CentOS/Fedora 保存命令:
iptables-save > /etc/sysconfig/iptables ip6tables-save > /etc/sysconfig/ip6tables
RHEL/CentOS/Fedora 恢复命令:
iptables-restore < /etc/sysconfig/iptables ip6tables-restore < /etc/sysconfig/ip6tables
相关另外,请查看我们针对Alpine Linux Awall、CentOS 8、OpenSUSE、RHEL 8、Debian 12/11、Ubuntu Linux 版本16.04 LTS / 18.04 LTS / 20.04 LTS和22.04 LTS 的
所有完整防火墙教程。