上周将 mysite.com 的域名注册转移到 namecheap,没有出现问题,但当时没有更改 DNS。大约 12 小时前,我尝试将 DNS 切换到 namecheap 名称服务器(通过 namecheap 面板进行的“简单”操作),然后创建 A 记录以指向与域名之前指向的 IP 地址不同的 IP 地址。
通过 whatsmydns.com 检查传播,所有记录都显示 mysite.com 指向新的 IP 地址,这表明 namecheaps DNS 服务器运行正常。
奇怪的是,我无法通过 mysite.com 上的浏览器访问域名,从我在芝加哥的桌面(作为 RCN 宽带用户)访问时超时;“ping mysite.com”返回旧的 IP 地址并且挂起,这与我的预期并不相符,不是一个“正确”的结果。
但是,如果我在登录新泽西州数据中心的服务器时“curl mysite.com”,我会得到预期的响应(输出是预期的 html ),并且“ping mysite.com”看起来正确,显示了我期望的新更新 IP 地址。最后,如果我通过 ssh 进入芝加哥大学网络并运行 ping 或 curl,我会得到“正确”/预期的响应。
所以,我认为这是一个典型的 DNS 传播问题。我知道才过了 12 个小时,但我对 DNS 非常不熟悉,现在想知道我是否遗漏了什么。
我很乐意等待一段时间,但这样有点粗心。所以希望我提供了足够的线索,让比我聪明的人可以确认这看起来像是 DNS 传播问题,或者可以向我指出更多测试可能错误的方法。谢谢。
编辑: 进一步调查后,以下是 dig mysite.com @a.root-servers.net 的输出”:
编辑2:polynomial 指出我没有在 @ 前留空格,导致结果不正确。我已更新查询,以下是新结果。
; <<>> DiG 9.6-ESV-R4 <<>> mysite.com @a.root-servers.net
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 19132
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 13, ADDITIONAL: 13
;; WARNING: recursion requested but not available
;; QUESTION SECTION:
;mysite.com. IN A
;; AUTHORITY SECTION:
com. 172800 IN NS j.gtld-servers.net.
com. 172800 IN NS b.gtld-servers.net.
com. 172800 IN NS i.gtld-servers.net.
com. 172800 IN NS a.gtld-servers.net.
com. 172800 IN NS c.gtld-servers.net.
com. 172800 IN NS e.gtld-servers.net.
com. 172800 IN NS l.gtld-servers.net.
com. 172800 IN NS d.gtld-servers.net.
com. 172800 IN NS m.gtld-servers.net.
com. 172800 IN NS g.gtld-servers.net.
com. 172800 IN NS f.gtld-servers.net.
com. 172800 IN NS h.gtld-servers.net.
com. 172800 IN NS k.gtld-servers.net.
;; ADDITIONAL SECTION:
a.gtld-servers.net. 172800 IN A 192.5.6.30
a.gtld-servers.net. 172800 IN AAAA 2001:503:a83e::2:30
b.gtld-servers.net. 172800 IN A 192.33.14.30
b.gtld-servers.net. 172800 IN AAAA 2001:503:231d::2:30
c.gtld-servers.net. 172800 IN A 192.26.92.30
d.gtld-servers.net. 172800 IN A 192.31.80.30
e.gtld-servers.net. 172800 IN A 192.12.94.30
f.gtld-servers.net. 172800 IN A 192.35.51.30
g.gtld-servers.net. 172800 IN A 192.42.93.30
h.gtld-servers.net. 172800 IN A 192.54.112.30
i.gtld-servers.net. 172800 IN A 192.43.172.30
j.gtld-servers.net. 172800 IN A 192.48.79.30
k.gtld-servers.net. 172800 IN A 192.52.178.30
;; Query time: 3 msec
;; SERVER: 198.41.0.4#53(198.41.0.4)
;; WHEN: Fri Oct 14 01:04:16 2011
;; MSG SIZE rcvd: 497
然后从“dig mysite.com @dns1.registrar-servers.com”(这是一个 namecheap dns 服务器):
; <<>> DiG 9.6-ESV-R4 <<>> mysite.com @dns1.registrar-servers.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 55527
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; WARNING: recursion requested but not available
;; QUESTION SECTION:
;mysite.com. IN A
;; ANSWER SECTION:
mysite.com. 1800 IN A [IP ADDRESS THAT IS CORRECT]
;; Query time: 31 msec
;; SERVER: 69.16.244.25#53(69.16.244.25)
;; WHEN: Fri Oct 14 01:07:09 2011
;; MSG SIZE rcvd: 57
答案1
这听起来确实像是 TTL 问题。有几点,在实际切换之前,您应该降低 TTL。通常,网站的 DNS TTL 可能很高,因此您可以减少 DNS 请求的数量。但是,最好在需要进行更改前几天降低该值。
要诊断此问题,您只需从名称服务器中找到您当前正在等待的 TTL。您还可以查询其他一些流行的解析器,看看其他人可能会看到什么。这是 dig 命令:
for i in 4.2.2.1 google-public-dns-a.google.com 10.4.1.11
do
echo $i
dig bo.lt @$i | grep ^bo.lt
done
4.2.2.1
bo.lt. 43200 IN A 199.204.81.1
google-public-dns-a.google.com
bo.lt. 49643 IN A 199.204.80.1
10.4.1.11
bo.lt. 81226 IN A 199.204.81.1
这表明,对于域bo.lt
GTEI,其记录还剩下 43,000 秒,google 还剩下 49k,而我的本地名称服务器还剩下 81,226 秒。