在 CentOS 上使用 iptables 排查网络/防火墙故障,通常可以按下面思路一步步来。
CentOS 6 及以前默认用 iptables
CentOS 7/8 默认用 firewalld(底层还是 iptables/nftables)
检查是否启用 iptables 服务:
systemctl status iptables
如果看到 firewalld 在运行,而你又在改 iptables,很可能不生效:
systemctl status firewalld
常见坑:
iptables -L -n -v
或看 NAT:
iptables -t nat -L -n -v
重点看:
INPUT / OUTPUT / FORWARD 链默认策略(DROP 还是 ACCEPT)iptables -L -n -v
看 pkts 和 bytes 是否有增长:
临时加日志规则(很常用):
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 规则问题
常见现象:
查看是否有:
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.1CentOS 6:
service iptables save
CentOS 7(iptables-services):
iptables-save > /etc/sysconfig/iptables
| 现象 | 可能原因 |
|---|---|
| 完全不通 | INPUT 默认 DROP |
| 部分端口不通 | 没放行对应端口 |
| 本地能通外网不通 | FORWARD / NAT 问题 |
| 规则改了不生效 | firewalld 在运行 |
| 重启失效 | 没保存规则 |
如果你愿意,可以贴:
iptables -L -n -v 输出我可以帮你精确分析是哪条规则的问题。