
终极网络故障排除指南:步骤、工具、问题与最佳实践
一本实用的、直接的网络故障排除现场手册。涵盖基础概念、7步法、核心诊断工具、分层诊断、常见问题以及家庭、企业、ISP和云环境的最佳实践。
网络疑难排解终极指南:步骤、工具、常见问题与最佳实践
适用对象 网络工程师、SRE、信息安全分析师、红队专家以及资深开发者,涵盖从家用 Raspberry Pi 实验室到跨洲 SD-WAN 骨干网的一切场景,提供可落地的技术“作战手册”。
基础概念
什么是网络疑难排解
网络疑难排解是一套基于证据、结构化的方法论,旨在跨越 OSI / TCP-IP 各层对流量路径中的故障进行发现、隔离与修复。核心 KPI:
- MTTD(平均发现时长)
- MTTR(平均恢复时长)
成熟的排障流程能同时降低两项指标,记录根因并将经验反哺到架构、监控与 Runbook 中。
被动 vs 主动 —— “灭火”与“防火”并重;要用工具、指标和混沌演练同时覆盖两方面。
家庭、企业与 ISP/游戏网络为何需要排障
- SLA / SLO 遵循——丢包或延迟超标将带来赔付或用户流失。
- 对时延敏感的应用——VoIP 若抖动 > 30 ms、VR、电竞等体验直降。
- MTBF(平均无故障时间)越高,代表运维成熟度越高。
关键概念速查表
| 主题 | 快速要点 |
|---|---|
| IP 编址 / CIDR / VLSM | 不规则子网,ipcalc 校验。 |
| DNS 记录 | A/AAAA、PTR、CNAME、SRV、分视图(split-horizon)。 |
| 路由 | 静态 vs OSPF / BGP / IS-IS,ECMP,PBR,VRF。 |
| NAT 形态 | SNAT、DNAT、PAT;非对称路径常见隐患。 |
| 安全控制 | 无状态 ACL、状态型防火墙、UTM、NGFW。 |
七步排障流程
- 识别问题——收集症状、指标与日志。
- 假设原因——自顶向下或自底向上分析。
- 验证假设——实验室、维护窗口或 pcap。
- 制定行动计划——回滚点、审批、影响范围。
- 实施或升级——按 MOP / SOP 执行或上报。
- 确认恢复——合成探针、真实用户指标。
- 记录结论——撰写 post-mortem、更新知识库与 Runbook。
快速硬件与连通性检查
物理层验证
| 检查项 | 命令 | 正常表现 |
|---|---|---|
| 链路灯 / 协商 | ethtool eth0 |
1 Gb Full,无错误 |
| 环回 / TDR | swconfig … |
计数器稳定 |
| 光功率 | ethtool -m |
–1 dBm ~ –3 dBm |
断电重启最佳实践
在事件频道公告 → 记录时间 → 断电 30 秒 → 重启后确认 NTP 同步。
接口计数器(CRC / Giants / Runts / Collisions)
watch -n2 "ip -s link show eth0 | grep -A1 RX"
任何持续增长的错误都需调查。
核心诊断工具
| 工具 | 层 | CLI 示例 | 用途 |
|---|---|---|---|
| ping / hping3 | 3 | ping -M do -s1472 |
MTU & 可达性 |
| traceroute / pathping | 3 | traceroute -I -w2 |
每跳延迟 |
| ip / ifconfig | 2-3 | ip -s link |
Rx/Tx 错误 |
| dig / nslookup | 7 | dig +trace |
DNS 委派链 |
| ss / netstat | 4 | ss -tulpn |
活动端口 |
| ip route | 3 | ip route get 8.8.8.8 |
实际出口 |
| tcpdump | 2-7 | tcpdump 'tcp[13]&2!=0' |
SYN 风暴 |
| nmap / masscan | 3-7 | nmap -sS -Pn |
端口扫描 |
| arp | 2 | arp -a |
MAC 冲突 |
| mtr | 3 | mtr -ezbwrc100 |
实时损耗/延迟 |
分层诊断
物理 & 数据链路
- TDR / OTDR 电缆测试
- Spanning-Tree 环路
- VLAN 双层标记攻击
网络层
- IPv6 与 IPv4 切换卡顿(Happy-Eyeballs)
- BGP / OSPF 邻接状态
- VRF / PBR 泄漏
传输层
- TCP 三次握手失败(FW 状态表)
- UDP 分片与下卸
- QUIC 在 UDP/443 被阻断
应用层
- DNSSEC 失败
- HTTP 502 / 504 / 499
- TLS SNI 不匹配
常见问题与修复
| 症状 | 根因 | 解决方案 |
|---|---|---|
curl: name or service not known |
/etc/resolv.conf 错误 |
修正 search/domain 与 SOA |
| 最后一跳高 RTT | 服务器 CPU/NIC 过载 | irqbalance,启用 GRO/LRO |
| HTTPS 随机掉线 | 防火墙状态表满 | 增大 conn-track |
| 单向 VoIP | 非对称 NAT | 固定 RTP/RTCP 端口 |
| “黑洞”子网 | 返回路由缺失 | 添加路由或重分发 |
无线与移动网络
- Wi-Fi 勘测 —— RSSI < –67 dBm。
- 快速漫游 —— 802.11 k / v / r。
- DFS 5/6 GHz —— 处理雷达事件。
- LTE / 5G KPIs —— RSRP、RSRQ、SINR。
容器、云与 SDN
- Kubernetes CNI 跟踪 (
cilium monitor) - AWS Reachability Analyzer、Azure NSG Flow Logs、GCP VPC-SC
- VXLAN / GRE / IPSec — 同时抓取 underlay + overlay
安全与事件响应
- 100 Gb 无丢包 Packet Broker / TAP
- TLS 指纹 JA3 / JA4
- Zeek + Suricata 聚合 Flows / Alerts
性能优化与 QoS
| 方法 | 命令 | 效果 |
|---|---|---|
| BBR | sysctl net.ipv4.tcp_congestion_control=bbr |
降低延迟 |
| FQ-CoDel | tc qdisc add dev eth0 root fq_codel |
缓冲膨胀治理 |
| DSCP | EF/46 语音,AF41 视频 | 端到端 QoS |
| WRED | random-detect dscp 46 |
减少尾部丢包 |
自动化与 IaC
- ChatOps — Slack 指令 → Ansible → tcpdump → S3
- NetBox + Batfish — 漂移检测与可达性校验
- k6 / Locust — K8s CronJob 内运行合成交易
工具矩阵速览
| 层 | 开源 | 商用 |
|---|---|---|
| NPM | LibreNMS, Prometheus | SolarWinds, PRTG |
| AIOps | Zabbix + ML | Kentik, ThousandEyes |
| Packet Capture | Wireshark, Arkime | Gigamon |
| APM | OpenTelemetry | Datadog, New Relic |
案例分析
- MPLS→SD-WAN 迁移 — /32 前缀泄漏到 Area 0。
- ISP BGP 抖动 — 启用 Graceful-Restart,hold-time 180 s。
- K8s 东西向黑洞 —
cilium bpf ct flush后重新部署 CNI。
最佳实践
- 每月基线测量
- 变更控制 — 变更前/后双重检查
- Runbook Git 化,Grafana 面板直链
结论与后续行动
统一可观测性、每月混沌演练、自动回滚——让“救火”变为可重复的科学流程,持续降低延迟、提升吞吐。
附录 A — CLI 示例
ping -M do -s 1472 8.8.8.8 # MTU 发现
tcpdump -ni any 'tcp[13]&8!=0' # TCP 重传
show route advertising-protocol bgp # Juniper
kubectl get ep kube-dns -o wide # VIP ↔ Pods
附录 B — 协议速查
TCP 标志: URG ACK PSH RST SYN FIN
IPv6 扩展头: 0 Hop-by-Hop, 43 Routing, 44 Fragment
DNS Opcode: 0 QUERY, 5 UPDATE, 4 NOTIFY
附录 C — 日志保留策略
| 数据类型 | 热存储 | 冷存储 | 合规 |
|---|---|---|---|
| 原始 pcap | 7 天 SSD | 30 天 S3/Glacier | PCI-DSS |
| Flow / 指标 | 13 个月 TSDB | 2 年 对象存储 | GDPR |
| Syslog / Audit | 1 年 | 5 年 磁带 | HIPAA |
