如何读取 Traceroute?
Traceroute 是一个 Linux 命令,用于网络诊断中,用于跟踪网络数据包在到达下一个主机时选择的路由,这条路由称为 hops,对于每一跳,Traceroute 命令可以给出数据包经过的路由的详细信息。
Traceroute 将提供有关数据包选择的到达目的地的路径的完整信息。
例如,如果一台机器(计算机)位于作为源的城市 A 中,而服务器位于作为目标的城市 B 中,则 Traceroute 将检索完整的路径——每一跳(涉及路由器、计算机和任何设备)涉及此网络流量)以及往返所需的时间。
Traceroute 有助于更好地了解网络流量通信,这将帮助用户,有时甚至是网络工程师识别网络相关问题,以及在某些情况下严重的安全漏洞,例如,Log4j 漏洞,目前在IT世界。
什么是 Log4j 漏洞?
Log4shell 或 LogJam 是一个远程代码执行类漏洞,如果它可以被其中一台服务器上的攻击者利用,他们可以获得任意代码并完全控制机器,因为该 IT 工程师建议将 Log4j 升级到最新版本如果不需要 Log4j,可以根据优先级进行补丁或优先级,然后用户可以将其完全卸载。
Traceroute的工作
Traceroute 借助由可变 TTL(生存时间)组成的 ICMP(Internet 控制消息协议)回显数据包来工作,并获得准确的值,每个跃点被多次查询并计算每个跃点的响应时间。
Traceroute 命令的工作是通过操作这些 TTL 值来执行的,TTL 值用于限制多长时间,这些 TTL 值分配给每个数据包,每当数据包在目标上进行一跳时,TTL 值减 1 . 这个 TTL 工作可以在下图中看到:
如何读取 Traceroute?
用户可以在他们的机器上使用 Traceroute 关键字以及他们想要测试以获取日志的网站名称执行 traceroute 命令。
这里Windows用户使用tracert关键字,Linux用户使用traceroute命令,windows用户在CMD终端执行该命令,Linux用户使用终端shell执行,
语法:
对于 Windows:
tracert server name or IP Address
对于 Linux:
traceroute server name or IP Address
让我们通过执行它们来查看 Traceroute 日志,这些日志是从 Linux 和 Windows 机器中为“ www.google.com ”提取的。
来自 Windows 机器的日志:
命令:
$tracert www.google.com
输出:
来自 Linux 机器的日志:
命令:
$traceroute www.google.com
输出:
正如我们可以看到从 Linux 和 Windows 机器中提取的 traceroute 日志,这里我们需要了解网络数据包在从源到达目的地之前会经过各个路由器,因此每当数据包转发到下一个路由器时,都会发生一跳,并且通常traceroute 命令获取最多 30 跳的结果,跳数越多表示网络连接速度越慢,而跳数越少表示访问速度越快。
在上述日志中,
- 第一行显示目标服务器的名称,后跟服务器的 IP 地址、允许的最大跳数以及传输的数据包的大小。
- 下一行显示,路由器在源和目标之间的路径中。
- 每行显示服务器的名称、IP 地址和 3 次往返时间 (RTT)(以毫秒为单位)。
什么是 RTT?
往返时间是一个时间常数,通过以下方式计算:
- 数据包从源到达目的地所花费的时间。
- 数据包从目的地返回到源需要时间。
此 RTT 以毫秒为单位计算,通常也称为延迟。默认情况下,每个路由发送 3 个数据包,因此我们在每个跃点中获得 3 个 RTT。
如何检查跳数?
跳数可以通过使用 Traceroute 命令来确定,正如上面所讨论的,用户首先进入他们机器中的命令终端,对于 windows 类型 tracert 和对于 Linux 类型 Traceroute 后跟服务器名称或 IP 地址。然后traceroute将显示最大30跳的日志,最后一跳将是跳数。
Traceroute 的限制:
Traceroute 最多只能在日志中报告 30 跳,理论上我们确实有一些限制,需要讨论:
1.在某些情况下,防火墙可以阻止源和目标之间的数据包,使跟踪路由达到最大跳数而没有任何结果,在这种情况下,日志将显示为星号而不是 IP 地址。
例如: $ traceroute google.com
traceroute to google.com (209.85.231.104), 30 hops max, 52 byte packets
1 * * *
2 * * *
3 * * *
4 * * *
2.使用负载平衡器的路由器可能使用多条路径进行数据包传输,并且跟踪路由日志在定义源和目标之间的路径时可能不准确。