第26章 故障排查方法论
学习目标
- 掌握系统性的网络故障排查方法
- 了解常见网络问题的诊断流程
- 掌握故障排查工具的使用
- 能够快速定位和解决网络问题
前置知识
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