本文目录导读:

在机房运维中,网络故障的排查需要遵循从底层到高层、从物理到逻辑的原则,以下是一套标准化的排查流程及常用工具的使用方法。
故障排查的核心思路:分层诊断
建议按照 OSI模型(开放系统互联模型) 或 TCP/IP模型(传输控制协议/网际协议模型) 自下而上排查,不要上来就抓包。
- 物理层: 线缆、光模块、接口、电源。
- 数据链路层: MAC地址、VLAN(虚拟局域网)、ARP(地址解析协议)、端口状态。
- 网络层: IP地址、路由、MTU(最大传输单元)。
- 传输层: 端口(TCP/UDP)、防火墙策略。
- 应用层: DNS(域名系统)、HTTP(超文本传输协议)、数据库连接。
核心工具与具体排查步骤
确认物理连通性(物理层+数据链路层)
现象: 网口灯不亮、服务器无法ping通、链路频繁震荡。
-
工具:
ethtool、ip link、交换机命令行(show interface)。 -
排查步骤:
-
看光口/电口指示灯: 确认线缆是否插紧,光纤是否有光衰(光模块需清晰可见的红色/激光)。
-
查看端口状态:
# Linux 服务器 ethtool eth0 # 查看 Speed、Duplex、Link detected ethtool -S eth0 # 查看错误包计数器 (CRC errors, collisions) # 交换机 (Cisco/Huawei) display interface GigabitEthernet 0/0/1
-
关键指标:
Link detected: yes—— 物理通。Speed: 1000Mb/s—— 协商速率是否匹配(服务器和交换机都要千兆/万兆)。Duplex: Full—— 必须是全双工,半双工会导致大量丢包。- 错误计数器:
CRC errors(线缆或光模块问题)、Runts、Giants(通常指小于64字节或大于1518字节的帧,可能因物理层问题或驱动异常产生)、Collisions(碰撞)大量增长说明物理层有故障。
-
排查链路层与ARP(地址解析协议)
现象: 能ping通网关,但ping不通其他网段服务器;IP冲突。
- 工具:
ip neigh/arp -a、ping、tcpdump。 - 排查步骤:
- 检查ARP表:
arp -a # 查看 IP 是否解析到了正确的 MAC 地址 ip neigh show # 更详细的邻居表
- 如果ARP表为空或不正确:
说明二层不通(VLAN隔离、交换机端口未允许该VLAN通过)。
- VLAN测试: 在交换机上使用
ping命令测试VLAN内的连通性。 - MAC地址泛洪: 如果网络中有大量无效MAC地址,可能是环路或ARP攻击,使用
tcpdump -e查看源MAC地址是否异常。
- 检查ARP表:
排查IP层与路由(网络层)
现象: 本机ping网关通,但ping远端(如互联网或另一机房)不通。
-
工具:
ping、traceroute/tracert、ip route、mtr。 -
排查步骤:
-
第一步:ping网关。 如果不通,检查本机IP配置(
ip addr)、网卡配置或交换机端口配置。 -
第二步:traceroute。
# Linux traceroute -n 8.8.8.8 # -n 指禁用DNS解析,只显示IP # Windows tracert -d 8.8.8.8
- 看数据包在哪里停止了( 或
!H即主机不可达,!N即网络不可达...)。 - 处理: 检查那跳设备的路由表或防火墙。
- 看数据包在哪里停止了( 或
-
第三步:检查路由表。
ip route show # Linux route print # Windows
- 确保有默认网关或到达目标网段的静态路由。
-
高级工具:
mtr(My TraceRoute)。mtr -r 目标IP,它会持续发送探测包,并显示每一跳的丢包率,如果中间某跳丢包率很高(>20%),而后续跳数字为0(通常指后续跳数/节点无丢包或极低丢包),说明该节点可能限流,但整体可达。- 重点关注最后一跳的丢包。
-
排查端口与防火墙(传输层)
现象: ping通,但业务连不上(如SSH(安全外壳协议)、Web、数据库)。
-
工具:
telnet、nc(netcat)、ss/netstat、nmap、iptables。 -
排查步骤:
-
测试端口连通性:
telnet 10.0.0.1 80 # 如果卡住不动或拒绝,说明端口不通 nc -zv 10.0.0.1 3306 # -z 扫描模式 -v 显示详细信息
-
检查服务是否监听:
ss -tlnp # 查看 TCP 监听端口及其对应的进程 netstat -anp | grep 80
-
检查防火墙:
# Linux iptables iptables -L -n -v # Linux firewalld firewall-cmd --list-all # 临时关闭(用于测试):systemctl stop firewalld (注意运维安全,避免违规操作)
-
使用 Nmap 进行端口扫描: 从另一台机器扫描目标机器,快速判断哪些端口开放。
-
深度抓包分析(万能手段)
现象: 上述所有方式均正常(链路UP、路由正确、端口开放),但业务交互异常(如丢包、乱序、重传、连接频繁重置)。这是最强大的工具。
- 工具:
tcpdump(服务端) +Wireshark(客户端分析)。 - 高手用法:
# 在服务器端抓取特定端口的包(先写一个循环持续捕获一段时间,避免文件过大) tcpdump -i eth0 -s 0 -w /tmp/dump.pcap host 10.0.0.100 and port 443
- Wireshark 分析关键点:
- TCP 重传 (TCP Retransmission): 网络丢包或延迟大。
- TCP 重复ACK (TCP Dup Ack) + 快速重传: 网络存在少量丢包或链路不稳定。
- TCP 窗口满 (TCP Window Full) / 零窗口 (Zero Window): 接收端处理能力不足(应用层问题)。
- TCP RST (Reset): 对端主动断开连接,通常是防火墙发起的RST(被墙),或服务端进程崩溃、端口未监听。
- 连接建立过程(三次握手): 只有SYN(同步序列编号)发出,没有SYN+ACK(同步序列编号+确认字符)回复?-> 目标未监听;有SYN+ACK,但ACK(确认字符)丢失?-> 路由或防火墙不对称。
常见场景的快捷排查命令
场景1:某台服务器上不了网
# 先看底层 ip addr show eth0 # IP 是否配置? ip route show default # 是否有默认路由? ethtool eth0 # 网卡是否 Link up? # 再测连通性 ping 网关IP ping 8.8.8.8 nslookup baidu.com # DNS 是否解析?
场景2:网络丢包或延迟高
# 1. 本机队列丢包(软中断或溢出) ethtool -S eth0 | grep -E "drop|fifo|error" netstat -i # 查看 RX-DRP / TX-DRP 列 # 2. 系统资源耗尽 sar -n DEV 1 5 # 查看网卡每秒流量 (rxkB/s, txkB/s) 是否超带宽 # 3. 路径丢包定位 mtr -r 目标IP # 看哪一跳开始丢包 # 4. 抓包看重传 tcpdump -i eth0 host 目标IP | grep "Retransmission"
场景3:交换机或路由器上排查
# 查看端口状态和错误 show interface status show interfaces counters errors # 查看MAC表 show mac address-table | include <MAC地址> # 查看ARP表 show ip arp | include <IP地址> # 查看路由表 show ip route
场景4:VLAN不通
# 交换机端 show vlan id <vlan-id> # 查看该VLAN包含哪些端口 show interface <端口名> switchport # 查看端口是否Access/Trunk,允许哪些VLAN # 服务器端(直连交换机时)一般服务器不配VLAN,靠交换机Access端口划分,如果是Trunk口接服务器,服务器网卡需配置VLAN子接口: # Linux: ip link add link eth0 name eth0.100 type vlan id 100
新手最容易忽略的几个点
- 光模块/光衰: 很多“链路不通”其实是光模块接收功率低于临界值(比如低于 -25dBm),交换机上用
show interface transceiver查看。 - 防火墙规则: 很多“通一会断”或“只有某IP能通”,极大概率是防火墙策略或安全组(Security Group)在做限制,记得先查防火墙日志(
/var/log/messages或dmesg | grep reject)。 - MTU: 能ping通(小包),但业务不通(大包),用
ping -M do -s 1472 <目标IP>测试是否超过MTU(以太网标准MTU 1500,需扣除IP头20和ICMP头8,数据部分最大1472),如果大包不通,检查路径上是否有隧道(如IPSec、VXLAN),通常需要调小MTU。 - 双工协商: 服务器1000M全双工,但交换机端口协商成了半双工,会导致大量CRC错误,强制固定双方双工模式(如非必要不建议,通常自动协商即可)。
- IP地址冲突:
arping可以测试某个IP是否被其他设备占用。
快速定位口诀
先看灯亮不亮,再看IP对不对;
网关必能ping通,路由要进表内;
端口服务要监听,防火墙需放行;
最后抓包看TCP,重传窗口复位。
标签: 端口连通性