Linux 网络故障排查:思路、工具与实战场景 - 夜莺博客

Linux 网络故障排查:思路、工具与实战场景

网络故障是运维工程师每天都要面对的挑战,一次中断可能造成数万元业务损失,快速定位问题的能力直接体现工程师的价值。本文整理企业环境中沉淀下来的 Linux 网络故障排查经验:先建立 OSI 分层排查思路,再掌握必备工具,最后通过四大高频故障场景的完整排查流程,帮你形成系统化的排障方法论。

故障排查的黄金法则:分层排查

网络故障排查遵循 OSI 七层模型,自下而上逐层分析:物理层 → 数据链路层 → 网络层 → 传输层 → 应用层。这种自下而上的方式能快速收敛问题范围,避免在错误方向上浪费时间——先确认链路通不通,再谈协议和服务。

必备工具箱

# 连通性测试
ping -c 4 目标IP
# 路由追踪(推荐 mtr 持续观察)
mtr --report --report-cycles 10 目标IP
# 端口连通性
nc -zv 目标IP 端口
# 网络统计
ss -tulpn
# 流量分析
tcpdump -i eth0 -w capture.pcap

场景 1:服务器无法连接外网

现象:内网通信正常,ping 不通外网 IP,域名解析失败。排查步骤:① ip addr showip route show 检查本地网络配置;② ip route | grep default 拿到网关后 ping -c 4 网关IP 验证网关连通性;③ 检查防火墙:CentOS/RHEL 用 firewall-cmd --list-all,Ubuntu 用 ufw status;④ 检查 DNS:cat /etc/resolv.confnslookup 验证解析。

场景 2:网络延迟异常

现象:连接超时、响应缓慢、丢包率高。深度分析ping -c 100 -i 0.1 目标IP 做细粒度丢包测试,mtr --report --report-cycles 100 定位丢包发生在哪一跳,iperf3 -c 目标服务器 测真实带宽。若确认是 TCP 缓冲区问题,可调整内核参数:net.core.rmem_max = 16777216net.core.wmem_max = 16777216sysctl -p 生效。

场景 3:端口无法访问

服务明明启动了却连不上端口?按顺序排查:① ss -tlpn | grep :端口号 确认监听状态和监听地址——0.0.0.0 监听所有接口,127.0.0.1 仅监听回环(这是最常见的坑);② telnet 127.0.0.1 端口号 本机测试;③ 检查 SELinux 策略和防火墙规则;④ 验证应用配置。

场景 4:DNS 解析缓慢

网站访问极慢但直接访问 IP 正常,基本就是 DNS 问题。time nslookup domain.com 测量解析耗时,对比 nslookup domain.com 8.8.8.8 与 114.114.114.114 的差异,必要时 systemctl restart systemd-resolved 清缓存、调整 resolv.conf 里的 nameserver 顺序。完整的分层排查流程可参考本站 Linux 网络故障排查分步指南,更多高频故障见 Linux 运维常见故障 33 个技巧,抓包实战见 tcpdump 抓包与 BPF 过滤器指南

原文链接:https://cloud.tencent.com/developer/article/2608669