有没有办法告诉所有 DNS 服务器在根 DNS 服务器离线时继续解析 URL?

Ola*_*laf 1 domain-name-system dns-hosting

已经发生过两次,我们的一个域注册的网络主机(一家知名公司)的根DNS 服务器停机数小时(由于 DOS 攻击)。我们的网站在那段时间不可用,除非您当然在本地解析了 URL。

这是软件开发人员提出的非专家问题,可能很幼稚,但由于世界各地有如此多的 DNS 服务器携带 A 记录的副本(需要几个小时才能更改,例如 IP 更改,到达最后一个他们),为什么会发生这种情况?为什么其他 DNS 服务器没有意识到负责您的域的 DNS 刚刚脱机并继续将 URL 解析为最新的已知 IP,直到另行通知?

问题:有什么方法(可能是任何 DNS 条目)让他们这样做?

Cra*_*son 5

正如 Joeqwerty 在他的评论中所说,您需要扩展您对 DNS 的理解。DNS 更改需要一段时间才能传播的原因归结为递归缓存和生存时间 (TTL)。

考虑这个场景:

用户在 访问您的网站mysite.com。用户的机器查询他们配置的 DNS 服务器(很可能是他们的家庭路由器)。他们的路由器设置为将 DNS 查询转发到 Google 的公共 DNS 服务器8.8.8.8

如果 Google 的服务器已经查找了 的 IP mysite.com,它将根据记录的 TTL 检查它的缓存时间 - 通常 TTL 设置为 86400 秒(1 天 - 60*60*24)。如果记录比 TTL 旧,它将丢弃它并尝试查找它。用于查找记录的确切算法可能不同(即它们可以使用自己的递归/转发,或使用“根提示”)。无论哪种方式,为您的域指定的名称服务器(如果不确定,请检查 WHOIS)是您的域记录所在的位置,如果查询路径上的任何服务器都没有缓存您的记录,则会查询这些服务器。因此,您的 DNS TTL 是DNS 服务器缓存您的记录的长时间,

您提到您的虚拟主机的 DNS 服务器出现故障。这可能会导致许多问题,具体取决于失败的原因。

如果您自己的服务器用于名称解析的 DNS 服务器出现故障,您的 Web 服务器将无法解析任何内容,这意味着它们仍会响应其他服务器,但任何 DNS 查找(很可能是反向 PTR)都会失败. 例如,这会破坏 Drupal 或 WordPress 中的任何“电话首页”功能。

如果网络主机的域名服务器出现故障,这意味着对您域的 DNS 的任何查询都将失败 - 由于上述 TTL 设置,缓存结果将成功,因此并非所有用户都一定会遇到问题。

底线:如果您担心您的域名在您的域名服务器出现故障时无法解析,并且您不太担心失去快速更改 IP 的能力,您应该考虑提高记录的 TTL。如果有疑问,请与您的虚拟主机联系。