分层排查是什么
分层排查把网络故障按 OSI / TCP-IP 的层次切开,一层一层确认,直到找到第一个出问题的层。它解决的核心问题是「结论不能跳步」:物理口没起来,讨论应用超时毫无意义;TCP 握手都完不成,也轮不到怀疑业务代码。所以分层不是背诵模型,而是一套固定的问话顺序——每层只回答一个可以用命令验证的问题,得出「这层通」或「这层断」之后,再决定往哪边走。
基本信息
| 适用场景 | 一切「不通 / 慢 / 时通时断」类故障的首次定位 |
|---|---|
| 排查顺序 | 物理 → 链路 → 网络 → 传输 → 应用 |
| 验证原则 | 先本机后远端、先内网后外网、一次只改一个变量 |
| 记录要求 | 每层写下一句话结论,并保留原始命令输出 |
| 模型选择 | OSI 七层用于描述职责,实际排查按 TCP/IP 四五层操作更顺手 |
五层各回答什么
| 层次 | 要确认的事 | 代表命令 | 该层典型故障 |
|---|---|---|---|
| 物理 | 接口是否 Up,光模块收发光与 CRC 计数是否正常 | ip -br link、ethtool、ip -s link | 网线松动、光衰过大、接口被 shutdown、网卡故障 |
| 链路 | 速率双工是否匹配、ARP 能否解析、VLAN 是否放通 | ip neigh、arping -I、arp -a | ARP 表异常、VLAN 未放通、二层环路、MAC 漂移 |
| 网络 | IP/掩码/网关/路由/MTU 是否正确且可达 | ip a、ip route get、ping、traceroute | 掩码写错、网关不可达、路由缺失、MTU 黑洞、ACL 丢弃 |
| 传输 | 目标端口是否开放、三次握手能否完成、是否被 RST | ss -tuln、nc -zv、tcpdump port | 服务未启动、监听错地址、防火墙拦 SYN、连接数耗尽 |
| 应用 | 协议交互与业务处理是否正常 | curl -v、dig、openssl s_client、应用日志 | 证书过期、鉴权失败、后端 500、响应超时 |
典型使用场景
- 新设备或新线路首次上线不通,现场情况未知,需要一条不漏地走一遍
- 突然完全不通且没有任何报错可收敛,只能从头逐层验证
- 用户描述含糊(只说「打不开」),需要把「哪一层断」变成可复核的结论
- 跨多台设备与多段链路,需要确定责任边界落在哪一跳
- 故障复盘与验收留证,需要逐层证据而不是一句「已恢复」
一条龙快速体检
一条龙快速体检
ip -br a && ip route # 物理/网络:接口状态与默认网关
ping -c2 127.0.0.1 && ping -c2 <网关IP> # 先证本机协议栈,再证到网关的可达性
cat /etc/resolv.conf # 确认 DNS 指向是否符合预期
dig +short <域名> # 解析层:拿到 IP 才算这一步过
nc -zv -w3 <目标IP> <端口> # 传输层:TCP 能否完成握手
curl -sI --connect-timeout 3 http://<目标> # 应用层:先看状态码,再看业务
ethtool <网卡> | head -20 # 补链路:Speed / Duplex / Link detected
ip -s link show <网卡> # 补物理:errors / dropped 是否在增长每层要给整数结论:「通」要写清证到了什么。ping 通只证明 IP 层双向可达,不代表端口开放或业务正常;端口通也不代表应用会返回 200。结论里同时写「没证到什么」,才能避免下一个人重复验证。
分层记录的写法
| 层次 | 结论示例 | 支撑证据 |
|---|---|---|
| 物理 | 接口 Up,光功率在范围内,CRC 无增长 | ethtool 与 ip -s link 输出 |
| 链路 | 网关 ARP 可解析,VLAN 与对端一致 | ip neigh / arping 输出 |
| 网络 | 到目标 IP 可 ping 通,路径 3 跳 | ping 与 traceroute 输出 |
| 传输 | 443 端口三次握手成功 | nc -zv 显示 succeeded |
| 应用 | HTTP 502,后端无对应日志 | curl -v 响应头与后端日志时间点 |
同一故障上多人同时动手是排障大忌:改动叠加后无法判断哪一次生效,临时绕行也容易被当成根因。现场只留一个操作者,其余人负责取证、记录与外部沟通。