大约 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 地址上保持一天左右的访问时间。