什么是“递归 DNS 查询”?

Lan*_*nes 15 dns

有人可以简短地解释一下“递归 DNS 查询”是什么意思以及它如何被认为是坏的

Sha*_*dur 26

TL;DR:递归查询是 Internet 和 DNS 工作方式的一部分,但并非所有 DNS 服务器都应该接收递归查询,当不应该响应的服务器确实响应时,您可能会遇到问题。

更长的版本:

递归,n:参见递归。

当您询问 unix.stackexchange.com 地址的 DNS 服务器本身不知道答案时,就会发生递归 DNS 查询,因此它必须与另一台服务器进行核对。

通常这实际上是 DNS 的工作方式——由于显而易见的原因,您的 ISP 的 DNS 服务器没有永久存储整个互联网的域记录,因此以下交换发生在幕后:

  1. 你:嘿,浏览器,给我看看http://unix.stackexchange.com

  2. 浏览器:当然!……嗯。我实际上不知道那是什么 IP 地址。

    嘿,操作系统,你能告诉我在哪里可以找到 unix.stackexchange.com 吗?

  3. 操作系统:当然...

    唔。它不在我自己的主机文件中。让我检查一下我的解析器配置...

    嘿,ISP的DNS服务器,你能告诉我在哪里可以找到unix.stackexchange.com吗?

  4. ISP 的 DNS 服务器:当然可以!

    ……嗯。那个不在我的权威域列表中,现在我没有缓存那个答案。

    嘿,互联网根服务器,你能告诉我谁是stackexchange.com的权威吗?

  5. Internet 根服务器:当然可以!根据我们的记录,您需要 ns1.serverfault.com、ns2.serverfault.com 或 ns3.serverfault.com。

  6. ISP 的 DNS 服务器:谢谢,互联网根服务器!

    你好,ns2.serverfault.com,你能告诉我在哪里可以找到 unix.stackexchange.com 吗?

  7. ns2.serverfault.com:当然可以!那是地址 64.34.119.12

  8. ISP 的 DNS 服务器:太好了,谢谢!

    操作系统,您要查找的数字是 64.34.119.12。

  9. 操作系统:太好了,谢谢!

    浏览器,你需要地址64.34.119.12

  10. 浏览器:太好了,谢谢!

    好的,现在调用页面。

  11. 你:是的,谢谢浏览器!

现在请记住,这里实际上查询了两种类型的名称服务器——权威DNS 服务器(所谓的“根”服务器,它告诉您 ISP 的 DNS 服务器在哪里可以找到 SE.com 的 DNS 服务器,以及 SE.com 的权威 DNS 服务器) 和递归转发DNS 服务器(您的 ISP 的 DNS 服务器)。

通常,前一种类型应该响应递归查询,尤其是不能响应来自它们自己域之外的查询。较小的 ISP 有时会通过让他们的主要权威名称服务器与主要转发名称服务器相同的服务器来节省成本,但这是有些不安全的策略 - 特别是如果您没有将服务器配置为拒绝来自您自己的 IP 范围之外的递归查询。

在此处进一步阅读维基百科


小智 5

如果有 2 个 DNS 服务器,DNS-A 是域 a 的权限,DNS-B 是域 b 的权限,有人向 DNS-A 发送 DNS 查询以查找域 b。然后 DNS-A 将通过向 DNS-B 发送请求以查找域 b 来递归。本质上,递归查询是当 DNS 服务器代表发送查询的客户端追踪 DNS 的踪迹以完成请求时。

如果您为网络托管 DNS 服务器,这很好,例如办公室,并且该办公室中的所有机器都将使用 DNS 服务器进行所有查找。如果您允许任何人进行 DNS 递归查询,这很糟糕。如果您托管的 DNS 服务器只应满足对某个域的请求,这也很糟糕。如果有人请求查找另一个域,DNS 服务器应该返回错误而不是进行递归。