跳转到内容
实战指南troubleshooting

Linux 网络分层排查

用只读命令依次检查接口、地址、路由、邻居、名称解析和服务日志,定位 Linux 网络故障层级。

状态
已审阅
难度
入门
风险
只读 / 低风险
平台
linux · debian · ubuntu

保持当前网络状态不变,从低到高记录证据,最后明确是哪一层缺失或异常,而不是用“重启网络”掩盖问题。

  • 可访问设备终端。远程排障时保留当前 SSH 会话,不执行接口 down、删地址或删默认路由。
  • 已知预期的接口、地址获取方式(静态或 DHCP)、网关和目标主机。
  • 容器或网络命名空间内的结果只代表当前命名空间。
  1. 记录主机和接口状态:

    Terminal window
    hostname
    ip -brief link show

    接口应存在;管理状态 UP 与底层链路状态是不同信息。

  2. 检查地址和前缀:

    Terminal window
    ip -brief address show

    核对目标接口是否有预期 IPv4/IPv6 地址,避免把回环或自动链路本地地址当成局域网地址。

  3. 检查路由及内核对目标的实际选择:

    Terminal window
    ip route show
    ip route get 192.0.2.1

    ip route get 只做路由查询,不发送数据包。应关注输出接口、源地址和下一跳是否符合预期。

  4. 检查同一链路的邻居解析:

    Terminal window
    ip neigh show

    持续 FAILED 可能指向链路、VLAN、网关地址或对端问题;STALE 本身不是故障。

  5. 把名称解析与 IP 连通性分开检查:

    Terminal window
    getent ahosts example.com

    如果已知 IP 可达而名称解析失败,应检查系统采用的解析服务和 DNS 配置,而不是修改路由。

  6. 在使用 systemd journal 的系统上查看当前启动的网络警告:

    Terminal window
    journalctl --boot=0 --priority=warning --no-pager

    结合系统实际使用的 NetworkManager、systemd-networkd 或其他管理器筛选对应单元;不要假设所有发行版使用同一种管理器。

  • 目标接口存在且底层链路符合预期。
  • 接口拥有正确地址和 CIDR 前缀。
  • 到目标的路由选择了正确接口、源地址和下一跳。
  • 邻居解析没有持续失败。
  • 名称解析能返回预期地址。
  • 最后再验证目标应用协议,例如重新建立一次 SSH 会话。

本指南所有命令均为只读,无需回滚。保存输出时删除主机名、公网地址、用户名和其他敏感信息。若过程中发现需要修改网络配置,先单独备份当前配置并准备本地控制台,再按照实际网络管理器的官方流程执行。

现象 可能层级 下一步
接口不存在 驱动、设备树、硬件或命名变化 查当前启动日志和硬件枚举。
接口存在但无地址 DHCP、静态配置或网络管理器 查对应管理器状态与日志。
有地址但无目标路由 路由配置 核对前缀和默认网关,先不要直接新增。
路由正确但邻居 FAILED 二层链路或下一跳 核对交换网络、无线连接和网关地址。
IP 正常、域名失败 名称解析 检查解析服务和 DNS 来源。
网络层正常、SSH 仍失败 服务、防火墙或凭据 转到服务状态和 SSH 日志排查。