firewalld规则导出与导入的核心目标是实现生产环境防火墙策略的可备份、可迁移、可审计,提供运行时快照、永久配置导出和区域文件打包三种方式,需按场景选择;推荐导出/etc/firewalld/下xml文件用于可靠备份与版本控制,并通过解压+重载完成导入。

firewalld 的规则导出与导入,核心目标是实现生产环境防火墙策略的可备份、可迁移、可审计。它不支持图形界面一键导出完整策略包(如 Windows 的 .wfw),但提供了运行时快照、永久配置导出、区域文件打包三种实用方式,需根据使用场景选择。
导出当前运行时规则(快速快照)
适用于临时记录、故障排查或对比变更前后状态。该方式只保存当前生效的规则,不包含未加载的永久配置。
- 导出指定区域全部配置(含服务、端口、富规则等):
sudo firewall-cmd --zone=public --list-all-export > /backup/public-zone-export.xml - 导出所有活跃区域的完整运行时状态:
sudo firewall-cmd --list-all-zones > /backup/all-zones-runtime.txt - 注意:此输出为纯文本,人类可读,但不能直接用于导入还原。
导出永久配置文件(推荐用于备份与迁移)
生产环境中应始终操作永久(permanent)配置,并通过导出 `/etc/firewalld/` 下的原始 XML 文件实现真正可复用的备份。这是最可靠、可版本控制、可 diff 的方式。
- 将当前永久配置同步到运行时(确保一致性):
sudo firewall-cmd --runtime-to-permanent - 打包整个 firewalld 配置目录:
sudo tar -czf /backup/firewalld-config-$(date +%Y%m%d).tar.gz /etc/firewalld/ - 关键文件说明:
– /etc/firewalld/zones/:各区域规则(如 public.xml、internal.xml)
– /etc/firewalld/services/:自定义服务定义
– /etc/firewalld/firewalld.conf:主配置(默认区域、日志级别等)
在新主机上导入并激活规则
导入不是“执行一条命令”,而是还原配置文件 + 重载服务。必须确保目标系统 firewalld 版本兼容,且无冲突的运行时修改。
- 解压备份包到目标机:
sudo tar -xzf firewalld-config-20260617.tar.gz -C / - 验证配置语法是否合法:
sudo firewall-cmd --reload --check(若报错需手动修正 XML) - 重新加载全部永久配置:
sudo firewall-cmd --reload - 确认生效:
sudo firewall-cmd --permanent --zone=public --list-all
补充:跨版本迁移注意事项
firewalld 规则格式基本向后兼容,但以下细节易引发问题:
- CentOS 7(firewalld v0.4.x)与 RHEL 9 / Rocky 9(v1.4.x+)对 rich rule 语法支持略有差异,建议导出前统一使用基础语法(如 --add-port 而非复杂富规则)
- 自定义服务文件中若引用了已废弃的模块(如 nf_conntrack_ftp),需检查目标系统内核模块是否加载
- 若原环境启用了 ipset 或 direct rules,它们不会被 zone XML 文件捕获,需单独导出:
sudo firewall-cmd --direct --get-all-rules > /backup/direct-rules.txt











