Linux 常见的网络排查工具:从连通性到抓包,一次讲清
Linux 常见的网络排查工具:从连通性到抓包,一次讲清
服务器连不上、接口超时、域名解析失败,十次有九次是网络问题。Linux 上排查网络有一套固定的工具组合,按“本机 → 连通性 → DNS → 端口 → 抓包 → 性能”这个顺序走,大部分问题半小时内就能定位。
一、先看本机:ip addr、ip route
出问题先确认本机网络配置对不对,别一上来就怪对端。
ip addr show # 看网卡、IP 地址、状态是不是 UP
ip route show # 看默认路由指向哪个网关
ip addr 里没有 IP,或者默认路由缺失,先检查网卡和 DHCP;有 IP 但 ping 不通网关,再往下查。
二、连通性:ping、traceroute、mtr
ping 是最基础的连通性测试,-c 控制次数,-M do -s 1472 可以顺带测 MTU:
ping -c 4 8.8.8.8
ping -c 4 -M do -s 1472 目标IP # 大包不通可能是 MTU 问题
ping 通但业务不通,或者时通时断,用 traceroute 看路径上哪一跳开始丢包:
traceroute 目标域名
想持续观察就用 mtr,它是 ping + traceroute 的结合体,实时显示每一跳的丢包率和延迟,定位抖动和丢包点最直观:
mtr --report 目标域名
注意:有的云厂商和机房会禁 ICMP,ping 不通不等于网络不通,这时要结合 TCP 方式验证。
三、DNS:dig、nslookup
域名打不开先别急着重启服务,查 DNS:
dig example.com # 看 ANSWER 段有没有正确解析结果
dig @8.8.8.8 example.com # 指定 DNS 服务器,对比是不是本地 DNS 的问题
nslookup example.com
dig 没返回结果,检查 /etc/resolv.conf 里的 DNS 配置;指定 8.8.8.8 能解析、默认 DNS 不能解析,问题就在本地 DNS 或运营商劫持。
四、端口与服务:ss、nc、curl
服务起没起、端口通不通,用 ss 看监听状态:
ss -tlnp # 看所有监听的 TCP 端口和对应进程
ss -tnp # 看当前 TCP 连接状态,TIME_WAIT 过多要留意
ss 是 netstat 的替代品,速度更快,输出也更清晰。确认端口在监听,再从客户端测连通性:
nc -vz 目标IP 80 # 测 TCP 端口通不通
curl -v http://目标地址 # 看 HTTP 请求走到哪一步,DNS、建连、TLS 各阶段一目了然
curl -o /dev/null -s -w "DNS:%{time_namelookup} 建连:%{time_connect} 首包:%{time_starttransfer} 总耗时:%{time_total}\n" http://目标地址
上面这条 curl 能把一次请求的各阶段耗时拆开,接口慢到底是 DNS 慢、建连慢还是服务端慢,一眼就能分清。
五、抓包:tcpdump
前面都查不出原因,就抓包看真相:
tcpdump -i eth0 -nn host 目标IP and port 80 # 抓指定主机和端口
tcpdump -i eth0 -nn -c 100 -w /tmp/cap.pcap # 存成文件,用 Wireshark 细看
tcpdump -i eth0 port 53 # 只看 DNS 流量,查解析问题很方便
抓包的常见结论就几种:SYN 发出去没回包(对端或中间防火墙丢了)、RST 直接拒绝(端口没开或被拦截)、三次握手正常但应用层没响应(问题在服务本身)。
六、带宽与性能:iperf3、ethtool
怀疑带宽不够或网卡协商异常时:
iperf3 -s # 服务端
iperf3 -c 服务端IP # 客户端测实际带宽
ethtool eth0 # 看网卡速率、双工模式,百兆协商成 10M 就很可疑了
iperf3 测出来只有几 Mbps,先看 ethtool 的协商速率,再看是不是限速或共享带宽被占满。
七、一张排查流程
| 现象 | 先查 | 工具 |
|---|---|---|
| 完全不通 | 本机 IP、路由 | ip addr、ip route |
| 间歇丢包 | 路径逐跳 | mtr |
| 域名打不开 | DNS 解析 | dig、nslookup |
| 端口不通 | 监听、防火墙 | ss、nc |
| 接口慢 | 各阶段耗时 | curl -w |
| 原因不明 | 抓包 | tcpdump |
小结
网络排查的关键是分层定位:先确认本机,再确认链路,再确认 DNS 和端口,最后才抓包。工具本身不复杂,复杂的是每次都凭感觉乱试。按上面这个顺序走一遍,大多数网络问题都能在不重启服务的情况下找到根因。
- 点赞
- 收藏
- 关注作者
评论(0)