ping 和 traceroute 是 linux 下用于网络连通性与路径诊断的基础工具:ping 验证目标可达性及延迟,traceroute 定位中断节点;需结合 -c、-i、-i 等选项及 mtr、tracepath 等替代命令综合排查。

ping 和 traceroute 是 Linux 下最基础、最常用的网络连通性与路径诊断工具。它们不依赖复杂配置,能快速判断目标是否可达、延迟是否异常、中间哪一跳出现丢包或超时。
用 ping 检查基础连通性与延迟
ping 通过发送 ICMP echo Request 报文并等待回应,验证目标主机是否在线及往返时间(RTT)。
- 基本用法:ping example.com 或 ping 192.168.1.1,默认持续发送,按 Ctrl+C 停止
- 限制次数:ping -c 4 example.com 发送 4 次后自动退出,适合脚本调用
- 指定源地址:ping -I eth0 8.8.8.8 强制从 eth0 接口发出,用于多网卡环境排查
- 关注输出中的 time=xx.x ms(延迟)、64 bytes from…(收到响应)、Request timeout(无响应)和最终的统计摘要(如 packet loss)
用 traceroute 定位网络中断点
traceroute 显示数据包从本地到目标所经过的每一跳路由器,帮助识别延迟突增或完全不通的具体节点。
- 基本用法:traceroute example.com(部分系统需安装 traceroute 包)
- 替代方案:mtr example.com 是 traceroute + ping 的实时组合,更适合持续观察(按 q 退出)
- 常见现象解读:
– 连续出现 *:该跳不响应 ICMP TTL 超时,可能是防火墙屏蔽或设备禁 ping
– 某跳后全部超时:问题大概率出在该跳或其下游
– 某跳延迟突然升高(如从 10ms 跳到 300ms):该节点存在拥塞或性能瓶颈
注意权限与替代命令
某些系统中普通用户无法使用原始套接字,导致 traceroute 默认走 udp 模式(端口递增),可能被中间设备拦截。此时可:
- 改用基于 ICMP 的模式:traceroute -I example.com
- 使用更现代的 tracepath(无需 root,内核原生支持,显示 MTU 信息)
- 确认目标未禁 ping:有些服务器会丢弃 ICMP 请求,此时 ping 不通不代表 TCP 服务(如 http)不可达,应配合 telnet example.com 80 或 nc -zv example.com 443 测试端口
简单组合排查流程
遇到“网站打不开”类问题,建议按顺序执行:
- ping 网关(如 ping 192.168.1.1)→ 验证本地局域网是否正常
- ping 公共 DNS(如 ping 8.8.8.8)→ 判断能否出公网
- ping 域名(如 ping google.com)→ 检查 DNS 解析是否生效
- traceroute 域名 → 若第 2 步通但第 3 步不通,重点看 DNS 解析环节;若第 2 步已失败,则 traceroute 8.8.8.8 可定位出口前的问题节点