🧭 说明
iptables-restore 命令用于从文件批量恢复 iptables 防火墙规则,通常与 iptables-save 命令配合使用,能快速加载复杂的防火墙配置,特别适合规则迁移或系统重启后的规则恢复。
🛠️ 命令语法与核心选项
执行 iptables-restore 命令的基本格式如下:
bash
iptables-restore [选项] < 保存的规则文件
其核心选项包括:
| 选项 | 简写 | 功能说明 |
|---|---|---|
--counters |
-c |
恢复规则时,一并恢复数据包和字节计数器的值。 |
--noflush |
-n |
不清空 当前表中的现有规则,而是将文件中的规则追加到后面。使用需谨慎,避免规则冲突。 |
--test |
-t |
仅测试规则文件的语法是否正确,并不实际应用规则。 |
--verbose |
-v |
显示规则处理过程中的详细调试信息。 |
--wait |
-w |
指定等待获取xtables锁的最大秒数(如 -w 5),防止多进程配置冲突。 |
--table |
-T |
(主要用于 ip6tables-restore)指定仅恢复哪个表的规则,例如 -T nat。 |
📝 典型用法示例
-
基本恢复
这是最常见的用法,会清空所有现有规则,并用文件中的规则完全替换。
bashsudo iptables-restore < /etc/iptables/rules.v4 -
测试规则文件
在正式应用前,先检查规则文件语法是否有误。
bashsudo iptables-restore -t -v < /etc/iptables/rules.v4 -
追加规则
保留当前已存在的所有规则,并将文件中的新规则添加到后面。
bashsudo iptables-restore -n < /etc/iptables/rules.v4 -
恢复计数器
在恢复规则的同时,也恢复之前保存的各规则的数据包和流量统计信息。
bashsudo iptables-restore -c < /etc/iptables/rules.v4
⚠️ 重要注意事项
- 权限要求 :操作 iptables 规则需要 root 权限,务必使用
sudo。 - 规则覆盖 :默认情况下,
iptables-restore会清空 相应表的所有现有规则。除非使用-n选项,否则操作前最好确认已有规则已备份或可被覆盖。 - 规则持久化 :使用
iptables-restore恢复的规则仅在当前生效。要确保系统重启后规则依然有效,需要将恢复命令(如iptables-restore < /etc/iptables/rules.v4)添加到开机自动执行脚本中(如/etc/rc.local或创建相应的 systemd 服务)。
💎 总结
掌握 iptables-restore 能极大提升防火墙规则的管理效率。关键在于理解其 "整体替换" 的默认行为,并善用 -t 选项进行测试,以及通过开机脚本实现规则的持久化。