首页/系统/信创系统运维速查/iptables 规则持久化
安全加固65 条

iptables 规则持久化

iptables 规则默认为内存态、重启即丢;RHEL 系用 iptables-services 保存到 /etc/sysconfig/iptables,也可靠 iptables-save/restore 手工落盘。

信创系统运维速查系统更新于 2026-10-13

iptables 规则怎么持久化

iptables 的规则默认只存在内核内存里,重启就全部丢失,这也是「明明配好了防火墙,重启后又全通」的原因。持久化有两条路:RHEL 系安装 iptables-services 并用 service iptables save 把规则写进 /etc/sysconfig/iptables,由服务开机恢复;或者用 iptables-save 手工导出、iptables-restore 在启动时载入。启用 iptables-services 后应停用 firewalld,避免两套工具同时操作内核过滤表。

基本信息

适用平台RHEL 系:银河麒麟、openEuler、CentOS 7、UOS 服务器版
服务包iptables-services
保存位置/etc/sysconfig/iptables(服务方案)
手工方案iptables-save > 文件,开机 iptables-restore < 文件
注意与 firewalld 二选一,不要同时启用

典型使用场景

  • 生产服务器防火墙落地:配好规则后固化,重启仍然生效
  • 等保整改:要求防火墙策略持久可用,不能重启即失效
  • 离线交付:现场配完规则写入文件,随镜像模板分发
  • 应急回滚:把当前可用规则导出留档,出错时一条命令恢复
  • 批量统一下发:规则文件统一维护,各机器用 restore 载入

方案一:iptables-services(RHEL 系)

方案一:iptables-services(RHEL 系)
iptables -L -n --line-numbers | head            # 先确认当前规则
dnf install -y iptables-services                # 安装服务包
systemctl start iptables                        # 先启动服务再保存
service iptables save                           # 保存到 /etc/sysconfig/iptables
cat /etc/sysconfig/iptables | head              # 确认规则已写入
systemctl enable iptables                       # 设开机自启
systemctl disable --now firewalld 2>/dev/null   # 停用 firewalld,避免冲突

方案二:手工导出与载入

方案二:手工导出与载入
iptables-save > /etc/iptables.rules             # 导出当前规则
chmod 600 /etc/iptables.rules                   # 规则可能含网络拓扑,收紧权限
# 自建 /etc/systemd/system/iptables-restore.service:
# [Service]
# Type=oneshot
# ExecStart=/sbin/iptables-restore /etc/iptables.rules
# [Install]
# WantedBy=multi-user.target
systemctl daemon-reload && systemctl enable --now iptables-restore
# 验证持久化
reboot
systemctl is-active iptables; iptables -L -n | head

方案对比

对比项iptables-services手工 save/restore
适用平台RHEL 系为主全部 Linux
保存路径/etc/sysconfig/iptables自定义,如 /etc/iptables.rules
开机恢复由服务自动完成需自建 unit 或 rc.local 调用
维护便利service iptables save 一条命令每次改动要重新导出
与 firewalld需停用 firewalld同样需二选一
适合场景标准 RHEL 系服务器非 RHEL 系或需要自定义流程
启用 iptables-services 后建议停用 firewalld,避免两套规则同时操作内核过滤表导致行为不可预期。
导出留档时注意规则文件可能包含内网地址与开放端口规划,权限收紧到 600 并纳入变更管理。

易错点

  • 先 save 后 start:服务未启动时保存会得到空规则文件,重启后等于没有防火墙。
  • 只 enable 不 start,或只 start 不 enable,重启后规则仍在内存而自启没生效,验证必须重启实测。
  • iptables 与 firewalld 同时启用互相覆盖,规则神秘消失,排查先确认只有一个管理入口。
  • 保存完不复核 iptables -L -n 与文件内容是否一致,出现截断或遗漏也不知情。
  • 手工方案没写自启单元,重启后需要人工 restore,维护窗口之外的重启直接失去防护。

数据来源与参考

  • RHEL 文档(iptables-services 说明)
  • man 8 iptables-save
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌