实战指南troubleshooting
Linux 网络分层排查
用只读命令依次检查接口、地址、路由、邻居、名称解析和服务日志,定位 Linux 网络故障层级。
保持当前网络状态不变,从低到高记录证据,最后明确是哪一层缺失或异常,而不是用“重启网络”掩盖问题。
- 可访问设备终端。远程排障时保留当前 SSH 会话,不执行接口 down、删地址或删默认路由。
- 已知预期的接口、地址获取方式(静态或 DHCP)、网关和目标主机。
- 容器或网络命名空间内的结果只代表当前命名空间。
-
记录主机和接口状态:
Terminal window hostnameip -brief link show接口应存在;管理状态
UP与底层链路状态是不同信息。 -
检查地址和前缀:
Terminal window ip -brief address show核对目标接口是否有预期 IPv4/IPv6 地址,避免把回环或自动链路本地地址当成局域网地址。
-
检查路由及内核对目标的实际选择:
Terminal window ip route showip route get 192.0.2.1ip route get只做路由查询,不发送数据包。应关注输出接口、源地址和下一跳是否符合预期。 -
检查同一链路的邻居解析:
Terminal window ip neigh show持续
FAILED可能指向链路、VLAN、网关地址或对端问题;STALE本身不是故障。 -
把名称解析与 IP 连通性分开检查:
Terminal window getent ahosts example.com如果已知 IP 可达而名称解析失败,应检查系统采用的解析服务和 DNS 配置,而不是修改路由。
-
在使用 systemd journal 的系统上查看当前启动的网络警告:
Terminal window journalctl --boot=0 --priority=warning --no-pager结合系统实际使用的 NetworkManager、systemd-networkd 或其他管理器筛选对应单元;不要假设所有发行版使用同一种管理器。
- 目标接口存在且底层链路符合预期。
- 接口拥有正确地址和 CIDR 前缀。
- 到目标的路由选择了正确接口、源地址和下一跳。
- 邻居解析没有持续失败。
- 名称解析能返回预期地址。
- 最后再验证目标应用协议,例如重新建立一次 SSH 会话。
本指南所有命令均为只读,无需回滚。保存输出时删除主机名、公网地址、用户名和其他敏感信息。若过程中发现需要修改网络配置,先单独备份当前配置并准备本地控制台,再按照实际网络管理器的官方流程执行。
| 现象 | 可能层级 | 下一步 |
|---|---|---|
| 接口不存在 | 驱动、设备树、硬件或命名变化 | 查当前启动日志和硬件枚举。 |
| 接口存在但无地址 | DHCP、静态配置或网络管理器 | 查对应管理器状态与日志。 |
| 有地址但无目标路由 | 路由配置 | 核对前缀和默认网关,先不要直接新增。 |
路由正确但邻居 FAILED |
二层链路或下一跳 | 核对交换网络、无线连接和网关地址。 |
| IP 正常、域名失败 | 名称解析 | 检查解析服务和 DNS 来源。 |
| 网络层正常、SSH 仍失败 | 服务、防火墙或凭据 | 转到服务状态和 SSH 日志排查。 |