已经发生过两次了,根DNS 服务器我们的一个域名注册的网站托管商(一家知名公司)向下数小时(由于 DOS 攻击)。我们的网站不可用在此期间,除非您在本地解析了 URL。
这是一个由软件开发人员提出的非专业问题,可能有些幼稚,但由于全世界有如此多的 DNS 服务器都带有 A 记录的副本(更改(如 IP 更改)需要数小时才能到达最后一个 DNS 服务器),为什么会发生这种事? 为什么其他 DNS 服务器没有意识到负责您域名的 DNS 刚刚离线,并继续将 URL 解析为最新的已知 IP,直到另行通知?
问题:有什么方法(可能是任何 DNS 条目)可以让他们做到这一点?
答案1
正如 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 更改需要时间才能在整个 Internet 上完全传播的原因。
您提到您的网站托管商的 DNS 服务器瘫痪了。这可能会导致许多问题,具体取决于具体是什么故障。
如果您自己的服务器用于名称解析的 DNS 服务器发生故障,您的 Web 服务器将无法解析任何内容,这意味着它们仍会响应其他服务器,但任何 DNS 查找(最有可能是反向 PTR)都会失败。例如,这会破坏 Drupal 或 WordPress 中的任何“电话回家”功能。
如果网站托管商的域名服务器失败了,这意味着任何新的对您域的 DNS 的查询将会失败 - 由于上述 TTL 设置,缓存结果将会成功,因此并非所有用户都一定会遇到问题。
底线:如果您担心域名服务器发生故障时无法解析您的域名,但又不太担心失去快速更改 IP 的能力,那么您应该考虑提高记录的 TTL。但如果您有疑问,请联系您的网络托管商。
答案2
“根 DNS” 是 SPoF 配置问题 - 不应该有“一个”根 DNS,而是多个 DNS 服务器。如果他们真的必须有一个管理根,那么就没有理由将其公开 - 它可以是一个隐藏的主 DNS,而辅助 DNS 则是公开的。这将是一个更标准的设置。
回答你的问题:因为它不是这样编程的。有缓存和过期时间。
建议:您不必使用网络主机的 DNS 服务器。您可以将 DNS 托管在其他地方。我建议寻找替代方案。