iptables 规则在 CentOS 重启后丢失,是因为 iptables 本身不会自动保存规则,规则只存在于 内存(内核) 中,重启后自然清空。
下面分情况说明原因和解决办法。
iptables 规则由 内核 netfilter 维护iptables -A / -I 等命令service iptables save
或
iptables-save > /etc/sysconfig/iptables
chkconfig iptables on
yum install -y iptables-services
systemctl stop firewalld
systemctl disable firewalld
systemctl enable iptables
systemctl start iptables
service iptables save
规则会保存到:
/etc/sysconfig/iptables
不要用 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 saveCentOS 7+(用 iptables):
yum install iptables-services systemctl enable iptables service iptables save
如果你愿意,可以告诉我:
我可以给你一条“直接可用”的方案。