DNS 解析器与 DNS 服务器?

Yoa*_*ein 1 domain-name-system

据我所知,我们拥有所谓的“名称服务器”(权威),它保存有关其域(或区域)的数据。例如,.com域有一个权威名称服务器,它保存有关 的所有子域的信息com。同样,该google.com域有一个权威名称服务器,负责保存其负责的所有记录等。

在客户端,我们有一个叫做 a 的东西DNS resolver,它是我机器上的一个软件(为了方便起见),它从我的浏览器获取请求,以查找我在 URL 栏中输入的域名的某个 IP 地址。据我了解,解析器能够访问根名称服务器,然后迭代访问后续名称服务器以查找我需要的 IP 地址。

现在我还知道我的操作系统(特别是我的网络接口)被配置为使用一些“DNS 服务器”来向其发送 DNS 查询。

我不明白的是,为什么我需要 DNS 解析器和 DNS 服务器?这个 DNS 服务器是什么?它是干什么用的?它是某种代理解析器吗?

Pat*_*zek 6

我不明白的是,为什么我需要 DNS 解析器和 DNS 服务器?

这不是你应该持有的区别。

DNS 服务器的重要区别在于:

  • 权威的域名服务器
  • 递归名称服务器

(您还可以找到其他类似“存根”解析器及其组合;有关完整定义,请参阅 RFC 8499)。

权威名称服务器拥有一个或多个区域的完整数据(区域通常有两个,有时甚至更多的权威名称服务器用于负载平衡/故障转移)。

递归名称服务器基本上没有数据(启动时),并将代表客户端进行查询,并递归跟踪所有委托和 CNAME 记录,直到出现错误或客户端查询的答案。

您使用的递归域名服务器(无论是在您的盒子上,还是您的 ISP 上,或者某个远程域名服务器,例如 Google Public DNS 或 Cloudflare 之一或其他)了解根域名服务器,并将联系它们以获取有关 TLD 域名服务器的数据,等等依此类推,最终解析出你需要的名称。

每个权威名称服务器仅拥有其管理的区域的数据。如果您查询其他任何内容,它可能会拒绝回复(在 DNS 级别回复 REFUSED 代码),或者以委托回复让您知道您(您在这里是执行查询的递归名称服务器)应该联系另一个权威域名服务器。

“DNS 解析器”和“DNS 服务器”是不明确的。“DNS 解析器”也是“DNS 服务器”,因为它运行充当服务器(接受查询和响应)的“DNS”软件。DNS 的设计使得相同的端口 (53) 用于权威操作和递归操作,这会产生一些混乱(在命名方面,对计算机来说没有问题)。

有些域名服务器软件仅在设计上具有权威性(例如:NSD、Yadifa、KnotDNS),有些仅是递归的(例如:Unbound),有些可以在任一模式下配置(例如:Bind、PowerDNS),即使建议不要混合使用两种操作模式都在同一进程内。

RFC 8499 确实是一个信息宝库,也是推荐阅读的内容。