linux网络排查应按物理连通性→协议栈配置→本地服务响应→路由与转发→远程可达性顺序进行,对应命令包括ip link、ethtool、ip addr、ip route、ping、telnet、curl、traceroute、tcpdump和ss等。

排查 Linux 网络问题,关键不是记全命令,而是清楚每一步要验证什么:物理连通性 → 协议栈配置 → 本地服务响应 → 路由与转发 → 远程可达性。下面按排查逻辑顺序整理常用命令,附典型使用场景和要点。
确认物理与链路层是否正常
先排除网线、网卡、交换机端口等底层问题:
- ip link show:查看网卡状态(UP/DOWN)、收发包计数、错误包(RX/TX errors)。若显示 NO-CARRIER 或 LOWER_UP 缺失,说明物理连接异常
- ethtool eth0:检查双工模式、速率、链路检测结果(Link detected: yes/no)。可配合 ethtool -s eth0 speed 1000 duplex full 手动协商(慎用)
- dmesg | grep -i "eth\|link":查看内核日志中网卡初始化或链路变化记录,常能发现硬件识别失败或 PHY 自协商失败
验证 IP 配置与本地协议栈
确保地址、子网、路由表正确,且内核网络功能启用:
- ip addr show:替代老旧的 ifconfig,清晰显示 IPv4/IPv6 地址、掩码、作用域(scope global/link),注意检查是否有重复地址(DUPLICATE)或临时地址干扰
- ip route show:查看主路由表。重点核对默认网关是否存在、目标网络是否匹配、出接口是否正确。可加 table all 查看所有路由表(如策略路由)
- sysctl net.ipv4.ip_forward:排查转发问题时必查,值为 0 表示关闭转发,需设为 1 并持久化(写入 /etc/sysctl.conf)
测试连通性与端口可用性
分层验证:ICMP → TCP/UDP → 应用层响应:
- ping -c 4 192.168.1.1:测试同网段网关。若不通,先查 ARP(ip neigh show)是否解析成功;若丢包率高,结合 tcpdump -i eth0 icmp 抓包分析
- telnet 10.0.0.5 22 或 nc -zv 10.0.0.5 80:验证 TCP 端口是否开放并接受连接。比 ping 更进一步,可区分防火墙拦截(连接拒绝)与服务未启动(连接超时)
- curl -v http://localhost:3000/api/health:检查本地服务 HTTP 响应头与状态码,排除应用层返回空内容或 5xx 错误
追踪路径与分析流量
定位网络中断点或异常延迟:
- traceroute -n 8.8.8.8 或 mtr -r 1.1.1.1:前者单次探测,后者持续统计。关注某跳后全部 * 或延迟突增,即故障点可能在该设备或其上游
- tcpdump -i eth0 host 192.168.2.100 and port 53:精准抓取指定主机与端口的流量,配合 -w capture.pcap 保存供 Wireshark 分析。避免在高负载服务器上无过滤全抓
- ss -tuln:查看监听中的 TCP/UDP 端口(-t TCP, -u UDP, -l listening, -n 数字端口)。比 netstat 更快,能快速确认服务是否真正 bind 到预期地址(0.0.0.0 vs 127.0.0.1)










