1. 命令简介
iptables-save 是一个用于导出 Linux 内核中 Netfilter/iptables 规则的工具。它能够将当前系统中配置的 iptables 规则集(包括各个表,如 filter、nat、mangle、raw 等)以可读的文本格式输出到标准输出(stdout)。
这个输出格式与 iptables-restore 命令完全兼容,因此它主要被用于:
- 备份当前的防火墙配置。
- 在系统重启后恢复规则。
- 在不同系统间迁移或复制防火墙规则集。
2. 语法格式
plaintext
iptables-save [选项] [表名]参数说明:
- [选项]:用于控制输出内容和格式的可选参数。
- [表名]:可选参数,指定要导出的特定表(如 filter, nat)。如果省略,则导出所有表。
3. 常用选项及说明
表格
| 选项 | 说明 |
|---|---|
| -c, --counters | 在输出中包含每条规则匹配的数据包计数器和字节计数器。这对于精确备份和恢复规则状态(如限速规则)非常有用。 |
| -t <表名>, --table < 表名 > | 仅导出指定的表。例如,-t nat 只导出 NAT 表规则。如果不指定此选项,默认导出所有表。 |
| -V, --version | 显示 iptables-save 的版本信息。 |
| -h, --help | 显示帮助信息。 |
注意:部分文档中提到的 -f 选项并非所有版本的标准选项。更通用和可靠的做法是使用 Shell 重定向(如 >)将输出保存到文件。
4. 示例用法
4.1 备份所有 iptables 表规则(推荐)
将当前所有表的规则,连同计数器信息,保存到备份文件中。
bash
运行
sudo iptables-save -c > /path/to/iptables-backup.rules4.2 仅备份特定表的规则
当您只关心某个特定表(如 nat 表)的配置时使用。
bash
运行
sudo iptables-save -t nat > /path/to/iptables-nat-backup.rules4.3 查看当前规则(不保存到文件)
直接将规则输出到终端进行检查。
bash
运行
sudo iptables-save查看带计数器的规则:
bash
运行
sudo iptables-save -c4.4 备份时不保存计数器信息
如果规则需要迁移到新环境,计数器通常需要重置,可以省略 -c 选项。
bash
运行
sudo iptables-save > /path/to/iptables-backup-no-counters.rules4.5 结合其他工具进行高级备份
例如,在备份时压缩文件以节省空间,并使用日期命名备份文件。
bash
运行
sudo iptables-save -c | gzip > /path/to/iptables-backup-$(date +%Y%m%d).rules.gz5. 注意事项
- 权限要求:查看和备份 iptables 规则需要 root 权限。请务必使用 sudo 或以 root 用户身份运行。
- 输出格式:iptables-save 的输出是专为 iptables-restore 命令设计的特定格式文本。除非非常了解其格式,否则请勿手动编辑,错误的修改可能导致恢复失败。
- 版本兼容性:不同版本的 iptables 工具生成的规则文件格式可能略有差异。在跨版本或跨发行版恢复规则前,建议使用 iptables-restore --test 命令测试规则文件语法。
- 动态规则:此命令只能备份内核中当前静态的规则。由某些动态工具(如 fail2ban 临时添加的封锁规则)或连接追踪(conntrack)模块管理的状态信息不会被保存在此备份中。
- 备份策略:建议将重要规则变更前的备份作为习惯。也可将备份命令加入系统定时任务中。
- 恢复规则:使用 sudo iptables-restore < /path/to/backup.rules 恢复规则。使用 -c 选项可同时恢复计数器(如:sudo iptables-restore -c < /path/to/backup.rules)。
获取更多Linux学习资料请关注“阿成学长工具包”,对话框中输入2647获取