我有第三方的 DNS 服务,它提供了一个用于更改 DNS 的 Web 应用程序。我更改了 DNS 设置,将我控制的其中一个域指向我们的新 IP,但已经过去几个小时了,状态没有任何变化。
由于不太熟悉 DNS 更改的工作原理,我试图调试正在发生的事情 - 或者更确切地说没有发生的事情。据我所知,由于缓存会过期,DNS 需要一段时间才能在全球范围内分发,但我想确认更改已在我的提供商的 DNS 服务器上发生,因此更改正在进行中。
以前的 IP 是1.1.1.1
,新的是2.2.2.2
(本文有所改动)
首先,我确认该域名确实正在使用我可以进行更改的名称服务器:
ilari@alux:~$ dig mydomain.fi NS
; <<>> DiG 9.7.3 <<>> mydomain.fi NS
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 6569
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 4
;; QUESTION SECTION:
;mydomain.fi. IN NS
;; ANSWER SECTION:
mydomain.fi. 77916 IN NS dns2.myprovider.com.
mydomain.fi. 77916 IN NS dns3.myprovider.com.
mydomain.fi. 77916 IN NS dns.myprovider.com.
mydomain.fi. 77916 IN NS dns4.myprovider.com.
;; ADDITIONAL SECTION:
dns.myprovider.com. 1582 IN A 10.11.12.13
dns2.myprovider.com. 1442 IN A 10.11.12.14
dns3.myprovider.com. 1715 IN A 10.11.12.15
dns4.myprovider.com. 1457 IN A 10.11.12.16
(我最初是whois mydomain.fi
这么用的,但现在我意识到那不是正确的方法,因为它实际上并没有查询 DNS,而只是查询 whois 记录中写的内容(如果有的话)。)
之后,我尝试host
直接从提供商的服务器获取结果。我以为它应该会立即显示新的 IP,但结果却是:
ilari@alux:~$ host mydomain.fi dns.myprovider.com
Using domain server:
Name: dns.myprovider.com
Address: 10.11.12.13#53
Aliases:
mydomain.fi has address 1.1.1.1
这是几个小时后的事情了。我认为它应该立即更改为 2.2.2.2,因为它应该从 Web 界面查询我正在更改的确切服务器。我应该期望看到什么结果?
我如何确保提供商的 Web 界面正常运行,并且其服务器上的 DNS 已正确更改?
事实证明曾是他们那边出了问题。Web 界面没有正确进行更改,并且 IP 实际上并没有在他们的 DNS 服务器上更改。
在他们的问题解决之后,更改生效后仍然需要几分钟的延迟host mydomain.fi dns.myprovider.com
(当然,需要更长时间才能在全球范围内看到更改)。
答案1
DNS 更改在您进行更改后立即生效,并验证全部权威服务器(如区域的 NS 记录中所列)正在提供新记录。 Ladadadada 向您指出了一个问题/答案,解释了如何检查这一点。
一旦世界各地的所有服务器上的缓存都过期并且它们从权威服务器检索到新信息,DNS 更改就会“传播”。(“传播”在技术上是一个错误的词 - 它实际上是缓存过期 - 但它是常用的术语)。
您可以控制其中第一个。您无法控制第二个(TTL
记录上的(生存时间)值应该理论上限制了缓存过期的时间,但是有些 ISP 根本不尊重 TTL 值——尤其是 AOL 在这方面是臭名昭著的)。
答案2
mydomain.fi 记录的生存时间 (TTL) 设置是多少?如果 TTL 为一天,则您要到明天才能看到更改。
答案3
我喜欢用挖检查一下:
dig hostname.to.check @dns.myprovider.com
确保检查所有的名称服务器,以查看它们是否都做出相同的响应。
Squish.net还有一个很好的 DNS 遍历工具,它会告诉您活动名称服务器将如何响应您的请求。