linux网络排障需分层递进:一查物理与链路层(ip link/ip addr/ping 网关),二验网络层与 路由 (ip route get/traceroute),三测传输层与 端口(ss/telnet),四抓包与 conntrack 分析。

Linux 网络状态检测,核心是分层排查:先看物理连通性,再查协议 栈配置,最后定位应用层问题。 不需要死记命令,关键是理解每一步在验证什么、失败意味着什么。下面按实际排障顺序展开,从最基础的 ping 到进阶的连接跟踪与流量分析。
一、确认物理与链路层是否正常(能不能“通”)
这是所有 网络问题 的第一关。跳过这步直接查 防火墙 或dns,90% 会绕远路。
- 用
ip link看网卡是否 UP、是否有 carrier(物理信号):ip link show eth0→ 若显示state DOWN或NO-CARRIER,说明网线没插、交换机断电、网卡故障或驱动未加载。 - 用
ip addr看 IP 是否正确分配 :检查是否有有效 IPv4 地址(非 169.254.x.x 或 0.0.0.0), 子网 掩码是否匹配网段,是否误配了多个主 IP 导致 路由 混乱。 - 用
ping -c 3 127.0.0.1验证本地协议 栈:失败说明内核网络模块异常(极少见,多见于容器或严重内核错误)。 - 用
ping -c 3测试二层可达性 :成功 = 物理 + 数据链路 +ARP 正常;失败则重点查网线、交换机 端口 、VLAN、mac 地址表、ARP 缓存(ip neigh)。
二、验证网络层与路由是否正确(走不走得通)
能 ping 通网关,不代表能出外网——中间可能卡在路由、NAT 或策略路由上。
- 用
ip route get查真实选路路径:比如ip route get 8.8.8.8会返回它将通过哪个网关、哪张网卡发出,还能看到源 IP 选择。若提示Network is unreachable,说明无可用路由。 - 用
traceroute -n(或mtr)看路径中断点:第一跳不通 → 本机路由或网关问题;中间某跳超时 → 中间设备丢包或禁 ICMP;最后一跳通但应用不通 → 目标端口 / 服务问题。 - 检查策略路由、多宿主配置(
ip rule,ip route show table all):多网卡服务器 常见问题:明明配了双 IP,但回包走错网卡被丢弃(不对称路由)。需确认rp_filter设置(sysctl net.ipv4.conf.all.rp_filter)是否过严。
三、检查传输层与服务可达性(端口开不开、连不连得上)
ping 通 ≠ 端口通。http服务可能挂了,但 ICMP 照常响应。
- 用
ss -tuln或netstat -tuln查本机监听状态 :确认服务进程确实在监听目标端口(如 :22、:80),且0.0.0.0或具体 IP 绑定正确(:::表示ipv6 监听,*:表示所有 IPv4接口)。 - 用
telnet <ip><port></port></ip>或nc -zv <ip><port></port></ip>测试 TCP 连通性 :连接成功 = 三层可达 + 目标端口开放 + 中间无拦截;拒绝(Connection refused)= 服务未运行或监听地址不对;超时(Timeout)= 被 防火墙/DROP 规则拦截,或路由不对。 - 用
ss -tn state established或ss -tn src :<port></port>看活跃连接 :排查连接 堆积、TIME_Wai T 泛滥、SYN_RECV 半开连接过多等性能问题。
四、进阶:抓包分析与连接跟踪(到底发生了什么)
当现象模糊(如偶发超时、重传高、TLS 握手失败),必须下沉到数据包层面。
- 用
tcpdump -i eth0 host -w debug.pcap抓原始流量 :在客户端和服务端同时抓包,对比 SYN/SYN-ACK/ACK 是否完整、RST 是否突兀出现、重传间隔是否异常、TTL 是否过小。wireshark 打开分析更直观。 - 用
conntrack -L | grep <ip></ip>查连接跟踪状态(尤其 NAT 环境):NAT 网关或启用了 conntrack 的防火墙中,连接状态异常(如 INVALID、UNREPLIED)会导致报文被丢弃。常见于短连接高频建连后 conntrack 表满(conntrack -S查统计)。 - 用
cat /proc/net/nf_conntrack(或conntrack -L)看具体连接条目:关注 timeout 值是否合理(如 udp_stream 默认 30 秒,太短易断流),以及是否因哈希冲突导致新建连接失败。
基本上就这些。熟练掌握前两步(link + route)能解决 80% 的连不上问题;第三步(端口 + 连接)覆盖绝大多数服务访问故障;第四步(抓包 +conntrack)用于疑难杂症定界。不需要全背命令,记住“先通后通,先通再服,先服再细”,层层递进,效率最高。