HiHuo
首页
博客
手册
工具
关于
首页
博客
手册
工具
关于
  • 网络架构师学习手册

    • 网络架构师学习教程
    • 基础篇

      • 第1章 网络模型与数据流转
      • 第2章 以太网与二层通信
      • 第3章 IP路由与三层转发
      • 第4章 TCP与可靠传输
      • 第5章 应用层协议
    • Linux网络栈

      • 第6章 数据包接收路径
      • 第7章 多核网络优化
      • 第8章 Netfilter与防火墙
      • 第9章 流量控制与QoS
    • 虚拟网络

      • 第10章 Network Namespace基础
      • 第11章 Bridge与互联
      • 第12章 VXLAN与Overlay网络
      • 第13章 OVS与SDN
    • Kubernetes网络

      • 第14章 CNI模型与实现
      • 第15章 kube-proxy与Service实现
      • 第16章 CoreDNS与服务发现
      • 第17章 NetworkPolicy与安全隔离
      • 第18章 Calico网络深度解析
      • 第19章 Cilium与eBPF网络
    • 网络架构

      • 第20章 网络设备与拓扑设计
      • 第21章 网络容量规划与计算
      • 第22章 负载均衡架构设计
      • 第23章 高可用网络架构
      • 第24章 网络安全架构
    • 性能调优

      • 第25章 系统级网络调优
      • 第26章 故障排查方法论
      • 第27章 生产环境案例分析
    • 前沿技术

      • 第28章 eBPF深度实践
      • 第29章 ServiceMesh与边车代理
      • 第30章 网络技术趋势与未来展望
    • 附录

      • 附录A:命令速查手册
      • 附录B:排错决策树
      • 附录C:学习资源
      • 附录D:技能图谱

第26章 故障排查方法论

学习目标

  • 掌握系统性的网络故障排查方法
  • 了解常见网络问题的诊断流程
  • 掌握故障排查工具的使用
  • 能够快速定位和解决网络问题

前置知识

  • 第25章:系统级调优
  • 第8章:Netfilter与防火墙
  • 第15章:kube-proxy与Service

26.1 故障排查方法论

26.1.1 四象限排查法

1. 完全不可达

  • 检查物理连接
  • 检查网络配置
  • 检查路由表
  • 检查防火墙规则

2. 间歇性问题

  • 检查网络稳定性
  • 检查负载均衡
  • 检查超时设置
  • 检查重试机制

3. 高延迟问题

  • 检查网络路径
  • 检查拥塞控制
  • 检查缓冲区设置
  • 检查硬件性能

4. 低吞吐量问题

  • 检查带宽限制
  • 检查CPU使用率
  • 检查内存使用率
  • 检查网络优化

26.1.2 分层排查法

1. 物理层

  • 检查网线连接
  • 检查网卡状态
  • 检查交换机端口
  • 检查光模块状态

2. 数据链路层

  • 检查MAC地址
  • 检查VLAN配置
  • 检查STP状态
  • 检查链路聚合

3. 网络层

  • 检查IP地址
  • 检查路由表
  • 检查ARP表
  • 检查ICMP

4. 传输层

  • 检查端口状态
  • 检查连接状态
  • 检查TCP参数
  • 检查UDP配置

5. 应用层

  • 检查服务状态
  • 检查配置文件
  • 检查日志文件
  • 检查权限设置

26.2 常见网络问题

26.2.1 连通性问题

1. 完全不通

# 检查物理连接
ping 192.168.1.1

# 检查网卡状态
ip link show
ethtool eth0

# 检查IP配置
ip addr show
ip route show

# 检查ARP表
arp -a
ip neigh show

2. 部分不通

# 检查路由表
ip route show
traceroute 192.168.1.1

# 检查防火墙
iptables -L -n
ufw status

# 检查网络策略
kubectl get networkpolicy

26.2.2 性能问题

1. 延迟高

# 检查网络延迟
ping -c 100 8.8.8.8
mtr 8.8.8.8

# 检查网络路径
traceroute 8.8.8.8

# 检查网络队列
tc -s qdisc show dev eth0

2. 吞吐量低

# 检查带宽使用
iftop -i eth0
nload eth0

# 检查网卡状态
ethtool eth0
ethtool -S eth0

# 检查CPU使用率
top
htop

26.2.3 稳定性问题

1. 间歇性中断

# 检查网络稳定性
ping -c 1000 8.8.8.8

# 检查网络统计
cat /proc/net/dev
cat /proc/net/snmp

# 检查错误统计
ethtool -S eth0 | grep -i error

2. 连接超时

# 检查连接超时
timeout 10 telnet 192.168.1.1 80

# 检查TCP参数
cat /proc/sys/net/ipv4/tcp_keepalive_time
cat /proc/sys/net/ipv4/tcp_keepalive_intvl

# 检查连接状态
ss -tuln
netstat -tuln

26.3 故障排查工具

26.3.1 基础工具

1. ping

# 基本ping
ping 192.168.1.1

# 连续ping
ping -c 100 192.168.1.1

# 指定间隔
ping -i 0.1 192.168.1.1

# 指定大小
ping -s 1472 192.168.1.1

2. traceroute

# 基本traceroute
traceroute 8.8.8.8

# 指定协议
traceroute -T 8.8.8.8
traceroute -U 8.8.8.8

# 指定端口
traceroute -p 80 8.8.8.8

3. mtr

# 基本mtr
mtr 8.8.8.8

# 指定报告次数
mtr -c 100 8.8.8.8

# 指定间隔
mtr -i 0.1 8.8.8.8

26.3.2 高级工具

1. tcpdump

# 基本抓包
tcpdump -i eth0

# 指定主机
tcpdump -i eth0 host 192.168.1.1

# 指定端口
tcpdump -i eth0 port 80

# 指定协议
tcpdump -i eth0 tcp
tcpdump -i eth0 udp

# 保存到文件
tcpdump -i eth0 -w capture.pcap

2. wireshark

# 使用wireshark分析
wireshark capture.pcap

# 命令行分析
tshark -r capture.pcap
tshark -r capture.pcap -T fields -e ip.src -e ip.dst

3. netstat/ss

# 查看连接
netstat -tuln
ss -tuln

# 查看监听端口
netstat -tlnp
ss -tlnp

# 查看连接状态
netstat -an | grep ESTAB
ss -an | grep ESTAB

26.3.3 专业工具

1. iperf3

# 服务器端
iperf3 -s

# 客户端
iperf3 -c server-ip
iperf3 -c server-ip -t 60 -i 10
iperf3 -c server-ip -P 4

2. nmap

# 端口扫描
nmap -sS 192.168.1.1
nmap -sU 192.168.1.1
nmap -sT 192.168.1.1

# 服务识别
nmap -sV 192.168.1.1

# 操作系统识别
nmap -O 192.168.1.1

3. hping3

# TCP扫描
hping3 -S 192.168.1.1 -p 80

# UDP扫描
hping3 -2 192.168.1.1 -p 53

# ICMP扫描
hping3 -1 192.168.1.1

26.4 故障排查流程

26.4.1 问题确认

1. 问题描述

  • 什么时间发生的问题
  • 影响范围有多大
  • 问题现象是什么
  • 是否有错误信息

2. 影响评估

  • 业务影响程度
  • 用户影响范围
  • 紧急程度评估
  • 恢复时间要求

26.4.2 信息收集

1. 系统信息

# 系统版本
uname -a
cat /etc/os-release

# 内核版本
cat /proc/version

# 硬件信息
lscpu
free -h
df -h

2. 网络信息

# 网络配置
ip addr show
ip route show
ip neigh show

# 网络统计
cat /proc/net/dev
cat /proc/net/snmp

# 网络连接
ss -tuln
netstat -tuln

3. 服务信息

# 服务状态
systemctl status nginx
systemctl status apache2

# 进程信息
ps aux | grep nginx
ps aux | grep apache2

# 端口监听
ss -tlnp | grep :80
ss -tlnp | grep :443

26.4.3 问题分析

1. 日志分析

# 系统日志
journalctl -u nginx
journalctl -u apache2

# 应用日志
tail -f /var/log/nginx/error.log
tail -f /var/log/apache2/error.log

# 网络日志
tail -f /var/log/syslog | grep network

2. 性能分析

# CPU使用率
top
htop

# 内存使用率
free -h
cat /proc/meminfo

# 磁盘使用率
df -h
iostat -x 1

# 网络使用率
iftop -i eth0
nload eth0

26.4.4 问题解决

1. 临时解决

  • 重启服务
  • 调整配置
  • 增加资源
  • 切换备用

2. 根本解决

  • 修复配置
  • 升级软件
  • 更换硬件
  • 优化架构

26.5 故障预防

26.5.1 监控告警

1. 基础监控

# 系统监控
htop
iotop
nethogs

# 网络监控
iftop
nload
bmon

# 服务监控
systemctl status nginx
systemctl status apache2

2. 专业监控

# 使用Prometheus
# 使用Grafana
# 使用Zabbix
# 使用Nagios

26.5.2 定期检查

1. 日常检查

  • 服务状态检查
  • 资源使用检查
  • 日志检查
  • 性能检查

2. 定期维护

  • 系统更新
  • 配置备份
  • 日志清理
  • 性能优化

26.6 故障记录

26.6.1 故障报告

1. 故障描述

  • 故障时间
  • 故障现象
  • 影响范围
  • 错误信息

2. 排查过程

  • 排查步骤
  • 使用工具
  • 发现信息
  • 分析结果

3. 解决方案

  • 临时方案
  • 根本方案
  • 预防措施
  • 经验总结

26.6.2 知识库

1. 常见问题

  • 问题分类
  • 解决方案
  • 预防措施
  • 相关文档

2. 最佳实践

  • 配置模板
  • 检查清单
  • 操作手册
  • 故障预案

26.7 排错清单

26.7.1 基础检查

  • [ ] 物理连接是否正常
  • [ ] 网络配置是否正确
  • [ ] 服务是否运行
  • [ ] 端口是否监听
  • [ ] 防火墙是否阻止

26.7.2 性能检查

  • [ ] CPU使用率是否正常
  • [ ] 内存使用率是否正常
  • [ ] 磁盘使用率是否正常
  • [ ] 网络使用率是否正常
  • [ ] 响应时间是否正常

26.7.3 安全检查

  • [ ] 访问控制是否正确
  • [ ] 认证是否正常
  • [ ] 加密是否启用
  • [ ] 日志是否正常
  • [ ] 监控是否正常

26.8 延伸阅读

  • Network Troubleshooting Guide
  • Linux Network Administration
  • Network Performance Tuning
  • Troubleshooting Methodology

下一章:第27章 案例分析

返回目录:README

Prev
第25章 系统级网络调优
Next
第27章 生产环境案例分析