温馨提示×

centosiptables为何重启丢失

小樊
37
2026-08-29 10:05:31
栏目: 智能运维

iptables 规则在 CentOS 重启后丢失,是因为 iptables 本身不会自动保存规则,规则只存在于 内存(内核) 中,重启后自然清空。

下面分情况说明原因和解决办法。


一、为什么会丢失?

1️⃣ iptables 规则是临时的

  • iptables 规则由 内核 netfilter 维护
  • 执行 iptables -A / -I 等命令
    ✅ 立即生效
    ❌ 不会写入磁盘
  • 重启后内核重新加载,规则消失

二、CentOS 不同版本的正确做法


✅ CentOS 6(传统方式)

1️⃣ 保存规则

service iptables save

iptables-save > /etc/sysconfig/iptables

2️⃣ 确认开机启动

chkconfig iptables on

✅ CentOS 7 / 8(注意:默认用 firewalld)

情况一:你用的是 iptables(而不是 firewalld)

1️⃣ 安装 iptables-services

yum install -y iptables-services

2️⃣ 停止并禁用 firewalld

systemctl stop firewalld
systemctl disable firewalld

3️⃣ 启用 iptables

systemctl enable iptables
systemctl start iptables

4️⃣ 保存规则

service iptables save

规则会保存到:

/etc/sysconfig/iptables

情况二:你用的是 firewalld(CentOS 7+ 默认)

不要用 iptables 命令直接改规则,否则重启一定丢。

✅ 正确做法是:

firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --reload

三、手动“暴力”保存与恢复(不推荐但可用)

保存

iptables-save > /root/iptables.rules

恢复

iptables-restore < /root/iptables.rules

可放进:

/etc/rc.d/rc.local

(不推荐,属于“土办法”)


四、如何确认规则是否真的保存成功?

查看文件:

cat /etc/sysconfig/iptables

重启前:

iptables -L -n

重启后再次对比。


五、总结一句话 ✅

iptables 规则重启丢失,是因为没有保存到磁盘

CentOS 6:

service iptables save

CentOS 7+(用 iptables):

yum install iptables-services
systemctl enable iptables
service iptables save

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

  • ✅ CentOS 版本
  • ✅ 是否使用了 firewalld
  • ✅ 当前想实现的规则

我可以给你一条“直接可用”的方案。

0