
适用对象:
网络工程师、SRE、红队成员、SOC分析师、性能调优专家及高级开发人员,寻求一份实用、直截了当的现场手册,适用于从树莓派实验室到跨洲SD-WAN骨干网的各种规模。
网络故障排除是一种有纪律、基于证据的工作流程,用于检测、隔离和修复所有OSI/TCP-IP层的数据路径故障。它有两个重要的业务关键绩效指标(KPI):
良好的实践能缩短这两者,记录根本原因,并将经验反馈到架构、监控和运行手册中。
被动 vs 主动:
被动工作是扑灭火灾;主动工作是防止火灾。你的工具、指标和混沌演练必须支持两者。
/24、/27、/31——为何奇数掩码对点对点链路很重要。ipcalc 验证:ipcalc 192.168.14.0/29
| 检查项 | 常用命令 | 成功标准 |
|---|---|---|
| 链路灯与协商 | ethtool eth0 |
1 G 全双工,无错误 |
| 回环插头 | swconfig dev switch0 set loopback 1 |
接收/发送计数清零 |
| 光模块功率 | ethtool -m eth2 |
接收功率符合规范,约 -1 dBm 至 -3 dBm |
watch -n2 "ip -s link show eth0 | grep -A1 RX"
| 工具 | 层级 | 命令示例 | 作用说明 |
|---|---|---|---|
ping -M do -s1472 dst |
3 | 路径MTU发现 | |
traceroute -I -T dst |
3 | 跳数延迟,MPLS标签 | |
ip -s link |
2/3 | 错误、丢包、速率 | |
dig +trace fqdn |
7 | 委派树 | |
ss -tulpn |
4 | 监听/已建立套接字 | |
ip route get 8.8.8.8 |
3 | 选定出口路径 | |
tcpdump -ni any 'tcp[13]&2!=0' |
2-7 | SYN洪泛健康状况 | |
nmap -sS -Pn -p1-1024 dst |
3-7 | 端口开放/过滤 | |
arp -a |
2 | MAC地址重复 | |
mtr -ezbwrc 100 dst |
3 | 实时丢包/延迟 |
show spanning-tree detail | include role — 查找 root inconsistent。curl -6 https://example 与 curl -4 ... 对比。Idle → Active → OpenSent 循环表示认证或TTL问题。ip route show vrf red 0.0.0.0/0 不应出现在 vrf blue 中。sequenceDiagram
Client->>Server: SYN
Server-->>Client: SYN-ACK ❌ (丢包)
Client->>Server: SYN (重试)
通常是防火墙状态表耗尽或路径不对称。
sudo ethtool -k eth0 | grep offload。dig +dnssec +multi example.com — 查找 ad 标志。curl -v https://site | grep HTTP — 499 与 504 状态语义。openssl s_client -servername site -connect ip:443 — 验证SNI与CN匹配。| 类别 | 症状 | 根本原因 | 解决方案 |
|---|---|---|---|
| DNS | FQDN解析缓慢 | 上游SERVFAIL | 修正区域传输ACL,提升SOA序列号 |
| 路由 | 间歇性连通性 | ECMP哈希不均衡 | 启用L4哈希,或用策略固定流 |
| 防火墙 | 随机HTTPS重置 | ACCEPT上方阴影DROP规则 | 调整规则顺序,添加日志前缀 |
| 性能 | 200毫秒峰值 | CPE缓冲膨胀 | 应用FQ-CoDel:tc qdisc … fq_codel |
| MTU | TLS传输14 KB后失败 | ICMP黑洞 | MSS限制:iptables --clamp-mss-to-pmtu |
mmcli -m 0 --command='AT+QENG="servingcell"'。# 跟踪Cilium覆盖网络路径
cilium monitor --icmp --related -v
flannel.1 接口封装。calicoctl node status 验证对等状态。入站/出站Mermaid图:
graph TD
Client -->|mTLS| Envoy_Sidecar
Envoy_Sidecar -->|mTLS| App_Pod
App_Pod --> Envoy_Sidecar
Envoy_Sidecar -->|mTLS| Remote_Envoy
gcloud logging read。tcpdump -ni underlay udp port 4789。show crypto isakmp sa 查看第一阶段定时器。ip netmask 255.255.255.0。zeek -i eth0 local "Site::local_nets += { 10.0.0.0/8 }"
关联 notice.log 与Suricata的 eve.json,获得上下文丰富的告警。
sysctl net.ipv4.tcp_congestion_control=bbr。ss -ti 监控拥塞窗口增长。tc qdisc add dev eth0 root handle 1: htb default 20
tc class add dev eth0 parent 1: classid 1:20 htb rate 10mbit ceil 20mbit
在1:20类上启用WRED以实现优先丢弃。
dig +short CHAOS TXT id.server @resolver 定位DNS POP。k6脚本:
import http from 'k6/http';
export default function () {
http.get('https://api.example.com/health', { timeout: '2s' });
}
通过Kubernetes CronJob每小时运行;P95延迟超过300毫秒时触发PagerDuty。
| 技术栈 | 开源工具 | 商业工具 |
|---|---|---|
| NPM | LibreNMS、Prometheus、Grafana | SolarWinds、PRTG |
| AIOps | Zabbix + Python ML | Kentik、ThousandEyes |
| 抓包工具 | Wireshark、Arkime | Gigamon GigaVUE |
| 应用性能监控 | OpenTelemetry | Datadog NPM、New Relic |
route-map 抑制不稳定ASN。ip rule 100。cilium bpf ct flush,封锁并驱逐节点,重启DaemonSet → 恢复。运营纪律加上适当深度的包级洞察,将灭火变成可重复的科学——保持低延迟、高吞吐,用户满意。
# MTU发现(超过DF失败)
ping -M do -s 1472 8.8.8.8
# 实时TCP重传
tcpdump -ni any 'tcp[13] & 0x10 != 0 and tcp[13] & 0x08 != 0'
# 显示路由通告(Juniper)
show route advertising-protocol bgp 192.0.2.1
# 映射Kubernetes VIP到端点
kubectl get ep kube-dns -o wide
TCP标志:URG ACK PSH RST SYN FIN
IPv6扩展头:0 跳转选项 | 43 路由 | 44 分片 | 50 ESP | 51 AH
DNS操作码:0 查询 | 5 更新 | 4 通知
| 数据类型 | 热存储 | 冷存储 | 合规要求 |
|---|---|---|---|
| 原始pcap | 7天 SSD | 30天 S3/Glacier | PCI-DSS |
| 流/指标 | 13个月时序数据库 | 2年对象存储 | GDPR |
| Syslog/审计 | 1年 | 5年磁带存档 | HIPAA |