DNS 发出迭代请求

DNS 发出迭代请求

我想问是否可以在 Windows 或 Linux 上配置客户端以进行迭代查询而不是递归查询。

我只找到有关关闭 DNS 服务器上的递归的文章。

谢谢

答案1

我不知道迭代 DNS 查询是什么。

发送到 DNS 服务器的查询可能会设置“请求递归”标志。用人类的话来说,这就像是说“[东西] 的地址是什么,如果你不知道,请帮我查一下”。服务器可能会否认这一点,只返回“我不知道,也没问”的等价内容,或者它可能会回复“我问过,它是 [这个]”或“我问过,被告知它是 [这个]”,或者“我知道这个,它是 [这个],我实际上是该地址的权威。”

非递归查询只是“[东西]的地址是什么,但如果你不知道,就直接说出来”。服务器可能已经知道了上一个递归查询的答案并返回它,也可能不知道,但无论哪种方式它都不会反过来查询任何东西。

假设一个服务器(我们称之为 S)尊重递归请求,它将采用名称 - 例如“www.example.com” - 并从它具有信息的最右边的组件开始。

这可能什么都没有,在这种情况下,S 会将查询发送到根服务器,该根服务器的列表要么是缓存的,要么是作为硬编码或预配置列表给出的。其中一个根服务器将收到“www.example.com,请求递归”的请求;根服务器不会递归,但它们将返回它们所知道的下一个最佳信息:“.com”的名称服务器及其地址。
尝试运行dig www.google.com @c.root-servers.net

然后,S 向其中一个服务器询问“www.example.com,请求递归”。它们也不会递归,而是返回下一个最佳结果:“example.com”的名称服务器及其地址(再次跳过它们从哪里获得这些信息 - 查找“粘合记录”)。
尝试运行dig www.google.com @k.gtld-servers.net

然后 S 向其中一个服务器询问“www.example.com,请求递归”。他们不需要递归,因为他们知道答案,所以他们会将其连同“权威答案”标志一起发回。
尝试运行dig www.google.com @ns3.google.com(注意“aa”标志;这里是回复标志列表)。

然后,S 会将最终答案发回给客户端,但不带“aa”标志,因为 S 不具有权威性,即它必须询问。

在某些方面,“递归”查询由 S“迭代”处理。如果客户端想要直接执行此操作,则需要有一个预配置的根服务器列表(可以通过询问这些服务器来更新),并且它应该缓存结果以供其他本地程序重复使用。这基本上意味着您将在本地主机上运行递归、仅缓存(因为它对任何事情都不具有权威性)的名称服务器。

那么...你能解释一下你的问题吗?你认为你想做什么?

答案2

当你向服务器发送 DNS 请求时,你可以调至迭代模式。在此请求上,它将忽略 DNS 服务器的设置。

例如,您可以在 dig 或 nslookup 下尝试

dig +norecurse netpas.co

如果 DNS 服务器缓存了该记录,您将获得 A 记录。或者,获得下一步需要尝试哪个 DNS 服务器的建议。

相关内容