DNS 服务器 IP 地址

DNS Server IP Address

我有一个关于 DNS 基础设施的基本问题。

我想知道上游 DNS 服务器的 IP 地址是如何在 DNS 服务器中配置的。例如,当我的路由器需要代表我的 LAN 上的一台机器满足 DNS 查询时,它会向其上游 DNS 服务器询问它是通过 DHCP 提供的。但是,如果上游 DNS 服务器没有缓存该信息,它如何知道如何到达根 DNS 服务器或某些权威 DNS 服务器?根 DNS 服务器的 IP 地址是否在任何地方硬编码以实现此目的? backbone DNS 服务器是否总是在其上游配置了某些 DNS 服务器?

我记得曾经设置过一个 Microsoft DNS 服务器,任何无法被它满足的请求都会被转发到这个服务器中。但是,由于未配置上游 DNS 服务器,它会将这些请求直接转发给根。这种行为是有道理的,但是,它怎么知道在哪里联系根?

递归服务器具有带外提供的(或至少一个)根服务器列表。这通常称为 "root hints" 或类似的名称。一旦它知道如何与根服务器对话,其他一切都将随之而来。实际上,递归器很快就会为更常见的 TLD(如 .COM.ORG)缓存名称服务器地址,因此它不必总是从根开始。但是根服务器地址是手动提供的。

你的推理是正确的。

问: 如果上游 DNS 服务器没有缓存该信息,它如何知道如何到达根 DNS 服务器或某些权威 DNS 服务器?根 DNS 服务器的 IP 地址是否在任何地方硬编码以实现此目的?

A: 小型 DNS 服务器(例如为一个组织中的客户端提供服务的 DNS 服务器)有时会(手动)配置转发器(通常是 ISP 名称服务器)以便从ISP 名称服务器的大缓存和更快的查询。根据我的经验,近年来互联网连接速度更快(延迟更短),这种设置的使用频率降低了。相反,使用根提示。

问:根 DNS 服务器的 IP 地址是否在任何地方硬编码以实现此目的?

答: 是的。对于 Microsoft DNS 服务器,它位于 systemroot\System32\dns\cache.dns,对于 BIND,它通常位于 /etc/bind/db.root/var/named/named.root。可以从 https://www.internic.net/domain/db.cache

检索更新的副本(如果需要)

问: backbone DNS 服务器是否总是在其上游配置了某些 DNS 服务器?

A:据我所知,从来没有。