在我开始之前,请注意我是一个新手,仍在学习。
昨天 10 小时后,我不得不将所有托管网站移动到新服务器(更具体地说 - 从一个液滴移动到一个新的液滴)。因此,由于网站已移至新服务器,这意味着它们的IP地址也会更改。因此,我更新了所有网站的dns配置,以现在指向新的 IP 地址。但我不知道以前的 dns 配置已将 ttl 设置为86400(1 天)。在谷歌上搜索为什么我的网站仍然会解析到旧服务器后,我了解到这个概念。
所以,这基本上意味着旧的dns配置被缓存了1天,我必须等待那么长时间才能看到域名解析的变化,以反映新服务器的网站。
因此,我尝试在域上执行nslookup和dig命令以仅检查剩余的 ttl。但是,这就是我现在不高兴的地方。
带有-debug
参数的nslookup
命令给出了以下结果:
请注意:- 我已将我网站的域名替换为 (mywebsite.com),并将新服务器的 IP 地址替换为实际 nslookup 结果中的 (new.server.ip.address)
nslookup -debug mywebsite.com new.server.ip.address
------------
Got answer:
HEADER:
opcode = QUERY, id = 1, rcode = REFUSED
header flags: response, want recursion
questions = 1, answers = 0, authority records = 0, additional = 0
QUESTIONS:
address.ip.server.new.in-addr.arpa, type = PTR, class = IN
------------
Server: UnKnown
Address: new.server.ip.address
------------
Got answer:
HEADER:
opcode = QUERY, id = 2, rcode = NOERROR
header flags: response, auth. answer, want recursion
questions = 1, answers = 1, authority records = 2, additional = 2
QUESTIONS:
mywebsite.com, type = A, class = IN
ANSWERS:
-> mywebsite.com
internet address = new.server.ip.address
ttl = 14400 (4 hours)
AUTHORITY RECORDS:
-> mywebsite.com
nameserver = ns2.centos-webpanel.com
ttl = 86400 (1 day)
-> mywebsite.com
nameserver = ns1.centos-webpanel.com
ttl = 86400 (1 day)
ADDITIONAL RECORDS:
-> ns1.centos-webpanel.com
internet address = 127.0.0.1
ttl = 14400 (4 hours)
-> ns2.centos-webpanel.com
internet address = 127.0.0.1
ttl = 14400 (4 hours)
------------
------------
Got answer:
HEADER:
opcode = QUERY, id = 3, rcode = NOERROR
header flags: response, auth. answer, want recursion
questions = 1, answers = 0, authority records = 1, additional = 0
QUESTIONS:
mywebsite.com, type = AAAA, class = IN
AUTHORITY RECORDS:
-> mywebsite.com
ttl = 86400 (1 day)
primary name server = ns1.centos-webpanel.com
responsible mail addr = myemail@gmail.com
serial = 2013071601
refresh = 86400 (1 day)
retry = 7200 (2 hours)
expire = 3600000 (41 days 16 hours)
default TTL = 86400 (1 day)
------------
Name: mywebsite.com
Address: new.server.ip.address
现在,这就是让我心烦意乱的地方。如上述结果所示,ttl(即使在更改 dns 配置后的 10 小时后)显示 86400。我期待它显示剩余的 ttl,但 ttl 恒定在 86400。这是否意味着我的网站的dns永远不会更新?ttl 只是不会减少。
因此,为了进一步验证,我尝试使用linux的dig command
,这是我得到的结果。
请注意:- 我已将我网站的域名替换为 (mywebsite.com),并将旧服务器的 IP 地址替换为实际挖掘结果中的 (old.server.ip.address)
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.62.rc1.el6_9.5 <<>> mywebsite.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15423
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;mywebsite.com. IN A
;; ANSWER SECTION:
mywebsite.com. 83221 IN A old.server.ip.address
;; Query time: 0 msec
;; SERVER: 67.207.67.2#53(67.207.67.2)
;; WHEN: Mon Feb 5 01:55:05 2018
;; MSG SIZE rcvd: 44
现在在这里,dig 命令将域解析为我的旧服务器的 IP 地址,并将 ttl 显示为 83221 !!就像我说的,我更新了 dns 配置以指向新服务器的 IP 地址,这需要10 多个小时。但是,即使在 10 小时过去后,ttl 仍显示 83221 !!!
再次运行 dig 命令确实反映了此处ttl
的减少,这与nslookup
命令不同。
那么,你们认为这里一直在发生的问题是什么?还是我误解了什么??如果是这样,请纠正我。任何形式的帮助都会严重帮助很多。如果有人可以解释这里发生了什么以及出了什么问题,或者我的新服务器出了问题,那真的会对我有所帮助。
如果它有帮助,我已经将网站的文件保存在旧服务器和新服务器上。
谢谢。
编辑:- (已解决)
因此,这就是解决我面临的所有问题的方法。我在我的服务器上使用 centos 网页面板,它与 freedns 管理器捆绑在一起。因此,freedns 中的一个错误使我的域名服务器和域的 dns 无法更新。因此,我选择了cloudflare dns,并解决了所有问题。
您的域配置不正确,请使用在线诊断工具(如 dnsviz.net),请参阅报告:http://dnsviz.net/d/mkinfra.in/dnssec/
你处于一个蹩脚的代表团情况。
如果我们查询您域.IN
权威名称服务器,他们会回复:
mkinfra.in. 86400 IN NS ns1.centos-webpanel.com.
mkinfra.in. 86400 IN NS ns2.centos-webpanel.com.
mkinfra.in. 86400 IN NS ns3.centos-webpanel.com.
mkinfra.in. 86400 IN NS ns4.centos-webpanel.com.
mkinfra.in. 86400 IN NS ns5.centos-webpanel.com.
如果我们为您的域名查询这 5 个域名服务器中的任何一个,他们会回复:
mkinfra.in. 86400 IN NS ns1.centos-webpanel.com.
mkinfra.in. 86400 IN NS ns2.centos-webpanel.com.
这不是同一组记录。您首先需要解决此差异。
对于您的网站,他们的回复都相同:
www.mkinfra.in. 86400 IN CNAME mkinfra.in.
mkinfra.in. 86400 IN A 139.59.63.210
所以他们都会回复你的旧IP,而不是新IP。您的问题与 TTL 无关:您域的权威名称服务器仍然没有提供您想要的新 IP 地址,因此您必须正确配置它们。如果您自己做,请记住更新区域的序列号以进行任何更改。
该系列实际上是遵循模式 YYYYYMMDDXX 的2018012401
,因此我们可以推断该区域在 1 月 24 日发生了变化,但从那时起就没有更改过(或者已更改但序列号未更新,因此根本不考虑新内容)。
并回答您的另一个问题:如果您查询权威名称服务器,您将始终获得相同的TTL,这是每个设计。只有当您查询解析和缓存名称服务器时,您才会看到 TTL 从一个查询减少到另一个查询,因为案例正在慢慢忘记它过去解析的数据。永远不要使用nslookup
,但总是dig
但始终指定您在要求人们检查您正在做什么时使用的命令(使用@
参数指定您查询的名称服务器非常重要dig
因为结果将与权威或递归名称服务器大不相同)。