Linux网络故障排查需分层验证:先查网卡UP及IP、再逐级ping(127.0.0.1→本机IP→网关→8.8.8.8)、确认路由和DNS、最后验证端口与服务,避免跳步误判。

Linux网络状态检测不是靠猜,而是分层验证:从物理接口、IP连通、路由路径、服务端口到DNS解析,一层没通就卡在哪一层。关键是要按顺序排查,避免在DNS上折腾半天,结果发现网卡根本没UP。
看网卡有没有“醒”
先确认硬件和驱动是否就位:
- 运行 ip addr show,找你的主网卡(如 eth0、ens33),看状态是不是 UP,有没有分配到合法IP(避开 169.254.x.x 这类链路本地地址)
- 如果显示 DOWN,用 sudo ip link set eth0 up 尝试启用
- 顺手检查 RX/TX 错误计数:RX-ERR、TX-ERR、RX-DRP 都应为 0;非零且持续增长,说明网卡、线缆或交换机端口可能有物理问题
测连通性要分四步走
别一上来就 ping 百度,按这个顺序能快速定位断点:
- ping 127.0.0.1 —— 协议栈是否正常
- ping 本机局域网IP(如 192.168.1.100)—— 网卡收发是否正常
- ping 网关IP(如 192.168.1.1)—— 能否出内网
- ping 8.8.8.8 —— 外网IP可达性(绕过DNS)
- 如果前三步都通,但最后一步不通,再加测 ping www.baidu.com:通则说明DNS也OK;不通则大概率是DNS或防火墙拦截
查路由和DNS不能跳过
很多故障表面是“上不了网”,实际是路径或解析错了:
- 用 ip route show 确认有默认路由,例如 default via 192.168.1.1 dev eth0;没有就手动加:sudo ip route add default via 192.168.1.1
- DNS问题典型表现:能 ping 通 IP,但打不开网页、curl 报 name lookup failed。查 cat /etc/resolv.conf 是否有有效 nameserver(如 8.8.8.8 或 114.114.114.114)
- 实测解析:用 dig www.google.com +short 或 nslookup github.com,看能否返回A记录
端口和服务得单独验
连通≠服务可用。尤其对服务器运维,必须确认目标端口真实可访问:
- TCP端口:用 nc -zv 192.168.1.10 22 或 telnet 192.168.1.10 80,有 succeeded 或 Connected 才算通
- UDP端口(如DNS 53):nc -zuv 8.8.8.8 53,注意无响应不等于关闭,需配合 dig 测试实际功能
- 查本机监听:ss -tlnp | grep :8080 看端口是否被进程绑定,是否有权限限制(比如只监听 127.0.0.1)
基本上就这些。不复杂但容易忽略——比如忘了关防火墙、把网关IP写错一位、/etc/resolv.conf 被覆盖成空文件。养成从底层往上摸的习惯,比反复重启网络服务更省时间。










