升级前需区分iptables或firewalld:iptables用iptables-save > file备份、iptables-restore < file恢复;firewalld须先firewall-cmd --runtime-to-permanent再备份/etc/firewalld目录,恢复后重启服务并--reload。

升级系统前备份防火墙策略,核心是区分使用 iptables 还是 firewalld —— 两者机制不同,备份与恢复方式也不同。升级过程可能重置或覆盖配置文件,所以必须提前保存运行时规则 + 永久配置,并在升级后验证并重新加载。
iptables 防火墙的备份与恢复
适用于 CentOS 7 之前、Debian/Ubuntu 默认未启用 firewalld 的场景。
-
备份当前全部规则(含 raw/mangle/nat/filter 表):
sudo iptables-save > /backup/iptables-$(date +%Y%m%d).rules
若只备份 IPv4 规则,路径可设为
/etc/iptables/rules.v4;IPv6 则用iptables-save -t ip6tables > /etc/iptables/rules.v6。 -
同时备份服务脚本依赖的持久化文件(如存在):
sudo cp /etc/sysconfig/iptables /backup/iptables-sysconfig-$(date +%Y%m%d)
-
升级后恢复:
- 确保
iptables-services或对应包已安装(如iptables-persistent在 Debian/Ubuntu)。 - 执行恢复:
sudo iptables-restore < /backup/iptables-20260729.rules
- 若需开机自动生效:
- RHEL/CentOS:将规则写入
/etc/sysconfig/iptables,再执行sudo systemctl enable iptables(如有服务)。 - Debian/Ubuntu:安装
iptables-persistent后运行sudo netfilter-persistent save。
- RHEL/CentOS:将规则写入
- 确保
firewalld 防火墙的备份与恢复
RHEL/CentOS 7+、Fedora、新版 Rocky/AlmaLinux 默认使用 firewalld。
-
先同步运行时配置到永久配置(关键!否则
--runtime-to-permanent不生效):sudo firewall-cmd --runtime-to-permanent
-
完整备份配置目录(含 zones、services、icmptypes 等):
sudo cp -r /etc/firewalld /backup/firewalld-$(date +%Y%m%d)
-
升级后恢复:
- 替换配置目录:
sudo rm -rf /etc/firewalld sudo cp -r /backup/firewalld-20260729 /etc/firewalld
- 重启服务并重载:
sudo systemctl restart firewalld sudo firewall-cmd --reload
- 验证是否生效:
sudo firewall-cmd --list-all
- 替换配置目录:
升级过程中需注意的关键点
-
不要跳过
--runtime-to-permanent:firewalld 的运行时规则默认不落盘,直接备份/etc/firewalld目录而没执行该命令,会导致备份为空或过期。 -
检查服务状态:升级后确认
firewalld或iptables服务已启用并开机自启(sudo systemctl is-enabled firewalld)。 -
避免规则冲突:
iptables-restore默认清空现有规则;若想追加,加-n参数(iptables-restore -n),但需自行评估顺序逻辑。 -
测试再上线:恢复后建议用
curl、telnet或nc测试关键端口连通性,尤其 SSH 和业务端口。
不复杂但容易忽略。


















