iptables规则默认驻留内存,重启即丢失,必须保存至文件并配置定时备份;推荐存于/etc/iptables/目录,IPv4用rules.v4、IPv6用rules.v6,配合cron每日凌晨3点自动保存并压缩旧备份。

iptables 规则只驻留在内存中,系统重启或服务重载后会丢失。要保障规则长期有效,必须把当前配置保存到文件,并通过定时任务自动执行备份。
选择合适的备份路径和命名方式
推荐将备份存放在 /etc/iptables/ 目录下,保持结构清晰、权限可控:
- IPv4 规则:用
sudo iptables-save > /etc/iptables/rules.v4 - IPv6 规则:用
sudo ip6tables-save > /etc/iptables/rules.v6 - 带时间戳的临时备份(适合调试):
sudo iptables-save > /etc/iptables/rules.v4.$(date +\%F-\%H\%M)
首次使用前需创建目录并设权限:sudo mkdir -p /etc/iptables && sudo chmod 700 /etc/iptables,避免非 root 用户读取敏感规则。
配置 cron 定时备份任务
编辑 root 用户的 crontab:sudo crontab -e,添加以下两行:
0 3 * * * /sbin/iptables-save > /etc/iptables/rules.v4 2>/dev/null0 3 * * * /sbin/ip6tables-save > /etc/iptables/rules.v6 2>/dev/null
表示每天凌晨 3 点自动保存。加 2>/dev/null 可屏蔽可能的警告输出,保持日志干净。确认 cron 服务已启用:sudo systemctl is-active crond,若为 inactive 则运行 sudo systemctl start crond。
增强备份可靠性的小技巧
单靠覆盖写入存在风险,建议加入简单版本控制:
- 备份前先压缩旧文件:
sudo gzip -f /etc/iptables/rules.v4 - 保留最近 7 天的压缩包:
find /etc/iptables -name "rules.v4.*.gz" -mtime +7 -delete - 在 crontab 中组合成一行命令(用分号连接):
0 3 * * * /sbin/iptables-save > /etc/iptables/rules.v4 && gzip -f /etc/iptables/rules.v4 && find /etc/iptables -name "rules.v4.*.gz" -mtime +7 -delete
验证备份是否生效
不能只靠 cron 执行,还要定期抽检:
- 手动触发一次:
sudo /sbin/iptables-save > /tmp/test-backup,再用sudo iptables-restore 测试能否无错加载 - 检查文件修改时间:
ls -l /etc/iptables/rules.v*,确认最近更新时间符合预期 - 比对内容一致性:
sudo iptables-save | diff - /etc/iptables/rules.v4,输出为空表示当前规则与备份完全一致
规则备份不复杂但容易忽略细节,关键是路径统一、权限合理、定时可靠、验证闭环。

















