温馨提示×

CentOS为何iptables不生效

小樊
32
2026-07-19 06:55:12
栏目: 智能运维

CentOS 上 iptables 规则不生效,通常不是“iptables 坏了”,而是 系统默认防火墙机制或配置方式发生了变化。下面按 最常见原因 → 排查方法 → 解决方案 给你系统讲一遍。


一、最常见原因(重点看)

✅ 1. CentOS 7+ 默认使用 firewalld,而不是 iptables

这是 80% 的原因

CentOS 7 / 8 / Stream:

  • 默认防火墙:firewalld
  • iptables 规则 会被 firewalld 覆盖或清空

检查

systemctl status firewalld

如果 firewalld 正在运行:

systemctl stop firewalld
systemctl disable firewalld

然后重新加载 iptables:

systemctl restart iptables

✅ 2. 你用的是 CentOS 8 / Stream,iptables 已被 nftables 替代

CentOS 8 开始:

  • iptables 实际是 iptables-nft(兼容层)
  • 真正生效的是 nftables

检查

iptables -V

如果看到:

iptables v1.8.x (nf_tables)

说明用的是 nftables 后端

建议方案

  • 要么用 nftables
  • 要么用 firewalld
  • 不建议继续用传统 iptables

✅ 3. iptables 服务没有启动(CentOS 6/7)

systemctl status iptables

如果没启动:

systemctl start iptables
systemctl enable iptables

✅ 4. 规则未保存(重启后消失)

iptables 规则 默认不持久化

保存规则

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

CentOS 7 以后:

iptables-save > /etc/sysconfig/iptables

✅ 5. 规则添加顺序错误(被前面的规则拦截)

iptables 是 顺序匹配

常见错误

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

但前面已有:

iptables -A INPUT -j DROP

✅ 正确做法:

iptables -I INPUT 1 -p tcp --dport 80 -j ACCEPT

✅ 6. 看错表(filter / nat / mangle)

端口转发不生效,多半是:

iptables -t nat -A PREROUTING ...

查看 nat 表:

iptables -t nat -L -n -v

✅ 7. Docker / K8s 覆盖了 iptables 规则

Docker 会 自动修改 iptables

排查:

iptables -L -n -v

如果你看到大量 DOCKER 链,说明被 Docker 管理

✅ 解决:

  • 把规则加入 Docker 管理之外
  • 或配置 Docker 的 iptables 参数

二、快速排查清单(照着做)

# 1. 是否启用 firewalld
systemctl status firewalld

# 2. iptables 是否运行
systemctl status iptables

# 3. 查看当前规则
iptables -L -n -v

# 4. 查看 nat 表
iptables -t nat -L -n -v

# 5. 查看 iptables 后端
iptables -V

三、推荐方案(非常重要)

✅ CentOS 7 → 推荐

firewalld

✅ CentOS 8 / Stream → 推荐

nftables

❌ 不推荐

  • 在 CentOS 8 上强行用传统 iptables
  • firewalld + iptables 混用

四、如果你愿意,我可以直接帮你定位

你可以直接把下面信息发我:

  1. CentOS 版本
    cat /etc/centos-release
    
  2. iptables 版本
    iptables -V
    
  3. 你的 iptables 规则
    iptables -L -n -v
    
  4. 想实现什么效果(端口放行?转发?限流?)

我可以 直接给你正确可用的配置方案

0