在生产环境中遇到一个奇怪的问题,其中跟踪路由仅显示最后一跳,输出如下所示,
***
***
***
***
***
***
dns.google [8.8.8.8] 10/10/11ms
任何目的地都是同样的情况。尝试了 Linux 和 Windows 跟踪路由。
有一个只有特定人员才能访问的防火墙,但我不确定如何限制 traceroute 仅显示任何目的地的最后一跳。
任何建议都值得赞赏
谢谢
答案1
Traceroute 通过使用 ICMP 和字段“TTL”(生存时间)来工作。
它首先将 TTL 字段设置为“1”,然后第一个路由器在收到数据包时将该字段减一。由于该字段为“0”,因此它不会将数据包路由到其目的地。而是向源系统发送一个答复,通知它数据包的 TTL 已过期。
Traceroute 得到这个答案知道第一个路由器的ip地址...
然后 traceroute 发送一个 TTL 字段为“2”的新数据包来查找第二个路由器的 IP 地址。
当TTL达到0时,路由器发送的答案是ICMP数据包,更准确地说是“ICMP过期数据包”
防火墙可以配置为阻止特定类型的 ICMP 数据包。就你的情况而言,管理员可能会阻止“ICMP TTL 过期数据包”。
但是你可以看到最后一跳(目的地)。这可能意味着最终目标发送的正常 ICMP 应答(当 TTL 未过期时)不会被防火墙阻止
您可以在维基百科页面上找到不同类型的 ICMP 数据包: https://en.wikipedia.org/wiki/Internet_Control_Message_Protocol