号主:老杨丨11年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部
晚上好,我的网工朋友。
网络的稳定性和可靠性对于业务连续性至关重要。当涉及到网络连接问题时,有一个强大的工具就是 traceroute 命令。
traceroute 是一个用于跟踪数据包从源主机到目标主机所经过的路径的强大工具。
它可以帮助我们了解数据包在网络中的传播方式,从而诊断连接问题、定位网络瓶颈、发现潜在的安全漏洞等。
今天就来讲讲traceroute 命令,怎么用好traceroute 命令。
今日文章阅读福利:《 网络工程师基本配置命令大全 》
不管心态如何变化,技术依旧是自己手里最有力的武器。私信发送暗号“配置命令”,即可获取技术之路一把好武器。
01 traceroute概述
traceroute 是一个用于跟踪数据包从源主机到目标主机所经过路径的网络诊断工具。
通过发送一系列带有递增生存时间(Time to Live, TTL)值的数据包到目标主机,traceroute 能够揭示数据包在网络中的传播路径,这有助于网络工程师诊断网络问题和了解网络结构。
01 工作原理
traceroute 的工作原理基于ICMP(Internet Control Message Protocol)协议。当数据包到达某个路由器时,如果该路由器检测到数据包的TTL值为0,则会向发送方返回一个ICMP超时消息,并丢弃该数据包。发送方可以根据这些超时消息来确定数据包经过的每个路由器。
初始化: traceroute 从源主机开始,发送一个带有最小TTL值(通常是1)的数据包到目标主机。
递增TTL: 每次发送新的数据包时,都会增加TTL值,直到达到目标主机。
超时消息: 当数据包到达一个路由器时,如果TTL值为0,路由器会向源主机发送一个ICMP超时消息。
记录路径: 源主机记录下这些超时消息中包含的路由器IP地址。
到达目标: 当数据包成功到达目标主机时,目标主机通常会响应一个ICMP回应请求或ICMP端口不可达消息,这表示数据包已经到达目的地。
02 基本步骤
01 启动 traceroute
要在命令行中启动 traceroute,您需要打开终端或命令提示符窗口,并输入以下命令:
Unix/Linux:
Windows (使用 tracert):
其中 <hostname or IP address> 是您想要追踪的目标主机的名称或IP地址。[options] 表示可选的命令行参数,我们将在后续章节中详细讨论。
02 输出的基本格式
跳数:每一行代表一个跳数(hop),即数据包经过的一个路由器。
星号 (*):如果 traceroute 收不到任何回应,通常会显示星号表示超时。
IP 地址:显示经过的路由器的IP地址。
域名:如果可能的话,traceroute 会尝试解析IP地址对应的域名。
往返时间 (RTT):从源主机到该路由器再返回的时间,以毫秒(ms)为单位。
如何解读 traceroute 输出
-
跳数 1:通常表示本地路由器或网关。
-
跳数 2:可能是ISP的边缘路由器。
-
跳数 3 及以上:这些通常是ISP之间的路由器,或者是目标网络的边缘路由器。
03 高级用法
01 指定最大跳数
默认情况下,traceroute 会追踪到目标主机或达到最大跳数为止。您可以使用 -m 或 --max-hop 参数来指定最大跳数,这对于避免不必要的超时或限制追踪范围非常有用。
Unix/Linux:
Windows:
例如,如果您想将最大跳数限制为 10:
Unix/Linux:
Windows:
02 设置不同的数据包大小
traceroute 默认使用的是较小的数据包,这可能会导致某些路由器不响应。通过增大数据包的大小,有时可以提高响应率。您可以使用 -l 或 --ttl-packet-size 参数来设置数据包的大小。
Unix/Linux:
Windows:
例如,如果您想将数据包大小设置为 1000 字节:
Unix/Linux:
Windows:
请注意,不是所有的操作系统都支持 -l 参数,有些系统可能需要使用 -b 参数来设置数据包大小。
03 使用 UDP 或其他协议进行追踪
默认情况下,traceroute 使用 ICMP 协议。但在某些情况下,您可能希望使用 UDP 或 TCP 进行追踪,特别是在调试特定的应用程序或服务时。
Unix/Linux:
Windows:
请注意,Windows 版本的 tracert 不支持使用 UDP 或 TCP 进行追踪。
04 过滤或排除特定路由器
有时候您可能需要绕过某些路由器,这可以通过使用 -w 参数来指定等待时间来实现,或者通过 -i 参数指定特定的接口来间接实现。
Unix/Linux:
Windows:
例如,如果您想将等待时间设置为 5 秒:
Unix/Linux:
Windows:
04 故障排除技巧
01 识别常见的网络问题
超时:当 traceroute 输出中出现连续的星号 (*) 时,这通常表示数据包在网络中的某处遇到了问题,如路由表配置错误或设备故障。
高延迟:如果某个跳数的往返时间(RTT)显著高于正常值,这可能是由于网络拥塞或设备性能问题。
路由循环:当 traceroute 的输出显示出数据包在两个或多个路由器之间来回跳转时,这表明存在路由循环问题。
不一致的路径:当从不同位置运行 traceroute 时,如果到达同一目标的路径不同,这可能是由于负载均衡或多条可用路径的存在。
使用 traceroute 来定位网络延迟的来源
如果您遇到网络延迟问题,可以使用 traceroute 来追踪延迟较高的跳数,从而定位问题所在。
例如,如果第 5 跳的 RTT 显著高于其他跳数,那么这可能是网络延迟的源头。您可以进一步调查该跳点的路由器配置和性能状态。
02 解决路由循环问题的方法
路由循环通常发生在路由器之间的路由表配置不正确时。如果您发现了路由循环问题,可以尝试以下方法:
-
检查路由表:确保所有路由器上的路由表配置正确,没有重复的路由条目。
-
更新路由协议:如果使用动态路由协议(如 OSPF 或 BGP),确保这些协议正确配置并且没有形成环路。
-
重启路由器:有时简单的重启可以解决暂时性的路由循环问题。
03 处理超时和其他错误消息
当 traceroute 返回超时或其他错误消息时,您可以尝试以下步骤:
-
检查网络连接:确保网络连接正常,没有物理层的问题。
-
使用备用路径:如果可能的话,尝试使用不同的路由器或接口来绕过疑似有问题的设备。
-
联系服务提供商:如果是ISP的问题,及时与服务提供商沟通,寻求技术支持。
原创:老杨丨11年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部