温馨提示×

centos iptables为何重启丢失

小樊
35
2026-09-17 21:06:06
栏目: 智能运维

CentOS 中,iptables 规则“重启后丢失”是正常现象,根本原因是:

iptables 规则是内存中的,不是自动持久化的

下面分情况详细说明。


一、为什么重启会丢失?

1️⃣ iptables 本身不保存规则

  • iptables 规则默认只存在于 内核内存
  • 系统重启 → 内核重新加载 → 规则清空

你执行的:

iptables -A INPUT -p tcp --dport 22 -j ACCEPT

只是临时生效。


2️⃣ CentOS 版本不同,保存方式不同

✅ CentOS 6

使用 iptables 服务 + 规则文件:

/etc/sysconfig/iptables

✅ CentOS 7 / 8

默认使用 firewalld

  • iptables 仍可用,但不是默认管理方式
  • 如果你手动用 iptables 命令,重启后不会保留

二、CentOS 6 正确保存方式(经典)

service iptables save
# 或
/etc/init.d/iptables save

保存位置:

/etc/sysconfig/iptables

开机自动恢复(需启用服务):

chkconfig iptables on

三、CentOS 7 / 8 正确保存方式

方法 1:使用 iptables-services(推荐)

1️⃣ 安装

yum install iptables-services

2️⃣ 禁用 firewalld

systemctl stop firewalld
systemctl disable firewalld

3️⃣ 启用 iptables

systemctl enable iptables
systemctl start iptables

4️⃣ 保存规则

service iptables save
# 或
iptables-save > /etc/sysconfig/iptables

✅ 重启后规则自动恢复


方法 2:手动保存 + 开机恢复(不推荐但可用)

iptables-save > /etc/iptables.rules

开机恢复:

iptables-restore < /etc/iptables.rules

可写入:

  • /etc/rc.local
  • systemd 自定义服务

四、为什么很多人误以为“iptables 丢了”

常见原因:

原因 说明
用了 firewalld firewalld 会重写 iptables
没执行 save 只加了规则没保存
容器环境 Docker 会改 iptables
云安全组 云厂商规则覆盖

五、建议

CentOS 7+ 推荐

  • 要么用 firewalld
  • 要么用 iptables-services

❌ 不建议:

  • 直接敲 iptables 不保存
  • firewalld 和 iptables 混用

如果你愿意,可以告诉我:

  • CentOS 版本
  • 是否使用 firewalld
  • 是否是服务器 / 云主机

我可以给你一套最合适你的持久化方案

0