2.3.5 网络连接与链路状态排查
本节聚焦于 Linux 网络连接与链路状态的排查方法,覆盖从物理链路到协议栈的检查路径、关键命令与实操示例,形成可执行的定位闭环。
1. 基础检查思路#
- 分层排查:物理链路 → 链路层 → IP层 → 传输层 → 应用层
- 确定范围:单机问题、局域网问题还是外网问题
- 对照基线:与正常主机的配置、路由、DNS、MTU等进行对比
原理草图(快速定位层级):
2. 链路状态与物理层检查#
2.1 关键命令与解释#
ip link show:查看接口状态(UP/DOWN)、MTU、MACethtool 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权限,查看路径MTUping:测试可达性和丢包
# 安装工具(如未安装)
# 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:查看MTUping -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 网络连接与链路状态问题,并形成可复用的排障方法。