iptables如何保存当前配置
相信不少朋友都遇到过这个问题:辛苦用iptables配好的防火墙规则,系统一重启就全没了。确实,iptables默认不会自动保存配置,所以得想个办法把规则“定格”下来。下面聊聊几种主流的保存和恢复方案,都很实用。 方法一:iptables-sa ve + iptables-restore 这是最直接
相信不少朋友都遇到过这个问题:辛苦用iptables配好的防火墙规则,系统一重启就全没了。确实,iptables默认不会自动保存配置,所以得想个办法把规则“定格”下来。下面聊聊几种主流的保存和恢复方案,都很实用。

方法一:iptables-sa ve + iptables-restore
这是最直接、最朴素的方法,也是很多老手习惯用的。
-
保存当前配置到文件
sudo iptables-sa ve > /etc/iptables/rules.v4这条命令会把当前所有IPv4规则一股脑儿导出到
/etc/iptables/rules.v4这个文件里。位置可以自己选,但放在/etc/iptables/下比较规范。如果用的是IPv6,就把rules.v4换成rules.v6,命令也换成ip6tables-sa ve。 -
恢复配置
系统重启后,或者你想从备份里恢复规则,跑下面这条命令就行:sudo iptables-restore < /etc/iptables/rules.v4这样就妥妥的了。当然,为了让系统每次启动时自动加载,你还需要在启动脚本里加上这一句,或者利用下面更自动化的方法。
方法二:iptables-persistent
这个工具可以帮你省掉手动写启动脚本的麻烦。iptables-persistent在安装时就会询问是否保存当前规则,并且在系统启动时自动恢复。
-
安装
sudo apt-get update sudo apt-get install iptables-persistent安装过程会问你是否要保存当前的
iptables规则,果断选“是”就行。 -
手动保存
假如安装时没选,或者后来规则又改了,可以手动保存:sudo netfilter-persistent sa ve -
查看保存状态
sudo netfilter-persistent status这条命令可以让你知道当前哪些规则已经被持久化了。
方法三:service 或 systemctl
部分发行版(比如老一点的CentOS或RHEL)会把防火墙规则管理集成到系统服务里。
-
保存规则
sudo service iptables sa ve或者用更精细一点的操作:
sudo systemctl stop iptables sudo iptables-sa ve > /etc/iptables/rules.v4 sudo systemctl start iptables -
恢复规则
同样,恢复时使用iptables-restore命令。sudo iptables-restore < /etc/iptables/rules.v4
注意事项
- 权限问题:这些命令都需要
root权限(也就是sudo),普通用户是没法操作防火墙核心的。 - 提前备份:在生产环境里捣鼓防火墙规则之前,强烈建议先备份一份。万一改出问题,还能快速回滚。
- 发行版差异:不同Linux发行版用的包管理器(比如
aptvsyum)和服务管理工具(systemctlvsservice)可能不完全一样。比如Debian/Ubuntu系列常用apt和systemctl,而旧版CentOS/RHEL则更习惯yum和service iptables。需要根据你的实际情况灵活调整。
以上就是几种主流的iptables配置持久化方案。选一个你感觉最顺手、也最符合你系统环境的就行。规则保存好了,重启就不再是烦恼了。


































