HCRM博客

CentOS 7下iptables规则保存与备份方法

CentOS 7 防火墙规则持久化:告别重启丢失的烦恼

作为网站服务器管理员,配置好精准的防火墙规则是保障安全的第一道防线,在 CentOS 7 环境下,我们通常依赖 iptables 来实现这一目标,许多管理员都曾遭遇过这样的窘境:精心设置的规则在服务器重启后消失得无影无踪,这种规则丢失的情况不仅带来重复工作的困扰,更可能留下短暂的安全隐患,理解并解决 CentOS 7 下 iptables 规则持久化问题,是每位运维人员的必备技能。

为何规则会“不翼而飞”?

CentOS 7下iptables规则保存与备份方法-图1

关键在于 iptables 服务本身的特性:它默认在运行时将规则保存在内核的内存中,当系统关闭或重启时,这些内存中的规则自然会被清除,要想让规则永久生效,我们需要将其保存到特定的磁盘文件中,并在系统启动时自动重新加载这些规则,这是实现防火墙规则持久化的核心原理。

实现持久化的两种可靠途径

CentOS 7 提供了两种主流方法来解决规则保存问题,选择哪一种取决于你的系统环境和个人偏好:

  1. 利用 iptables-service 包(经典方法) 这是 CentOS 7 之前版本(如 CentOS 6)的传统方式,在 7 上依然有效且稳定。

    • 安装服务包:

      yum install iptables-services -y

      此命令会安装必要的服务脚本和配置文件。

      CentOS 7下iptables规则保存与备份方法-图2
    • 停止并禁用 firewalld(关键步骤): CentOS 7 默认使用 firewalld,它会与 iptables 服务冲突,必须禁用:

      systemctl stop firewalld
      systemctl disable firewalld
    • 启动并启用 iptables 服务:

      systemctl start iptables
      systemctl enable iptables
      systemctl start ip6tables   # 如需 IPv6 规则
      systemctl enable ip6tables  # 如需 IPv6 规则
    • 保存当前规则: 这是将内存中的规则写入配置文件的核心命令:

      service iptables save

      /usr/libexec/iptables/iptables.init save

      规则会被保存到 /etc/sysconfig/iptables(IPv4)和 /etc/sysconfig/ip6tables(IPv6)。

    • 验证与重启:

      CentOS 7下iptables规则保存与备份方法-图3
      cat /etc/sysconfig/iptables  # 检查规则是否保存成功
      reboot  # 重启服务器后检查规则是否自动加载
      iptables -L -n  # 查看当前生效的规则
  2. 使用 iptables-persistent / netfilter-persistent(更现代的替代) 此方法在 Debian/Ubuntu 上常见,在 CentOS 7 上也可通过 EPEL 仓库安装,逻辑更清晰。

    • 启用 EPEL 仓库:

      yum install epel-release -y
    • 安装软件包:

      yum install iptables-persistent -y

      安装后,服务名通常为 netfilter-persistent

    • 停止并禁用 firewalld (同样必要):

      systemctl stop firewalld
      systemctl disable firewalld
    • 保存当前规则: 安装完成后首次保存:

      service netfilter-persistent save

      或使用提供的工具:

      /usr/libexec/iptables/iptables.init save

      规则默认保存在 /etc/sysconfig/iptables/etc/sysconfig/ip6tables

    • 启用服务:

      systemctl enable netfilter-persistent
      systemctl start netfilter-persistent
    • 后续保存规则: 规则变更后,再次运行保存命令:

      service netfilter-persistent save

      /usr/libexec/iptables/iptables.init save
    • 验证与重启: 同样重启服务器并用 iptables -L -n 验证。

重要注意事项与经验分享

  • firewalld 冲突是根源: 规则无法保存或重启后失效,十有八九是忘记停用 firewalld,这两个服务水火不容,务必先禁用 firewalld
  • 保存命令的执行时机: 完成规则调整后,必须手动执行 service iptables saveservice netfilter-persistent save,修改规则本身并不会自动触发保存操作。
  • 配置文件位置: 无论哪种方法,最终规则都写入 /etc/sysconfig/iptables,熟悉其格式有助于手动编辑或排查问题。
  • 备份是好习惯: 在修改重要防火墙规则前,手动备份 /etc/sysconfig/iptables 文件是明智之举:cp /etc/sysconfig/iptables /etc/sysconfig/iptables.bak
  • 规则加载顺序: 服务启动时,会读取配置文件并在网络接口初始化后应用规则,了解这一点有助于理解某些依赖网络接口的规则为何需要特殊处理。
  • 检查服务状态: 使用 systemctl status iptablessystemctl status netfilter-persistent 查看服务运行日志,有助于诊断启动失败问题。
  • ip6tables 同样重要: 如果服务器启用了 IPv6,别忘了对 ip6tables 进行相同的保存和启用操作。

在多年的服务器管理工作中,我深刻体会到防火墙规则持久化的重要性,一次未保存的规则变更,足以让重启后的服务器门户洞开,选择 iptables-service 还是 iptables-persistent 更多是习惯问题,核心在于理解服务冲突原理并养成“修改即保存”的操作习惯,将 /etc/sysconfig/iptables 纳入日常备份和配置管理流程,是保障服务器长期安全运行的基石,清晰的防火墙策略配合可靠的持久化机制,才能让安全防护真正固若金汤。

本站部分图片及内容来源网络,版权归原作者所有,转载目的为传递知识,不代表本站立场。若侵权或违规联系Email:zjx77377423@163.com 核实后第一时间删除。 转载请注明出处:https://blog.huochengrm.cn/pc/38283.html

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
请登录后评论...
游客游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~