2.3.5 网络连接与链路状态排查

本节聚焦于 Linux 网络连接与链路状态的排查方法,覆盖从物理链路到协议栈的检查路径、关键命令与实操示例,形成可执行的定位闭环。

1. 基础检查思路#

  • 分层排查:物理链路 → 链路层 → IP层 → 传输层 → 应用层
  • 确定范围:单机问题、局域网问题还是外网问题
  • 对照基线:与正常主机的配置、路由、DNS、MTU等进行对比

原理草图(快速定位层级):

文章图片

2. 链路状态与物理层检查#

2.1 关键命令与解释#

  • ip link show:查看接口状态(UP/DOWN)、MTU、MAC
  • ethtool eth0:查看网卡速率、双工、链路检测
# 1) 查看网卡状态
ip link show dev eth0

# 2) 查看网卡物理协商信息
ethtool eth0
# 关键字段解释:
# Link detected: yes/no   -> 是否检测到物理链路
# Speed: 1000Mb/s         -> 速率
# Duplex: Full            -> 全双工/半双工

2.2 故障排查示例#

# 现象:网卡UP但不通
# 排查:查看物理链路是否检测到
ethtool eth0 | grep -E "Link detected|Speed|Duplex"

3. 网络连接与IP层排查#

3.1 命令与解释#

  • ip addr show:查看IP地址、子网掩码
  • ip route show:查看路由表与默认网关
  • arp -a / ip neigh:查看ARP邻居,检查IP冲突
# 查看IP与路由
ip addr show dev eth0
ip route show

# 测试网关连通
ping -c 4 192.168.10.1

# 查看ARP表,判断是否存在IP冲突
ip neigh show

3.2 完整排查示例#

# 预期:eth0 获得 192.168.10.20/24,默认网关 192.168.10.1
ip addr show dev eth0
ip route show

# 若 ping 网关失败,常见原因:
# 1) 网关错误
# 2) VLAN配置错误
# 3) 物理链路抖动

4. 路由与可达性验证#

4.1 命令与解释#

  • traceroute:显示到目标的路径
  • tracepath:无需root权限,查看路径MTU
  • ping:测试可达性和丢包
# 安装工具(如未安装)
# RHEL/CentOS
yum install -y traceroute
# Debian/Ubuntu
apt-get install -y traceroute

# 路径探测
traceroute 8.8.8.8
tracepath 8.8.8.8

4.2 故障定位示例#

# 现象:第1跳就失败
# 结论:本机或网关问题

# 现象:中间跳超时
# 结论:中间路由或ACL限制

5. DNS与域名解析验证#

5.1 命令与解释#

  • /etc/resolv.conf:DNS服务器配置
  • nslookup / dig:解析测试与响应时间
# 查看DNS配置
cat /etc/resolv.conf

# 域名解析测试
dig www.example.com
nslookup www.example.com

5.2 典型现象与定位#

# 现象:IP可达但域名不可解析
# 结论:DNS故障或DNS配置错误

# 现象:解析慢
# 结论:DNS上游延迟或本地DNS不可达

6. 端口与服务连通性#

6.1 命令与解释#

  • ss -lntp:查看本地监听端口与进程
  • nc -zv:探测目标端口是否可达
  • telnet:模拟连接验证
# 查看本地服务监听
ss -lntp

# 检查目标端口连通性
nc -zv 10.0.0.5 8080

6.2 典型故障#

# 连接超时:路由/防火墙/服务未启动
# 连接拒绝:服务未监听或被拒绝

7. MTU与丢包问题排查#

7.1 命令与解释#

  • ip link show:查看MTU
  • ping -M do -s:MTU探测(禁止分片)
# 查看MTU
ip link show dev eth0

# MTU探测:1472 + 28(头部) = 1500
ping -M do -s 1472 8.8.8.8

7.2 现象与定位#

# 现象:小包可达,大包不通
# 结论:路径MTU不一致或中间设备限制

8. 常见故障模式与定位#

  • 网卡UP但不通:网关错误、路由缺失、VLAN配置错误
  • 只能访问IP不能访问域名:DNS问题
  • 断断续续:丢包、链路抖动、双工不匹配
  • 跨网段不可达:路由未配置或ACL限制

9. 推荐排查流程#

1) ip link show         -> 确认链路状态
2) ip addr/ip route     -> 检查地址与路由
3) ping 网关             -> 验证局域网
4) ping 目标IP           -> 验证外部IP
5) traceroute/tracepath -> 定位路径
6) dig/nslookup         -> DNS验证
7) ss/nc                -> 端口确认

10. 实战演练(练习)#

练习1:链路异常排查#

目标:模拟链路断开并恢复,验证排查流程

# 断开接口
ip link set dev eth0 down

# 验证
ip link show dev eth0

# 恢复接口
ip link set dev eth0 up

练习2:DNS故障定位#

目标:将DNS配置修改为错误IP,观察解析失败

# 临时修改DNS
cp /etc/resolv.conf /etc/resolv.conf.bak
echo "nameserver 10.255.255.1" > /etc/resolv.conf

# 测试解析
dig www.example.com

# 恢复配置
mv /etc/resolv.conf.bak /etc/resolv.conf

练习3:端口连通性验证#

目标:启动本地服务并验证监听与访问

# 启动简单HTTP服务
python3 -m http.server 8080

# 本地检查监听
ss -lntp | grep 8080

# 访问测试
curl -I http://127.0.0.1:8080

通过以上步骤,可在实际运维场景中快速定位 Linux 网络连接与链路状态问题,并形成可复用的排障方法。