.. 标题:网络故障排除方法 - 系统方法 .. slug:网络故障排除方法 .. 日期: 2026-02-02 18:00:00 世界标准时间 ..标签:网络、故障排除、方法、诊断 ..类别:文章 ..链接: .. 描述:一种系统、科学的网络故障排除方法,可防止浪费时间和错误修复 ..类型:文本
问题:数据库应用程序“慢”。网络团队责怪服务器团队。服务器团队将责任归咎于网络。同时,用户也会感到沮丧,并且在循环调试中浪费时间。
解决方案:一种系统、科学的故障排除方法,使用证据而不是假设来确定根本原因。
随意排除故障的成本:浪费时间、掩盖实际问题的错误修复、团队之间的相互指责以及用户体验的下降。
网络故障排除从根本上来说是科学方法的练习:
本文提供了一个用于网络故障排除的结构化框架,可以防止常见的陷阱,例如:
在深入研究技术诊断之前,请回答以下五个关键问题以缩小您的调查范围:
配置改变?新硬件?软件更新?拓扑修改?
一个用户?一栋楼?每个人?仅特定应用?
经常发生吗?仅在特定时间段内?随机发生?
你能按需触发问题吗?
检查连接两端
OSI 模型提供了用于故障排除的结构化框架。根据症状,从第 1 层(物理)向上工作,或从第 7 层(应用程序)向下工作。
何时使用:连接完全丢失、没有链路指示灯或物理层症状
show interfaces, ethtool eth0show mac address-table, show spanning-treeping, traceroute, show ip routetelnet host port, netstat -an, 数据包捕获nslookup, dig, curl -v何时使用:存在基本连接的特定于应用程序的问题
从第 7 层开始(SharePoint 服务是否正在运行?DNS 解析为正确的 IP?),仅在需要时向下工作。
使用此快速诊断树来识别哪一层出现故障:
TCP/IP 堆栈无法运行。检查操作系统服务,重新安装网络驱动程序。
NIC 已禁用、驱动程序错误、电缆已拔出。查看:ip link show或设备管理器
检查:物理电缆、交换机端口状态、VLAN 分配、ARP 表
检查:路由表、防火墙规则、ACL。使用traceroute找到数据包停止的地方
检查:DNS 服务器设置、DNS 服务器可用性、防火墙阻止端口 53
检查:防火墙规则、安全组、端口上侦听的服务
问题在于应用程序本身、身份验证或应用程序配置
当您对根本原因有假设时,请使用以下隔离技术来确认或拒绝它:
捕获源、中间点和目的地的流量,以确定数据包被丢弃或修改的位置:
# Capture on client
tcpdump -i eth0 -w client.pcap host server.example.com
# Capture on server
tcpdump -i eth0 -w server.pcap host client.example.com
# Compare:
# - Do packets leave client? (check client.pcap)
# - Do packets arrive at server? (check server.pcap)
# - If yes/no: problem is in the path between
# - If yes/yes but server doesn't respond: server-side issue
通过测试单个设备内的连接性来消除外部变量:
# Test TCP stack without network
ping 127.0.0.1
# Test application listening locally
telnet localhost 80
# Test loopback on network interface (if supported)
# Some NICs support physical loopback for Layer 1 testing
将配置和行为与工作系统进行比较:
# Compare interface settings
diff <(ssh working-switch "show run int gi1/0/1") \
<(ssh broken-switch "show run int gi1/0/1")
# Compare routing tables
diff <(ssh router1 "show ip route") \
<(ssh router2 "show ip route")
正确的文档可以防止循环调试,即您多次尝试同一件事而没有意识到。
问题ID: TICKET-12345
日期/时间: 2026-02-02 14:30 UTC
举报人: Jane Smith (jane.smith@company.com)
受影响的用户: ~50 users in Building A, 3rd floor
症状: Cannot access file server \\fileserver01
初步观察:
- Issue started around 14:00 UTC
- Only affects Building A, 3rd floor
- Other buildings can access fileserver01
- Ping to fileserver01 (10.1.50.10) times out from affected users
- Ping to default gateway (10.1.30.1) succeeds
进行的测试:
1. [14:35] Checked switch port status: gi1/0/15 is UP/UP
2. [14:38] Checked VLAN assignment: Port is in VLAN 30 (correct)
3. [14:42] Checked interface errors: 1,234 CRC errors on gi1/0/15
4. [14:45] Replaced patch cable - still seeing CRC errors
5. [14:50] Moved uplink to different port (gi1/0/16) - errors persist
6. [14:55] Checked fiber cleanliness - dirty connector found
根本原因:
Dirty fiber connector on uplink between Building A floor switch
and distribution switch causing CRC errors and packet loss
解决:
Cleaned fiber connector with proper cleaning kit. CRC errors
dropped to zero. File server access restored.
确认:
Users confirmed file server accessible. Monitored for 15 minutes
with no errors.
解决问题的时间: 25 minutes
数据库应用程序响应时间从 <100 毫秒降低到 5 秒以上。应用程序团队将其归咎于“网络延迟”。
数据库服务器操作系统缓冲区对于高带宽×延迟产品来说太小。 TCP 窗口将填满,迫使发送方等待。
# Increased TCP receive buffers on Linux database server
sysctl -w net.ipv4.tcp_rmem="4096 87380 16777216"
sysctl -w net.core.rmem_max=16777216
不要假设:“慢”并不总是意味着“网络延迟”。在得出结论之前,一定要收集证据(ping 延迟情况、数据包捕获情况)。
服务器连接会随机断开,尤其是在负载情况下。有时工作正常,有时完全没有反应。
自协商失败。服务器协商全双工,交换机回落到半双工。仅当双方尝试同时传输时,才会在负载下发生冲突。
! Cisco switch - force full duplex
interface GigabitEthernet1/0/10
speed 1000
duplex full
检查两端:接口状态显示协商的设置。不匹配意味着自动协商失败。始终对服务器的速度/双工进行硬编码。
用户可以浏览某些网站(Google、Yahoo),但不能浏览其他网站(银行网站、公司门户)。小的 HTTP 请求有效,大的页面超时。
ping -M do -s 1472成功,ping -M do -s 1473失败VPN 隧道将 MTU 减少到 1400,但防火墙阻止 ICMP“需要分段”消息。路径 MTU 发现 (PMTUD) 无法工作,从而产生 MTU 黑洞。小数据包适合,设置了 DF 位的大数据包被默默丢弃。
! Implemented TCP MSS clamping on router
interface Tunnel0
ip tcp adjust-mss 1360
! Alternative: Allow ICMP Type 3 Code 4 through firewall
access-list 101 permit icmp any any packet-too-big
尺寸很重要:如果小请求有效但大传输失败,则怀疑 MTU/碎片问题。使用带有 DF 位的 ping 来测试路径 MTU。
语音通话的音频断断续续,间歇性掉线。仅发生在工作时间(上午 9 点至下午 5 点)。
QoS 策略存在,但带宽分配倒退:尽力服务占 60%,语音占 5%。在业务时段,当数据流量增加时,语音数据包会因队列溢出而被丢弃。
! Corrected QoS policy
policy-map WAN-QOS
class VOICE
priority percent 33
class VIDEO
bandwidth percent 25
class CRITICAL-DATA
bandwidth percent 20
class class-default
bandwidth percent 22
基于时间的问题 = 容量:如果问题仅在繁忙时段出现,则不是硬故障,而是容量/QoS 问题。检查队列统计数据,而不仅仅是总带宽。
| 症状 | 层 | 运行命令 | 寻找什么 |
|---|---|---|---|
| 无链接灯 | 第 1 层 | show interfaces |
状态:已关闭、无运营商、电缆已拔出 |
| 丢包 | 1/2层 | show interfaces |
CRC 错误、矮帧、巨型错误、冲突、延迟冲突 |
| 无法 ping 通网关 | 第2层 | arp -a |
无 ARP 条目、未学习 MAC、STP 阻塞 |
| 无法到达远程子网 | 第3层 | traceroute |
路由缺失、下一跳错误、路由环路 |
| 连接被拒绝 | 第4层 | telnet host port |
服务未监听、防火墙阻止、TCP RST |
| 性能缓慢 | 第 4 层+ | ping (RTT) |
高延迟、带宽限制、TCP 重传、零窗口 |
| 无法解析主机名 | 第7层 | nslookup |
DNS 服务器无法访问、DNS 配置错误、NXDOMAIN |
| 间歇性滴落 | 1/2层 | ping -f (flood) |
双工不匹配、电缆故障、STP 重新收敛 |
| 有时有效,其他则无效 | 多种的 | Extended ping |
负载均衡问题、ECMP不对称、状态表溢出 |
知道何时上报给供应商 TAC 或高级工程师。在以下情况下升级:
每次故障排除课程都是一次学习机会。建立个人知识库:
# Example structure
~/troubleshooting-journal/
├── 2026-01-15-duplex-mismatch.md
├── 2026-01-22-mtu-black-hole.md
├── 2026-02-02-tcp-window-exhaustion.md
└── README.md # Index of all issues
# Each file contains:
# - Symptom
# - Diagnostic steps
# - Root cause
# - Resolution
# - Lessons learned
# - Related tickets/documentation
按场景整理常用命令,以便在故障排除时快速参考。
在不了解问题的情况下更改配置通常会使事情变得更糟或掩盖真正的问题。
“网络问题”通常是应用程序、服务器或客户端问题。在接受指责之前先收集证据。
您会浪费时间重复已经完成的测试,或者无法向同事解释您已经尝试过的内容。
间歇性问题通常是即将发生故障的早期预警信号。在它们变得至关重要之前对其进行调查。
重新启动设备可能会恢复服务,但如果您不找出为什么需要重新启动,问题将会再次出现。
网络故障排除既是科学也是艺术。科学遵循系统的方法、正确使用诊断工具并理解协议。艺术在于根据症状知道首先运行哪些测试,从经验中识别模式,并知道何时升级。
通过遵循本文中概述的系统方法(提出正确的问题、有条不紊地完成 OSI 模型、记录步骤并从每个问题中学习),您将能够更有效地进行故障排除,并避免导致浪费时间和错误修复的常见陷阱。
记住:目标不仅仅是恢复服务,而是了解失败的原因,以便防止再次发生。
最后更新时间:2026 年 2 月 2 日 |作者:Baud9600技术团队