在内部,traceroute是如何以ip地址的主机名提出请求的?
我知道traceroute命令可以采用主机名或ip地址,但是当输入主机名时,主机名是用于每个渐进请求的主机名,还是traceroute对该主机名执行dns查找,然后对每个累进请求使用ip地址?
我正在尝试调试与我们的客户端的连接问题,这似乎是dns问题,但我不确定。
谢谢您抽时间见我。
发布于 2014-03-14 09:59:46
在内部,traceroute是如何以ip地址的主机名提出请求的?
与向主机名发出的所有网络请求一样,该名称被解析为IP,并且与端点的所有通信都严格通过IP。真的没有“通过主机名进行通信”这样的东西。
当输入主机名时,主机名是用于每个渐进请求的主机名,还是traceroute对该主机名执行dns查找,然后对每个渐进请求使用ip地址?
对于traceroute中的每一跳,它查找每个IP的PTR
记录。如果存在该记录,则在traceroute的输出中打印该记录。如果不存在PTR
记录,则打印IP。
我正在尝试调试与我们的客户端的连接问题,这似乎是dns问题,但我不确定。
如果是这样的话,traceroute不是一个很好的故障排除工具。试试dig
或nslookup
。
发布于 2014-03-14 10:05:22
第一步是确定问题的类型。使用nslookup或dig来测试DNS。如果这通过,那么这不是DNS问题,您可以继续使用tracert。
当您在Windows上使用tracert时,默认情况下,它将尝试对每个跳执行rDNS查找。您可以通过使用-d
开关来更改此行为。
发布于 2014-03-14 10:17:34
对你的traceroute命令执行一次命令。在strace输出中,您可以在很早的时候看到对libresolv的调用,这会导致获得一个ip地址。在此之后,您将看到中间跳正在获得,并通过IP地址在跳到每一块硬件上建立了网络连接。这表明主机名仅用于初始DNS查找:之后的所有操作都由IP地址完成。
https://serverfault.com/questions/582179
复制相似问题