我正在尝试设置 DNS 来补充托管商提供的 DNS(另请参阅这个相关问题)。现在我似乎不明白我的域名的 DNS 记录,它是这样的(为简洁起见省略了一些条目):
econemon.com. 1800 IN NS ns.stratoserver.net.
econemon.com. 1800 IN NS ns2.stratoserver.net.
econemon.com. 1800 IN A 85.214.92.48
现在,尽管我在 Wikipedia 上读过有关 DNS 的内容,但有两件事我并不十分理解:
- 为什么名称服务器除了返回 A 记录外,还返回指向自身的 NS 记录?这有什么用?我的理解是,该记录将由名称服务器提供,该名称服务器不是负责该域。
- 客户端究竟如何使用这两个 NS 记录?我可以添加更多吗?这样做有什么意义?
答案1
服务器返回的包含 NS 记录的答案是“权威”部分,它只是递归服务器在查找答案时用来遍历树的答案的一部分。客户端使用 NS 记录来确定解析名称时下一步要询问谁。您可以根据需要添加任意数量的 NS 记录(尽管如果您有很多NS 记录);拥有更多 NS 记录的好处是您的 DNS 服务具有更多冗余(尽管为了获得最大的优势,您确实希望将您的 NS 服务器放在单独的网络和域上)。
答案2
所有区域文件都应包含对相关名称服务器的引用。在多服务器情况下,名称服务器会使用它来了解在发生更改时应将 NOTIFY 消息发送到何处以及应从何处接受这些更改。
此外,条目并不总是指向当前服务器。在委派名称解析的情况下,它们将改为引用已委派该角色的服务器,尽管这对于主域名来说很少见(对于子域名来说并不罕见)。
客户端系统(或它们与之通信的 DNS 缓存)应该尝试您的一个名称服务器,然后,如果该查找失败,它应该尝试下一个,依此类推,直到所有服务器都尝试过或有一个服务器做出响应。
为了获得额外的弹性,您可以拥有任意数量的名称服务器。RFC 规定“至少两个”,并且它们不应位于同一网络上(一些小型网络主机设置了两个名称服务器,但实际上它们是具有两个 IP 地址的同一台服务器 - 不好),但它们没有列出任何上限。