温馨提示×

centos iptables怎么排查故障

小樊
46
2026-09-11 15:11:59
栏目: 智能运维

在 CentOS 上使用 iptables 排查网络/防火墙故障,通常可以按下面思路一步步来。


一、确认 iptables 是否在用

CentOS 6 及以前默认用 iptables
CentOS 7/8 默认用 firewalld(底层还是 iptables/nftables)

检查是否启用 iptables 服务:

systemctl status iptables

如果看到 firewalld 在运行,而你又在改 iptables,很可能不生效:

systemctl status firewalld

常见坑

  • CentOS 7 改了 iptables,但 firewalld 没关
  • 规则被 firewalld 覆盖

二、查看当前 iptables 规则

iptables -L -n -v

或看 NAT:

iptables -t nat -L -n -v

重点看:

  • INPUT / OUTPUT / FORWARD 链默认策略(DROP 还是 ACCEPT)
  • 是否有 REJECT / DROP 规则
  • 规则顺序(iptables 是从上往下匹配

三、确认是否丢包(看计数)

iptables -L -n -v

pktsbytes 是否有增长:

  • DROP 规则计数增长 → 被防火墙拦了
  • 没有任何匹配 → 规则没命中

临时加日志规则(很常用):

iptables -I INPUT -p tcp --dport 80 -j LOG --log-prefix "IPTABLES-DROP: "

然后看日志:

dmesg | grep IPTABLES
# 或
tail -f /var/log/messages

四、临时放通测试(排障用)

先确认是不是 iptables 的问题:

iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -F

⚠️ 仅测试环境使用,生产环境谨慎

如果这样能通 → 就是 iptables 规则问题


五、检查是否被 DROP / REJECT

常见现象:

  • 端口 telnet 不通
  • curl 超时或被拒绝

查看是否有:

REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited

六、检查端口和服务

iptables 没问题,也要确认服务本身:

netstat -tunlp | grep 80
# 或
ss -tunlp | grep 80

确认:

  • 服务在监听
  • 监听地址是 0.0.0.0 还是 127.0.0.1

七、保存 & 恢复

CentOS 6:

service iptables save

CentOS 7(iptables-services):

iptables-save > /etc/sysconfig/iptables

八、常见故障总结

现象 可能原因
完全不通 INPUT 默认 DROP
部分端口不通 没放行对应端口
本地能通外网不通 FORWARD / NAT 问题
规则改了不生效 firewalld 在运行
重启失效 没保存规则

如果你愿意,可以贴:

  • CentOS 版本
  • iptables -L -n -v 输出
  • 具体“不通”的现象(端口 / 服务 / 内外网)

我可以帮你精确分析是哪条规则的问题。

0