按“ping→traceroute→端口→DNS→接口/路由/防火墙”五步排查,90%网络问题5分钟内可定位:先分层ping验证连通性,再用mtr/traceroute查路径中断点,接着用ss/nc测端口服务,然后绕过DNS直连测试解析,最后检查网卡状态、路由表和防火墙规则。

Linux网络不通,别急着重装系统或重启服务器。按“ping → traceroute → 端口 → DNS → 接口/路由/防火墙”这个顺序排查,90%的问题能在5分钟内定位清楚。
一、先确认基础连通性(用ping分三步走)
不是随便ping一个网址就完事,要分层验证:
-
本地回环:运行
ping 127.0.0.1—— 不通说明TCP/IP协议栈异常,可能是内核模块损坏或netfilter配置错 -
网关可达性:执行
ping $(ip route | grep default | awk '{print $3}')—— 若丢包或超时,问题出在本机到局域网出口之间,检查网线、交换机端口、网卡UP状态(ip link show)、ARP缓存(arp -a) -
外网与DNS分离验证:分别执行
ping 8.8.8.8和ping baidu.com—— 前者通后者不通,基本锁定DNS问题;两者都不通,说明路由或上游网络异常
二、追踪路径中断点(traceroute/mtr看哪一跳断)
当ping网关或外网失败时,用路径分析快速定位故障节点:
- 优先用
mtr -r -c 10 google.com(比traceroute更稳定,自带统计);若无mtr,用traceroute -n google.com(加-n跳过DNS解析,提速) - 重点观察:连续出现 * * * 的那一跳——可能是中间设备禁ICMP、策略限速,也可能是该节点宕机
- 某跳延迟突然飙升(如从10ms跳到300ms),说明该节点拥塞或链路质量差;若后续跳数全不可达,大概率是这一跳之后的网络设备或策略拦截了流量
三、验证服务是否真在听(端口级连通性测试)
能ping通≠服务可用。常见误区是“IP通了就以为SSH/HTTP能连”,其实端口可能被拦、服务未启、或监听绑定错了地址:
- 查本机端口监听:
ss -tuln | grep :22(看SSH)、ss -tuln | grep :80(看Web) - 远程测端口:
nc -zv 192.168.1.100 22或telnet 192.168.1.100 80—— 显示“Connected”才表示端口通且服务响应 - 注意:如果返回
Connection refused,说明端口开着但没服务监听;如果卡住或timeout,才是防火墙/安全组/路由拦截
四、绕过DNS干扰(手动指定DNS+查解析链路)
DNS问题常被误判为“网络不通”。比如能ping通8.8.8.8但打不开网页,极大概率是DNS层面故障:
- 确认DNS配置:
cat /etc/resolv.conf,确保有可用nameserver(如nameserver 114.114.114.114) - 跳过系统配置直连DNS服务器:
dig @8.8.8.8 baidu.com +short或nslookup github.com 223.5.5.5 - 查完整解析路径:
dig +trace baidu.com—— 从根域名服务器开始逐级下推,看到哪一级返回空或NXDOMAIN,就能精准定位污染、劫持或配置错误点
五、兜底检查:接口、路由、防火墙
以上都正常?那问题往往藏在底层配置里:
-
网卡状态:运行
ip addr show,确认目标网卡是UP且有正确IP;若显示state DOWN,用ip link set eth0 up启用 -
路由表:执行
ip route show,检查default via是否存在、下一跳IP是否可达、是否有冲突的静态路由覆盖了默认路径 -
防火墙规则:CentOS/RHEL系常用
systemctl stop firewalld临时关闭;iptables用户运行iptables -L -n -v查看INPUT链是否DROP了ICMP或目标端口










