网络相关工具使用
ping
ping google.com
返回的信息里会直接显示出 google.com 对应的 IP 地址。这也可以用来判断 DNS 解析是否正常。
Ping 通不代表一切
有一个误区需要注意:Ping 不通并不代表网站挂了。 很多服务器为了防攻击会在防火墙里设置 “禁 Ping”。这时候用 ping 会显示超时,但实际上用浏览器是可以正常打开网页的。
Ping 使用的是 ICMP 协议,工作在网络层;而网站服务(如网页、API)通常运行在传输层的 TCP 协议上。即使服务器不理会 Ping 信号,也会响应端口请求。
可以使用 curl 来测试端口连通性,curl 工作在应用层 (HTTP)
# 测试 80 端口(HTTP)
curl -I google.com
# 测试自定义端口
curl telnet://1.1.1.1:80
telnet
telnet 工作在传输层,使用格式:telnet [参数] [主机名/IP地址] [端口号]
telnet google.com 80
参数 说明
-4 强制使用 IPv4 地址。
-6 强制使用 IPv6 地址。
-l [user] 登录时指定用户名(多用于连接老式路由器)。
-a 尝试自动登录(将本地用户名传递给远程系统)。
-e [char] 设置转义字符(默认是 Ctrl + ])。
nc
nc 命令工作在传输层 (TCP/UDP),支持脚本调用
# -z 表示只扫描不发送数据,-v 表示详细模式
nc -zv google.com 443
traceroute
traceroute 不属于 Linux 内核的一部分,你需要手动安装它
# Ubuntu / Debian / Kali / Mint
sudo apt update
sudo apt install traceroute
# CentOS / RHEL / Fedora
sudo yum install traceroute
# 或者在较新版本使用
sudo dnf install traceroute
# 如果是极简版,可能需要先执行:sudo yum install net-tools
用法
直接输入命令加域名或 IP。这会显示路径上所有的路由器信息(包括域名解析)。
traceroute baidu.com
-n
这是最推荐的日常用法。-n 代表 "numeric"(数字),它不会尝试把 IP 转换成好记的名字。这能省去大量的等待时间,避免因为 DNS 解析慢导致的卡顿。
指定协议用法 (-I 或 -T)
有时候默认的 traceroute 全是星号 (* * *),是因为防火墙拦截了默认的 UDP 包。你可以尝试切换协议:
使用 Ping 协议 (ICMP): traceroute -I baidu.com

结果中,看到一行或几行 * * * 是非常普遍的现象。它代表“请求超时” (Request Timeout),即 traceroute 在规定的时间内没有收到该节点的任何回信。
具体来说,这通常由以下三个原因造成:
-
路由器配置了防火墙(最常见)
为了安全或减轻负担,许多互联网服务商(ISP)或公司的核心路由器会设置为“禁 Ping”或“禁止响应 ICMP/UDP 探测包”。
现象:中间某几跳是 * * *,但最后几跳又能显示出 IP。
结论:这通常不是故障。虽然它不回信,但它依然在帮你转发数据,只是隐藏了自己的身份。 -
网络在这一跳断了(真正的故障)
如果从某一行开始,后面所有的结果全都是 * * *,直到第 30 跳结束。
这说明网络在第 5 跳到第 6 跳之间彻底中断了,或者目标服务器宕机了。 -
返回路径不对称
traceroute 的原理是:你发一个包过去,对方回一个包过来。
原理:有时候包确实到达了该节点,但该节点在把回信传回给你时,走了一条完全不同的路径,而那条路径恰好堵塞或不通。这种情况下也只能看到星号。
使用网页协议 (TCP): (通常用于测试服务器 80 或 443 端口是否通畅):traceroute -T baidu.com
[root@localhost ~]# traceroute -T baidu.com
traceroute to baidu.com (111.63.65.103), 30 hops max, 60 byte packets
1 _gateway (192.168.65.2) 2.017 ms 1.853 ms 1.800 ms
2 111.63.65.103 (111.63.65.103) 101.808 ms 111.401 ms 111.437 ms
Windows 上的 traceroute: tracert
虽然功能一致,但 Windows 的命令名和参数有所不同:
| 功能 | Linux/macOS (traceroute) | Windows (tracert) |
|---|---|---|
| 不解析域名 | traceroute -n | tracert -d |
| 设置最大跳数 | -m 30 | -h 30 |
| 等待超时(ms) | -w 1.0 (秒) | -w 1000 (毫秒) |
| 指定源地址 | -s [IP] | -S [IP] |
mtr
很多系统会预装 mtr(My Traceroute)。它结合了 ping 和 traceroute 的优点,而且是动态实时刷新的。
与普通的 traceroute 只探测一次不同,mtr 会持续动态地更新每一跳的状态。可以实时看到网络延迟的波动(Jitter)和丢包率(Loss),是定位网络卡顿、间歇性断线、游戏延迟的工具。它能持续监测每一跳的丢包率和延迟波动,比 traceroute 只看一眼要精准得多。
执行mtr baidu.com后会进入一个交互式界面,数据会每秒自动刷新一次。

指标解释:
- Loss%: 最重要的指标。显示每一跳的丢包率。正常情况下应为 0%。
- Snt: 已发送的数据包总数。
- Last: 最近一次探测的延迟(ms)。
- Avg: 平均延迟。
- Best / Wrst: 探测过程中的最低和最高延迟。
- StDev: 标准偏差。数值越高,说明网络波动(抖动)越剧烈。
常用参数
- -n 最常用。不解析域名(只显示 IP),速度极快且不容易卡顿。
- -r (Report) 报告模式。不进入交互界面,探测一段时间后直接输出统计报告(适合发给运维)。
- -c [次数] 设置探测的包数。配合 -r 使用,例如 -c 10 表示发 10 个包后停止。
- -i [秒数] 设置探测间隔(默认 1 秒)。
- -T / -U 使用 TCP 或 UDP 协议探测,而不是默认的 ICMP。
- -P [端口] 配合 -T 使用,探测特定端口(如 443)。

浙公网安备 33010602011771号