公共名称服务器实际上是做什么的?

Dav*_*ant 4 dns google-public-dns nameserver

我试图了解公共 DNS 名称服务器的用途(公共而不是 SOA;例如 8.8.8.8)。

我执行了一个dig +trace命令,据我所知,唯一使用名称服务器的时间是在查找根域的 SOA 时.。之后,查询层次结构中每个域的 SOA。

我的假设是公共名称服务器用于:

  • 识别根域的 SOA,因此不必在客户端上对其进行硬编码。
  • 分散进程和缓存。因此,如果域的 SOA 出现故障,另一台服务器可以引导客户端。
  • 减少 SOA 的负载。如果另一台服务器知道记录的内容,则无需查询 SOA。

我有3个问题:

  • 我的假设正确吗?

  • 如果这些真的是名称服务器所做的唯一事情,如果我不需要缓存并且愿意自己进行递归查询,我可以停止使用名称服务器吗?

  • 如果 SOA 执行太多请求,它是否可以/是否拒绝回答来自特定名称服务器的查询?

Mik*_*ott 7

你的假设是不正确的。该+trace选项告诉 dig 查询每个域的 SOA 服务器;这不是它的正常行为。正常的 DNS 查找将使用您配置的 DNS 服务器(例如公共递归 DNS 服务器)进行所有查找。

除非您准备仅使用 IP 地址,否则您无法停止使用名称服务器。但是您可以运行您自己的递归名称服务器,可能与您的客户端软件在同一台机器上,在这种情况下,您可以停止使用公共递归名称服务器。

  • 无论您查询 DNS 服务器多少次,都不应该为现有域发送“NXDOMAIN”。如果 DNS 服务器这样做,则该 DNS 服务器有问题。 (3认同)

Ana*_*man 5

作为迈克斯科特答案的一个小补充......

公共名称服务器(正如您定义的那样)的主要目的是:

  1. 让个人不必运行自己的名称服务器。

  2. 帮助(可能)加快解析域的过程。

关于你的“三个假设”的一些说明

  • 某些名称服务器仅将未知请求的查找转发给其他递归解析器(例如公共名称服务器)。由于公共名称服务器保留一个根提示文件来进行递归查找,这确实意味着在这些仅转发名称服务器上不需要该文件。但是,这与任何“客户”无关(据我了解您的意思)。

  • 公共名称服务器可以(可以说)有助于分散和缓存。同样,它们可以潜在地为整个 DNS 系统提供稳健性。但这些都是附带好处。

  • 公共 DNS 服务器可以减少权威名称服务器的负载,但同样,这不是绕过这些服务器的主要原因。这个想法是与从权威名称服务器请求该信息相比,缓存信息的返回速度更快。