找出哪个DNS服务器回答您的查询

我有一个看似简单的问题,但经过一番search找不到正确答案。
我知道,如果我想查找一些域名的IP地址,我input,例如:

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 

但是,我不知道我从哪里得到这个答案。 就我所知,起初我的parsing器试图问我的本地DNS服务器(在Ubuntu的dnsmasq上),如果那个没有答案,它会询问下一个服务器,等等。 但是我想知道到底什么确切的服务器有答案。 那可能吗?
我也试过了

 dig +trace www.google.com 

它提供有关发布的服务器的所有信息,但执行完全迭代查找。 我基本上喜欢这样的答案,但有一个正常的查找。

看到这个https://stackoverflow.com/questions/38021/how-do-i-find-the-authoritative-name-server-for-a-domain-name

简而言之,nslookup将查询types设置为SOA

单线:

  nslookup -querytype=soa google.de nslookup -d2 -type=ANY google.de nslookup -d2 -type=ANY google.de 8.8.8.8 

寻找: 主要的名字服务器

 command line> nslookup > set querytype=soa > google.de Server: google-public-dns-a.google.com Address: 8.8.8.8 Non-authoritative answer: google.de primary name server = ns2.google.com responsible mail addr = dns-admin.google.com serial = 160093636 refresh = 900 (15 mins) retry = 900 (15 mins) expire = 1800 (30 mins) default TTL = 60 (1 min) 

>

编辑:

我被告知SOAlogging可能不是最好的方法。 甚至可能无法正确设置。 所以,NSlogging本来是一个更好的select:

nameserver服务器在哪里

  nslookup -type=NS google.de 

或者用大量的debugging信息来查找nameserver

  nslookup -d2 -type=NS google.de 

我想知道到底什么确切的服务器有答案。 那可能吗?

这是不可能的。 您不会在DNS答复的有效负载中的任何地方find指定的具有授权的服务器。 有CHAOS查询是为了识别回复给您的特定recursion服务器而存在的,但是没有这样的等价物来提取recursor从中获取数据的确切权威服务器的名称。

Phillip链接的StackOverflow问答提供了有关如何识别recursionDNS响应的权威部分中存在的NSlogging列表的说明。 这是服务器的完整列表,而不是特定的服务器。 即使对于您的使用来说也足够了,这些信息被DNS标准认为是可选的,为了减less内部来源的reflection攻击的有效负载,在recursion响应中看到这种信息的情况越来越less见。

如果您知道该区域的名称,则可以通过明确的请求来请求NSlogging的完整列表。 这就要求知道你在这个区域的最高点。 对example.com NSlogging的请求将返回所需的响应,但www.example.com不会,除非将www委托给另一组服务器。 在这种情况下,你别无select,只能反复工作,直到发现区域的顶点。

长话短说,没有可靠的短path(即单个查询)从recursion服务器获取关于所有上游权限的信息,并且没有办法学习响应查询的特定权威服务器而不控制授权服务器,在每台服务器上创build唯一的数据 (如果你这样做,请为此创build一个独特的区域,这样它就不会干扰你的敏感的生产区域转移)

在默认回复中使用dig ,您将拥有应答名称服务器的IP,该名称服务器应该是系统中configuration的recursion名称服务器(通常为/etc/resolv.conf )。