首页/安全/安全加固速查/iptables 规则持久化(重启不丢)
防火墙与访问控制50 条

iptables 规则持久化(重启不丢)

iptables 规则默认只在内存,重启即清空;用 iptables-save/restore 配合发行版服务完成持久化,并纳入配置管理。

安全加固速查安全更新于 2026-10-13

iptables 规则为什么会丢

iptables 规则默认只存在于内核内存中,重启后全部清空。持久化要两步:先用 iptables-save 把当前规则导出成文件,再由发行版提供的持久化服务在开机时 restore。RHEL/CentOS 系用 iptables-services 提供的 iptables 服务,Debian/Ubuntu 系用 iptables-persistent 的 netfilter-persistent。最容易踩的坑是手工执行 iptables-save 重定向到文件——那只是存了快照,没有任何机制会在开机时加载它。

基本信息

适用平台Linux(iptables)
RHEL 系包 iptables-services;命令 service iptables save;文件 /etc/sysconfig/iptables
Debian 系包 iptables-persistent;命令 netfilter-persistent save;文件 /etc/iptables/rules.v4
基线重启后生效规则与批准版本一致
风险等级中

典型使用场景

  • 新建主机首次加固:规则调好后立刻做持久化,避免重启失效
  • 防火墙策略变更:每次变更后重新保存并登记版本
  • 故障恢复:主机异常重启后确认规则仍然生效
  • 配置管理:把规则文件纳入版本控制,变更可追溯
  • nft 后端系统:明确用 iptables 还是 nft 一套口径,避免互相覆盖

RHEL 系与 Debian 系

RHEL 系与 Debian 系
# RHEL/CentOS:
yum install -y iptables-services
service iptables save                # 保存到 /etc/sysconfig/iptables
systemctl enable iptables            # 开机自动加载

# Debian/Ubuntu:
apt install -y iptables-persistent
netfilter-persistent save            # 保存到 /etc/iptables/rules.v4
systemctl enable netfilter-persistent   # 开机自动加载

iptables-save > /root/rules-backup-$(date +%F).v4   # 额外留一份人工备份
# 重启后核对:iptables -S | head -20 应与批准版本一致

平台对照读法

项目RHEL/CentOS 系Debian/Ubuntu 系
持久化包iptables-servicesiptables-persistent
保存命令service iptables savenetfilter-persistent save
规则文件/etc/sysconfig/iptables/etc/iptables/rules.v4
开机服务iptables.servicenetfilter-persistent.service
核对命令systemctl is-enabled iptablessystemctl is-enabled netfilter-persistent
手工 iptables-save 到文件不会自动加载:必须有服务或脚本在启动时 restore,否则重启后规则归零,防护直接消失。

落地要点

  • 保存前先用 iptables-apply 或临时会话验证,别把自锁规则写进开机加载
  • 把规则文件纳入配置管理,变更记录里保留版本与时间
  • 重启验证是唯一可靠的验收方式:iptables -S 与批准版本逐条比对
  • 确认持久化服务处于 enabled 状态,而不只是本次运行生效
  • 容器内改动不会写进宿主规则,两处规则要分别管理
较新发行版内核默认使用 nft 后端:此时 iptables 命令经兼容层翻译,混用 iptables 与原生 nft 命令会互相覆盖,团队要统一口径。

易错点

  • 只 iptables-save 到文件不做开机加载:重启后规则全丢,且现场不容易立刻发现
  • 保存了错误规则:把自锁规则固化进开机流程,重启即失联,需要带外方式恢复
  • 在 nft 后端系统上混用两套命令:规则相互覆盖,排查时看到的与预期不符
  • 验收只看服务状态不看规则内容:服务在跑但加载的是旧规则,等于没生效

数据来源与参考

  • Debian 文档:iptables-persistent / netfilter-persistent
  • RHEL 文档:iptables-services

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌