Linux网络故障排查流程

描述

Linux网络故障排查:从ping到traceroute的诊断流程

"网络又断了!" 作为运维工程师,这句话是不是很熟悉?当用户报告网络问题时,你的第一反应是什么?慌张?还是胸有成竹地打开终端?

今天分享一套系统化的网络故障排查流程,让你从"网络小白"进阶为"网络诊断专家"。

故障现象识别

网络故障通常表现为以下几种症状:

• 网站无法访问

• 应用响应缓慢

• 间歇性连接中断

• 数据传输超时

关键问题:如何快速定位问题根源?

标准化诊断流程

第一步:基础连通性检查(ping命令)

 

# 检查本地回环
ping 127.0.0.1

# 检查网关连通性  
ping $(ip route | grep default | awk '{print $3}')

# 检查DNS解析
ping baidu.com
ping 8.8.8.8

 

诊断要点

• 丢包率超过5%需要关注

• 延迟超过100ms可能存在网络拥塞

• 无法ping通网关说明本地网络配置有问题

第二步:路由路径分析(traceroute)

 

# Linux系统
traceroute google.com

# 如果traceroute不可用,使用mtr
mtr --report --report-cycles 10 google.com

 

输出解读技巧

 

traceroute to google.com (142.250.191.14), 30 hops max, 60 byte packets
 1  192.168.1.1 (192.168.1.1)  1.234 ms  1.123 ms  1.456 ms
 2  10.0.0.1 (10.0.0.1)  15.678 ms  16.789 ms  17.234 ms
 3  * * *  (请求超时)
 4  8.8.8.8 (8.8.8.8)  45.123 ms  44.567 ms  43.890 ms

 

• 第3跳出现星号:可能是防火墙阻止ICMP或设备故障

• 延迟突然增大:该节点可能存在拥塞

• 某一跳持续超时:重点排查该网络设备

第三步:端口连通性测试

 

# 检查特定端口
telnet target-host 80
nc -zv target-host 443

# 批量端口扫描
nmap -p 80,443,22,3306 target-host

 

第四步:DNS解析验证

 

# 查看DNS配置
cat /etc/resolv.conf

# 手动DNS查询
nslookup example.com
dig example.com

# 查看域名解析过程
dig +trace example.com

 

常见DNS问题

• 解析超时:DNS服务器响应慢

• NXDOMAIN:域名不存在

• 解析结果错误:DNS污染或配置错误

高级诊断技巧

网络接口状态检查

 

# 查看网络接口状态
ip addr show
ip link show

# 检查网络统计信息
cat /proc/net/dev
ss -tuln  # 查看监听端口

 

防火墙规则排查

 

# iptables规则检查
iptables -L -n -v

# 查看连接跟踪
cat /proc/net/nf_conntrack | grep target-ip

 

路由表分析

 

# 查看路由表
ip route show
route -n

# 添加临时路由测试
ip route add target-network via gateway-ip

 

实战案例分析

案例1:Web服务访问缓慢

症状:用户反馈网站打开很慢

排查步骤

1. ping web-server - 延迟正常

2. telnet web-server 80 - 连接成功但响应慢

3. ss -tuln | grep :80 - 发现大量CLOSE_WAIT状态连接

结论:应用层问题,需要优化Web服务器配置

案例2:间歇性网络中断

症状:每隔几分钟网络就断一次

排查步骤

1. mtr --report target-host - 发现某一跳丢包率30%

2. traceroute -I target-host - 使用ICMP协议测试

3. 联系ISP确认链路状态

结论:运营商链路不稳定

效率提升工具

自动化诊断脚本

 

#!/bin/bash
# network-check.sh
TARGET=${1:-"8.8.8.8"}

echo"=== 网络诊断报告 ==="
echo"目标地址: $TARGET"
echo"检查时间: $(date)"
echo

echo"1. 基础连通性测试:"
ping -c 4 $TARGET

echo -e "
2. 路由路径分析:"
traceroute $TARGET

echo -e "
3. DNS解析测试:"
nslookup $TARGET

echo -e "
4. 本地网络配置:"
ip addr show | grep -A 2 "state UP"

 

监控告警设置

 

# 使用watch持续监控
watch -n 5 'ping -c 1 critical-server && echo "OK" || echo "FAILED"'

# 结合zabbix或prometheus进行自动化监控

 

最佳实践建议

1. 建立标准化流程

• 制定详细的故障排查SOP

• 记录常见问题的解决方案

• 建立故障处理知识库

2. 工具箱准备

 

# 必备网络工具安装
yum install -y net-tools traceroute telnet nmap mtr
# 或者在Ubuntu/Debian上
apt-get install -y net-tools traceroute telnet nmap mtr

 

3. 日志分析习惯

 

# 系统日志检查
tail -f /var/log/messages | grep -i network
journalctl -u NetworkManager -f

# 网络相关日志
dmesg | grep -i network

 

4. 性能基线建立

• 记录正常情况下的网络指标

• 定期进行网络性能测试

• 建立告警阈值

故障预防策略

网络健康检查清单

• 定期检查网络设备状态

• 监控带宽使用率

• 检查DNS解析性能

• 验证备用链路可用性

• 更新网络设备固件

自动化监控脚本

 

#!/bin/bash
# daily-network-check.sh
HOSTS=("8.8.8.8""114.114.114.114""your-critical-server.com")
LOG_FILE="/var/log/network-health.log"

for host in"${HOSTS[@]}"; do
    if ping -c 3 $host > /dev/null 2>&1; then
        echo"$(date): $host - OK" >> $LOG_FILE
    else
        echo"$(date): $host - FAILED" >> $LOG_FILE
        # 发送告警邮件或短信
        echo"$host is unreachable" | mail -s "Network Alert" admin@company.com
    fi
done

 

深入学习资源

推荐工具进阶

• Wireshark:数据包分析神器

• iftop:实时流量监控

• nethogs:按进程显示网络使用情况

• tcpdump:命令行抓包工具

学习路径建议

1. 掌握TCP/IP协议栈基础

2. 熟悉Linux网络配置

3. 学习网络安全基础

4. 实践自动化运维

总结

网络故障排查是运维工程师的核心技能之一。通过标准化的诊断流程:

ping → traceroute → 端口测试 → DNS验证 → 深入分析

你可以快速定位大部分网络问题。记住,工具只是手段,思路才是关键

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分