ufw本身不支持规则导出/导入,但可通过备份/etc/ufw/下user.rules、user6.rules、before.rules、after.rules、ufw.conf等文件实现迁移;需注意内核模块、网卡名、ssh安全及日志路径兼容性。

UFW(Uncomplicated Firewall)本身不提供内置的规则导出/导入功能,但可以通过备份其配置文件和状态信息,实现规则的迁移。关键在于准确保存规则定义、启用状态及底层 iptables 规则映射。
备份当前 UFW 规则与配置
UFW 的规则实际存储在 /etc/ufw/ 目录下,核心文件包括:
-
user.rules 和 user6.rules:记录所有通过
ufw allow/deny添加的 IPv4/IPv6 规则 - before.rules 和 before6.rules:预置链规则(如自定义 INPUT 前处理)
- after.rules 和 after6.rules:后置链规则(如自定义 FORWARD 后处理)
-
ufw.conf:包含是否启用(
ENABLED=yes/no)、日志级别、默认策略等全局设置
执行以下命令打包备份(保留权限和时间戳):
sudo tar -czf ufw-backup-$(date +%F).tar.gz -C /etc ufw
验证备份完整性
解压后检查关键内容是否合理:
- 打开
user.rules,确认有类似-A ufw-user-input -p tcp --dport 22 -j ACCEPT的行 - 查看
ufw.conf中ENABLED=yes表示防火墙当前是激活状态 - 运行
sudo ufw status verbose对照输出,确保规则语义一致
迁移到新服务器的操作步骤
在目标服务器上还原前,请确保已安装并初始化 UFW:
- 安装:
sudo apt install ufw(Ubuntu/Debian)或sudo dnf install ufw(Fedora) - 停用旧规则(如有):
sudo ufw disable - 清空已有配置:
sudo rm -rf /etc/ufw/*(谨慎操作,建议先备份原/etc/ufw) - 解压备份:
sudo tar -xzf ufw-backup-*.tar.gz -C / - 重载配置:
sudo ufw reload或重启服务:sudo systemctl restart ufw - 验证:
sudo ufw status numbered检查规则是否加载成功
注意事项与常见问题
迁移过程需留意环境差异:
- 内核模块兼容性:若新服务器禁用了
nf_tables或使用 nftables 后端,UFW 可能无法正常加载(UFW 22.04+ 默认尝试用 nftables,可强制回退:echo "IPT_MODULES=ip_tables,ip6_tables,xt_conntrack" | sudo tee -a /etc/default/ufw) - 网络接口名变化:若
before.rules中硬编码了eth0等设备名,需按新系统接口(如ens3)手动调整 - SSH 安全锁死风险:迁移后若规则误拒 SSH,务必提前在新服务器开启控制台访问或配置 recovery 模式
- 日志路径差异:
ufw.conf中的LOGFILE路径需确认目标系统是否存在对应目录(如/var/log/ufw.log)










