有人可以简单解释一下“递归 DNS 查询”的含义以及如何考虑它坏的?
答案1
长话短说:递归查询是互联网和 DNS 工作方式的一部分,但并非所有 DNS 服务器都应该接收递归查询,当不应该响应的服务器响应时,您可能会遇到问题。
更长的版本:
递归,n:参见“递归”。
当您询问 unix.stackexchange.com 地址的 DNS 服务器本身不知道答案时,就会发生递归 DNS 查询,因此它必须与另一台服务器进行检查。
通常情况下这实际上就是 DNS 的工作原理——由于显而易见的原因,您的 ISP 的 DNS 服务器并没有永久记住整个互联网的域记录,因此以下交换发生在幕后:
你:嘿,浏览器,给我看看http://unix.stackexchange.com
浏览器:当然可以! ... 嗯。我实际上不知道那是什么 IP 地址。
嘿,操作系统,你能告诉我在哪里可以找到 unix.stackexchange.com 吗?
操作系统:当然有...
唔。它不在我自己的主机文件中。让我检查一下我的解析器配置...
嘿,ISP 的 DNS 服务器,你能告诉我在哪里可以找到 unix.stackexchange.com 吗?
ISP 的 DNS 服务器:当然可以!
... 嗯。该域名不在我的权威域列表中,而且现在我没有缓存该答案。
嘿,互联网根服务器,你能告诉我谁是 stackexchange.com 的权威吗?
互联网根服务器:当然可以!根据我们的记录,您需要 ns1.serverfault.com、ns2.serverfault.com 或 ns3.serverfault.com。
ISP 的 DNS 服务器:谢谢,互联网根服务器!
您好,ns2.serverfault.com,您能告诉我在哪里可以找到 unix.stackexchange.com 吗?
ns2.serverfault.com: 当然可以!那是地址 64.34.119.12
ISP 的 DNS 服务器: 万分感谢!
操作系统,您要查找的号码是 64.34.119.12。
操作系统:万分感谢!
浏览器,您需要地址64.34.119.12
浏览器:万分感谢!
好的,现在调用该页面。
你:是的,谢谢浏览器!
现在请记住,实际上有二此处查询的名称服务器类型 --权威性DNS 服务器(所谓的“根”服务器,告诉 ISP 的 DNS 服务器在哪里可以找到 SE.com 的 DNS 服务器,以及 SE.com 的权威 DNS 服务器)和递归或者 转发DNS 服务器(您的 ISP 的 DNS 服务器)。
通常,前一种类型是不是应该响应递归查询,尤其是不响应来自其自己域之外的查询。较小的 ISP 有时会通过将其主要权威名称服务器与其主要转发名称服务器设置为同一服务器来节省成本,但这有些不安全的策略 - 特别是如果您没有将服务器配置为拒绝来自您自己的 IP 范围之外的递归查询。
进一步阅读维基百科上的这里。
答案2
如果有 2 个 DNS 服务器,则 DNS-A 是域 a 的权限,DNS-B 是域 b 的权限,有人向 DNS-A 发送 DNS 查询以查找域 b。然后,DNS-A 将通过向 DNS-B 发送请求来递归,以查找域 b。本质上,递归查询是指 DNS 服务器代表发送查询的客户端,追踪 DNS 的踪迹以完成请求。
如果您正在为网络(例如办公室)托管 DNS 服务器,并且该办公室中的所有计算机都将使用 DNS 服务器来执行所有查找,那么这很好。如果您允许任何人进行 DNS 递归查询,这会很糟糕。如果您托管的 DNS 服务器仅应满足特定域的请求,这也很糟糕。如果有人请求查找另一个域,DNS 服务器应该返回错误而不是执行递归。