排查顺序与原则
网络不通要按从近到远逐层排除:本机网卡与地址、到网关的连通、绕过 DNS 的公网地址连通、域名解析、目标端口、目标侧服务与防火墙。每一步用一个命令去证伪,能把范围迅速缩小一半。要点是不要一上来就重启网络服务——盲目重启可能把可恢复的问题变成配置丢失,还会破坏现场证据。ICMP 被禁用或限速的环境里 ping 会失败,这时以端口探测与抓包结论为准。
基本信息
| 适用平台 | Linux 排查通路,思路同样适用于其它系统 |
|---|---|
| 场景 | 目标不可达、连接超时、时通时不通 |
| 命令组合 | ip -br addr、ip route get、ping、dig、nc、ss、tcpdump、curl -v |
| 纪律要求 | 动手前先记录现状(地址、路由、监听),保留可对比基线 |
| 注意事项 | ICMP 被禁时 ping 失败不能作为网络不通的结论 |
典型使用场景
- 业务方反馈网站打不开,先判断是网络层还是服务层问题
- 新装机器无法访问外网,定位是路由、DNS 还是防火墙
- 部分网段不通,核对静态路由与策略路由是否缺失
- 端口偶发连接失败,用抓包区分丢包、重置与被拒
- VPN 接入后部分目标不可达,检查路由表与分流规则
四步排查
四步排查
ip -br addr; ip -br link # 1. 本机地址与接口状态
ip route get 8.8.8.8 # 选路与出口网卡
ping -c2 $(ip route | awk '/^default/{print $3; exit}') # 网关连通
ping -c2 8.8.8.8 # 2. 绕过 DNS 验证公网连通
dig +short app.example.com # 3. 域名解析
timeout 3 nc -zv app.example.com 443 # 端口探测
ss -tlnp | grep :443 # 在目标机上确认服务在监听
tcpdump -nn -i any 'tcp port 443' -c 10 # 4. 看 SYN 是否到达与是否回包分层验证对照
| 层级 | 验证手段 | 典型结论 |
|---|---|---|
| 链路与接口 | ip -br link | 接口 DOWN 或缺少 UP 标志说明链路层未就绪 |
| IP 地址 | ip -br addr | 没有地址、地址冲突或掩码错误 |
| 路由 | ip route get 目标 | 无路由、命中错误网卡或源地址不对 |
| 网关 | ping 网关地址 | 网关不可达,但要注意 ICMP 可能被禁 |
| DNS | dig +short 域名 | 解析失败或解析到错误地址 |
| 端口 | nc -zv 目标 端口 | 连接被拒说明服务没监听,超时说明包被丢弃 |
| 应用 | curl -v 与目标侧日志 | 端口通但应用返回错误或响应超时 |
记录现状是排查纪律:动手前保存 ip -br addr、ip route、ss -tlnp 的输出,回滚或对比时才有基线,也能在交接时还原现场。
VPN 客户端与代理软件会修改路由表。怀疑选路异常时对比 ip rule 与 ip route show table all,否则只看主表会得出「路由正确」的错误结论。