在 CentOS 上使用 iptables 时,“测连通”一般分两种情况:
先确认不是网络问题:
ping 8.8.8.8
ping www.baidu.com
如果 ping 不通,先排查路由、DNS、网卡。
iptables -L -n -v
或只看某个表(如 filter):
iptables -t filter -L -n -v
常见关注点:
INPUT:外部访问本机OUTPUT:本机访问外部FORWARD:转发(如 NAT)假设测试 80 端口:
telnet 127.0.0.1 80
# 或
nc -vz 127.0.0.1 80
telnet 目标IP 80
nc -vz 目标IP 80
如果连不上,可能是 iptables 拦截。
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
测试完可删除:
iptables -D INPUT -p tcp --dport 80 -j ACCEPT
iptables -L INPUT -v -n
看 pkts 是否增长,如果某条 DROP 规则在涨,说明被拦。
iptables -I INPUT -p tcp --dport 80 -j LOG --log-prefix "IPT_TEST: "
然后:
tail -f /var/log/messages
(CentOS 7 可能是 /var/log/syslog 或 journalctl -k)
CentOS 7 默认用 firewalld,iptables 可能不生效:
systemctl status firewalld
如果开着:
systemctl stop firewalld
systemctl disable firewalld
再用 iptables 测试。
✅ 网络通不通 → ping
✅ 端口通不通 → telnet / nc
✅ 是否被 iptables 拦 → iptables -L -v
✅ 临时测试 → 加 ACCEPT 规则
如果你有 具体场景(如:SSH 连不上 / 网站打不开 / Docker / NAT),可以直接说,我给你精准命令。