
网络故障是运维或测试工程师最常遇到的挑战之一。一次网络中断可能导致数万元的业务损失,而快速定位和解决问题的能力,往往决定了一个工程师的价值。本文将分享在企业环境中积累的网络故障排查经验,帮助你建立系统化的故障处理思路。
网络故障排查遵循OSI七层模型,从物理层到应用层逐层分析:
物理层 → 数据链路层 → 网络层 → 传输层 → 应用层
这种自下而上的排查方式,能够快速定位问题根源,避免在错误方向上浪费时间。
# 连通性测试
ping -c 4 目标IP
ping6 -c 4 目标IPv6
# 路由追踪
traceroute 目标IP
mtr --report --report-cycles 10 目标IP
# 端口连通性
telnet 目标IP 端口
nc -zv 目标IP 端口范围# 网络流量分析
tcpdump -i eth0 -w capture.pcap
wireshark # 图形化分析
# 网络统计
netstat -tulpn
ss -tulpn
lsof -i :端口号
# 系统资源监控
iotop # IO使用情况
iftop # 网络流量实时监控故障现象:
排查步骤:
# 查看IP配置
ip addr show
ip route show
# 检查DNS配置
cat /etc/resolv.conf
nslookup google.com# 获取默认网关
ip route | grep default
# 测试网关连通性
ping -c 4 网关IP# CentOS/RHEL
firewall-cmd --list-all
iptables -L -n
# Ubuntu
ufw status解决方案:
故障现象:
深度分析:
# 详细ping测试
ping -c 100 -i 0.1 目标IP
# 路由跳数分析
mtr --report --report-cycles 100 目标IP
# 网络质量测试
iperf3 -c 目标服务器性能优化:
# 调整TCP参数
echo'net.core.rmem_max = 16777216' >> /etc/sysctl.conf
echo'net.core.wmem_max = 16777216' >> /etc/sysctl.conf
sysctl -p故障现象:
排查流程:
# 确认服务监听状态
netstat -tlpn | grep :端口号
ss -tlpn | grep :端口号
# 检查监听地址
# 0.0.0.0 - 监听所有接口
# 127.0.0.1 - 仅监听本地回环
# 测试本地连接
telnet 127.0.0.1 端口号
curl -v http://127.0.0.1:端口号解决策略:
背景:生产环境中,应用服务器突然无法连接数据库
排查过程:
# 1. 基础连通性测试
ping 数据库IP
telnet 数据库IP 3306
# 2. 检查数据库服务状态
systemctl status mysql
netstat -tlpn | grep :3306
# 3. 查看错误日志
tail -f /var/log/mysql/error.log发现问题:数据库服务器连接数达到上限
解决方案:
# 临时解决
mysql -u root -p -e "SHOW PROCESSLIST;"
mysql -u root -p -e "KILL 连接ID;"
# 永久解决
vim /etc/mysql/mysql.conf.d/mysqld.cnf
max_connections = 1000问题描述:网站访问速度极慢,但直接访问IP正常
分析过程:
# DNS解析时间测试
time nslookup domain.com
# 测试不同DNS服务器
nslookup domain.com 8.8.8.8
nslookup domain.com 114.114.114.114
# 清除DNS缓存
systemctl restart systemd-resolved优化方案:
# 配置更快的DNS服务器
echo"nameserver 8.8.8.8" > /etc/resolv.conf
echo"nameserver 114.114.114.114" >> /etc/resolv.conf
# 启用DNS缓存
systemctl enable systemd-resolved# 捕获特定端口的数据包
tcpdump -i any -w debug.pcap port 80
# 分析HTTP请求
tcpdump -i eth0 -A -s 1024 port 80
# 过滤特定主机
tcpdump -i eth0 host 192.168.1.100# 网络接口统计
cat /proc/net/dev
ip -s link show
# 连接状态统计
ss -s
netstat -s#!/bin/bash
# 网络健康检查脚本
check_network() {
local target=$1
local port=$2
# 连通性检查
if ping -c 3 -W 2 $target &>/dev/null; then
echo"✅ $target 连通正常"
else
echo"❌ $target 连通异常"
return 1
fi
# 端口检查
if nc -z -w 3 $target$port &>/dev/null; then
echo"✅ $target:$port 端口正常"
else
echo"❌ $target:$port 端口异常"
return 1
fi
}
# 批量检查
check_network "192.168.1.1""22"
check_network "8.8.8.8""53"# 使用Zabbix监控网络状态
# 监控项目:
# - 网络接口流量
# - 连接数统计
# - 响应时间
# - 丢包率
# 设置告警阈值
# 延迟 > 100ms
# 丢包率 > 1%
# 连接数 > 80%网络故障排查是一门需要理论与实践相结合的技能。通过系统化的排查方法、合适的工具使用,以及丰富的实战经验,我们可以快速定位和解决各种网络问题。
记住,每一次故障都是学习的机会,建立自己的故障处理知识库,不断完善排查技能,这样才能在关键时刻发挥最大价值。
快捷导航网站 https://www.kjdaohang.com,近期发布大量AI实用工具、免费学习教程,欢迎PC端用户体验使用!


👇 点击下方关注公众号《测试开发技术》,访问testfather.cn获取测开学习路线、简历模板、面试真题、AI测试、AI 编程、自动化测试、测试开发资料教程等。