1.8.6 网络与连接诊断(ping、traceroute、ss、netstat、curl、wget)

网络与连接诊断用于快速判断“是否通、到哪断、谁在听、服务是否可用”。本节围绕 ping、traceroute、ss、netstat、curl、wget 给出原理草图、安装、示例、排错与练习,确保可直接落地执行。

原理草图(分层定位思路)

文章图片

1) 工具安装与版本确认#

部分发行版默认缺少 traceroute/netstat:

# CentOS/RHEL
sudo yum install -y traceroute net-tools

# Ubuntu/Debian
sudo apt-get update
sudo apt-get install -y traceroute net-tools

# 版本确认
ping -V
traceroute -V
ss -V
netstat -V
curl -V
wget -V

2) ping:可达性与丢包/延迟#

作用:验证目标是否可达、延迟与抖动。
关键参数
- -c 次数
- -i 间隔
- -W 超时
- -s 包大小

示例:基础探测

ping -c 4 -i 0.2 -W 1 8.8.8.8
# 预期:返回4行应答,最后统计丢包率、平均延迟

示例:MTU/链路异常排查

# 发送更大包,验证是否存在MTU问题
ping -c 4 -s 1400 -M do 1.1.1.1
# 若出现 "Frag needed" 或全丢包,可能存在路径MTU问题

排错提示
- 全丢包:可能 ICMP 被禁用/防火墙阻断/目标宕机
- 高延迟/丢包:检查链路负载、路由拥塞、MTU


3) traceroute:路径与断点定位#

作用:查看到目标的每一跳路由与延迟。
关键参数
- -n 不解析域名
- -m 最大跳数
- -w 超时
- -I 使用 ICMP(部分环境更通)

示例:定位中断

traceroute -n -m 20 -w 1 114.114.114.114
# 预期:每跳显示IP与延迟,出现 * 可能被过滤或超时

示例:ICMP模式

traceroute -I -n 8.8.8.8
# 预期:可减少UDP被屏蔽的影响

排错提示
- 连续 * * *:可能中间路由禁用探测或到此断路
- 跳数突增或延迟异常:检查链路绕路或路由策略问题


4) ss:端口与连接诊断(推荐)#

作用:查看监听端口、连接状态、进程映射。
关键参数
- -l 监听
- -n 数字显示
- -t/-u TCP/UDP
- -p 进程
- state 过滤连接状态

示例:确认服务是否监听

ss -lntp
# 预期:显示LISTEN端口与进程,如 0.0.0.0:80 nginx

示例:查看已建立连接

ss -ant state established
# 预期:显示ESTAB连接数量与对端IP

示例:统计连接

ss -s
# 预期:TCP/UDP连接统计,观察TIME-WAIT过多等

排错提示
- LISTEN不存在:服务未启动或绑定到错误IP
- TIME-WAIT过多:检查短连接、客户端重试、负载均衡策略


5) netstat:兼容性查看(旧系统常用)#

示例:监听端口与路由

netstat -lntp
netstat -rn
# 预期:列出监听端口与路由表

迁移建议:新系统尽量使用 ss,性能更好。


6) curl:应用层接口验证#

作用:验证HTTP/HTTPS接口、证书、响应时间。
关键参数
- -I 只取响应头
- -v 详细请求
- -m 超时
- -H 添加头
- -X 方法
- -w 输出耗时指标

示例:快速检查服务

curl -I -m 3 https://example.com
# 预期:返回HTTP状态码与响应头

示例:POST接口与耗时

curl -X POST -H 'Content-Type: application/json' \
  -d '{"ping":"ok"}' -m 5 -w '\nTTFB:%{time_starttransfer}s TOTAL:%{time_total}s\n' \
  http://127.0.0.1:8080/api/health
# 预期:返回JSON及耗时指标

排错提示
- 连接超时:确认端口监听、路由是否可达
- TLS错误:检查证书链、SNI、系统时间


7) wget:下载与稳定性验证#

作用:文件下载、镜像拉取、断点续传。
关键参数
- -O 输出文件
- -c 断点续传
- -q 静默
- -r -np 递归下载

示例:断点续传

wget -c -O /tmp/test.iso https://example.com/test.iso
# 预期:中断后可继续下载

示例:镜像站连通性

wget -q --spider https://mirrors.example.com/ && echo "OK" || echo "FAIL"
# 预期:OK 表示可访问

排错提示
- 速度慢:排查DNS、出口带宽、镜像源近似度
- 断续失败:检查代理/网关限制与磁盘空间


8) 综合排错流程(可执行清单)#

# 1) 基础可达性
ping -c 3 192.168.1.10

# 2) 路径断点
traceroute -n 192.168.1.10

# 3) 端口是否监听
ss -lntp | grep ':8080'

# 4) 应用层验证
curl -I -m 3 http://192.168.1.10:8080/health

# 5) 大文件/稳定性
wget -c -O /tmp/large.bin http://192.168.1.10:8080/large.bin

9) 练习与自测#

  1. 使用 ping -s 1400 -M do 验证到网关的MTU是否通畅。
  2. 对一个不可达的IP执行 traceroute -n,记录断点跳数并分析可能原因。
  3. 在本机启动一个简单HTTP服务(如 python3 -m http.server 8080),用 ss -lntp 找到监听进程,再用 curl -I 验证响应。
  4. wget -c 下载一个大文件,手动中断后继续,观察断点续传效果。

通过以上工具组合,可快速锁定故障在网络层、传输层还是应用层,从而为后续安全策略与性能优化提供依据。