我知道,如果我想查找某个域名的IP地址,我输入,例如:
nslookup google.de
得到
Server: 127.0.1.1 Address: 127.0.1.1#53 Non-authoritative answer: Name: google.de Address: 172.217.18.3
但是,我不知道从哪里得到这个答案.
据我所知,起初我的解析器试图询问我的本地DNS服务器(在Ubuntu dnsmasq上),如果那个没有答案,它会询问下一个服务器,依此类推.但我想知道最终确切的服务器有什么答案.那可能吗?
我也试过了
dig +trace www.google.com
它提供有关已发布服务器的所有信息,但执行完全迭代查找.我基本上喜欢这样的答案,但是看起来很正常.
解决方法
I want to know what exact server in the end had the answer. Is that possible?
这是不可能实现的.您将找不到在DNS回复的有效负载中的任何位置查询的特定权威服务器.存在CHAOS查询以识别回复给您的特定递归服务器,但是没有这样的等价物用于提取recursor从中获取数据的确切权威服务器的名称.
Phillip链接到的StackOverflow Q& A提供了有关如何识别递归DNS响应的授权部分中存在的NS记录列表的说明.这是服务器的完整列表,而不是特定的服务器.即使这对于您的使用来说已经足够了,DNS标准认为这些信息是可选的,并且为了减少内部源反射攻击的有效载荷大小,在递归响应中看到它变得越来越少.
如果您知道区域的名称,则可以通过对它们的明确请求来请求NS记录的完整列表.这需要知道你处于区域的顶点;对example.com NS记录的请求将返回所需的响应,但www.example.com不会,除非将www委托给另一组服务器.在这种情况下,您别无选择,只能迭代地向后工作,直到您发现区域的顶点.
简而言之,没有可靠的短路径(即单一查询)从递归服务器获取有关所有上游权限的信息,并且没有办法学习响应查询的特定权威服务器,而无需控制权威服务器和在每台服务器上创建唯一数据. (如果您这样做,请为此目的创建一个唯一的区域,以便它不会干扰您更灵敏的生产区域转移)