什么原因可能导致 DNS 无法传播?

什么原因可能导致 DNS 无法传播?

大约 15 小时前,我将一个 GoDaddy 域名 (ihearthawaii.com) 移至 digital ocean droplet。通过 (whatsmydns.net) 等网站跟踪 DNS 传播,我注意到传播很困难。它会传播到某些服务器,但大约一小时后就会从这些服务器上消失。这种情况已经持续了一整天。几乎就像有什么东西同时在撤销传播。一小时前,我有 8 个绿色复选标记,现在只有 5 个。

有人见过类似的事情吗?有没有什么办法可以解决这个问题?

我使用的是 digitalocean 域名服务器,它们似乎没问题。我还尝试过 intodns 和 dnscheck 来查找配置问题,但什么也没发现。

DNS 无法在全球范围内传播问题似乎自行消失了。但我想知道如何找出这种情况发生的原因。

我的 Digital Ocean 区域文件

$TTL    1800
@       IN  SOA NS1.DIGITALOCEAN.COM.   hostmaster.ihearthawaii.com. (
        1398835453 ; last update: 2014-04-30 05:24:13 UTC
        3600 ; refresh
        900 ; retry
        1209600 ; expire
        1800 ; ttl
        )
         IN      NS      NS1.DIGITALOCEAN.COM.
                 NS      NS2.DIGITALOCEAN.COM.
                 NS      NS3.DIGITALOCEAN.COM.
@   IN A    128.199.249.146
www CNAME   @

答案1

无论您在区域中的 NS 记录上设置的 TTL 如何,注册商对 DNS 服务器的更改通常都需要长达 48 小时才能生效。

dig +trace www.ihearthawaii.com

表明对我来说更新已正确传播并且您的域名已按预期解析。

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.23.rc1.el6_5.1 <<>> +trace www.ihearthawaii.com
;; global options: +cmd
.                       8843    IN      NS      a.root-servers.net.
.                       8843    IN      NS      b.root-servers.net.
<snip>
.                       8843    IN      NS      m.root-servers.net.
;; Received 228 bytes from 8.8.4.4#53(8.8.4.4) in 145 ms

com.                    172800  IN      NS      a.gtld-servers.net.
com.                    172800  IN      NS      b.gtld-servers.net.
<snip>
com.                    172800  IN      NS      m.gtld-servers.net.
;; Received 510 bytes from 192.36.148.17#53(192.36.148.17) in 141 ms

ihearthawaii.com.       172800  IN      NS      ns1.digitalocean.com.
ihearthawaii.com.       172800  IN      NS      ns2.digitalocean.com.
ihearthawaii.com.       172800  IN      NS      ns3.digitalocean.com.
;; Received 153 bytes from 192.48.79.30#53(192.48.79.30) in 295 ms

www.ihearthawaii.com.   1800    IN      CNAME   ihearthawaii.com.
ihearthawaii.com.       1800    IN      A       128.199.249.146
;; Received 68 bytes from 198.199.120.125#53(198.199.120.125) in 94 ms

此跟踪选项显示解析过程如何进行,从根服务器向下到 .com 顶级域根服务器,其中 ihearthawaii.com 域被委托给 ns<1-3>.digitalocean.com,TTL 为 48 小时,直到 www.ihearthawaii.com 被解析。

您所在区域的 DNS 记录的低 TTL 可能会导致不稳定行为,因为某些根服务器(例如a.gtld-servers.net)可能已经使用您的新 DNS 服务器进行了更新,而其他根服务器(例如m.gtld-servers.net)可能尚未更新。

因此,当缓存 DNS 服务器可能一直在使用 a.gtld-servers.net,并发现 ns1.digitalocean.com 是权威 DNS 服务器时,30 分钟缓存期到期后,它可能会被定向到 m.gtld-servers.net,并发现指向旧名称服务器的旧注册商 NS 记录。

答案2

您的地址的 TTL 值过低,导致您的记录在名称服务器记录更新之前就已经从缓存中过期。您的 TTL 值至少应与 NS 记录的 TTL 值一样长。

如果您可以将记录保留在旧服务器上直到 NS 记录超时,那么应该没问题。旧的 NS 记录将在几天内超时,您的传播问题将自行解决。2 天(172800 秒)后,一切应该会好起来。

在更改记录之前缩短记录上的 TTL 是一种很好的做法。我不确定您的提供商是否允许您更改 NS 记录上的 TTL。在更改前至少两天,我会将 NS 记录上的 TTL 缩短到大约一小时(或 1800,因为这是您在记录上使用的时间)。

这是我遵循的流程:

  • 在更改记录之前将更改记录的 TTL 缩短至大约一小时。(至少 1 个 TTL。)
  • 在更改之前,显著减少 TTL(降至 5 分钟左右)至少 1 TTL。
  • 进行更改并验证传播。进行任何修复(应在几分钟内传播)。
  • 将 TTL 增加到一到两小时并重新验证传播。
  • 一旦情况稳定,将 TTL 增加到几天或更长时间。

一些主要的 DNS 服务器将覆盖您的 TTL,以避免支持快速通量 DNS 服务器。您可能希望在旧 IP 地址上保持一天左右的访问时间。

相关内容