最标准可靠的方式是用 iptables-restore 从文件加载规则:sudo iptables-restore
直接用 iptables-restore 命令从文件加载规则即可,这是最标准、最可靠的方式。
基础恢复操作
执行以下命令,将保存在文件中的规则一次性载入内核:
- sudo iptables-restore (路径替换成你实际的备份文件)
- 该操作会清空当前所有 IPv4 filter、nat、mangle 等表中的规则,再用文件内容完全替代
- 文件必须是 iptables-save 生成的格式(含 *filter、COMMIT 等标记),否则会报错
安全恢复前先验证文件
避免因语法错误导致防火墙失效,建议先做测试:
- sudo iptables-restore -t -v
- -t 表示只检查不应用,-v 显示详细过程
- 若无任何输出或提示“OK”,说明文件语法正确;若有报错,则需修正后再恢复
按需选择恢复行为
根据场景灵活使用选项:
- 保留现有规则并追加新规则:加 -n(--noflush),例如 sudo iptables-restore -n (注意可能引发重复或冲突)
- 连同数据包和字节计数器一起恢复:加 -c(--counters),适合审计或调试场景
- 等待锁机制防止并发冲突:加 -w 5(等待最多 5 秒获取 xtables 锁)
确保重启后仍生效
iptables-restore 只影响当前运行时,要持久化需配合系统机制:
- RHEL/CentOS 7+:把恢复命令写入 systemd 服务,或确保 /etc/sysconfig/iptables 文件存在且内容正确,并启用 iptables 服务(systemctl enable iptables)
- Ubuntu/Debian:安装 iptables-persistent,用 netfilter-persistent save 保存,它会自动读取 /etc/iptables/rules.v4
- 通用做法:将 iptables-restore 加入 /etc/rc.local(需可执行权限)












