DNS 名称服务器回退如何工作?

DNS 名称服务器回退如何工作?

我们的 NS 记录中列出了两个 DNS 服务器。昨晚,我们的一个 DNS 服务器宕机了。正如预期的那样,一些 DNS 服务器无法解析我们的主机名。我以为这只是暂时的,一旦我们的 NS 记录的 TTL 到期(1 小时),问题就会解决。

一个多小时后,我仍然在使用 Earthlink、Verizon 和 OpenDNS 服务器的台式机上收到 DNS 超时。我测试了一下其他 DNS 服务器是否在应答:

dig @ns2.example.com www.example.com +short

这有效。

我的问题:

  1. 有谁能回答为什么即使 TTL 过期后其他 DNS 服务器也没有访问我们的其他 DNS 服务器?
  2. DNS 服务器是否更喜欢域的主 DNS 服务器(来自记录SOA)?
  3. 是否有任何算法可用于从可用的 NS 记录中选择名称服务器?我假设这是特定于实现的,但也许有一些标准适用于此处。

答案1

这真是令人恼火。多个 DNS 服务器本应提高可靠性,但实际上却常常产生相反的效果。

问题在于,客户端等待响应的时间有限,而服务器等待的时间也差不多。假设您有两个 DNS 服务器,A 和 B。假设 A 正常运行,而 B 发生故障。会发生以下情况:

  1. 客户端连接到名称服务器 Z 并向其询问信息。Z 选择 B 并发送查询。

  2. 客户端超时,因为名称服务器 Z 没有响应。

  3. 客户端尝试名称服务器 Y。Y 选择 B 并发送查询。

  4. 名称服务器 Z 超时并尝试 A。它得到了正确答案,但客户端不再等待。

  5. 客户端超时,因为名称服务器 Y 没有响应。

  6. 由于两个名称服务器均无法响应,客户端放弃。

  7. 名称服务器 Y 超时并尝试 A。它得到了正确答案,但客户端不再等待。

而且也没有好的解决方案。等待名称服务器回复的时间越长,您需要等待的时间就越长,因为您等待的名称服务器本身等待的时间更长。可以说,问题在于 Y 和 Z 没有足够快地放弃 B。

本质上,如果您的任何一个名称服务器出问题了,那么一些客户端就会因为运气不好而超时,因为他们只尝试了坏的服务器。

从好的方面来看,如果您有两个名称服务器,其中一个出现故障,那么大约 75% 的名称服务器将得到答复,而不是 0%。

相关内容