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) 练习与自测#
- 使用
ping -s 1400 -M do验证到网关的MTU是否通畅。 - 对一个不可达的IP执行
traceroute -n,记录断点跳数并分析可能原因。 - 在本机启动一个简单HTTP服务(如
python3 -m http.server 8080),用ss -lntp找到监听进程,再用curl -I验证响应。 - 用
wget -c下载一个大文件,手动中断后继续,观察断点续传效果。
通过以上工具组合,可快速锁定故障在网络层、传输层还是应用层,从而为后续安全策略与性能优化提供依据。