昨天,我的一个域名过期了,所以我的一个网站瘫痪了。我很清楚 DNS 缓存,但我觉得我忽略了一些东西。
我的网站并非全部都瘫痪(这要归功于 DNS 缓存)。但是,例如 Google DNS 服务器给出的结果与两个服务器给出的结果不同。这是为什么呢?
我的 DNS 有 .paris 扩展名(巴黎创业公司)
在我的电脑上,它运行良好。以下是 dig 的结果:
dig @8.8.8.8 mydomain.paris
; <<>> DiG 9.8.3-P1 <<>> @8.8.8.8 mydomain.paris
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 189
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;mydomain.paris. IN A
;; ANSWER SECTION:
mydomain.paris. 27 IN A 104.25.219.14
mydomain.paris. 27 IN A 104.25.218.14
;; Query time: 75 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Wed Dec 9 19:47:52 2015
;; MSG SIZE rcvd: 63
从另一台服务器来看,它不起作用:
dig @8.8.8.8 mydomain.paris
; <<>> DiG 9.8.4-rpz2+rl005.12-P1 <<>> @8.8.8.8 mydomain.paris
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 61073
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
;; QUESTION SECTION:
;mydomain.paris. IN A
;; AUTHORITY SECTION:
paris. 1799 IN SOA a.nic.fr. hostmaster.nic.paris. 2222333866 3600 1800 3600000 5400
;; Query time: 18 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Wed Dec 9 20:02:24 2015
;; MSG SIZE rcvd: 90
两次我都在查询 Google 的 DNS 服务器。为什么我得到的结果不同?即使使用命令 ,是否也有缓存dig @
?为什么AUTHORITY SECTION
在第一种情况下,我得到了答案,但没有 ,而在第二种情况下,只有 ,AUTHORITY SECTION
但没有答案?什么是AUTHORITY SECTION
?
多谢 :)
答案1
对于 Google (8.8.8.8),与许多提供商一样,解析服务在多个节点上实现负载平衡,并且由于每个节点都维护自己的缓存,因此对看似相同名称服务器的后续查询实际上可能来自不同的节点并产生不同的(缓存)结果。(不同的错误、不同的 TTL 值等)
@被 dig 用来选择特定的名称服务器,而不是您在其中找到的默认名称服务器/etc/resolv.conf
,它不确定该名称服务器上的缓存。
为了避免缓存结果,您可以使用该dig +trace
选项,这将使 dig 使用跟踪、迭代查询来解析正在查找的名称。它将遵循来自根服务器的引用,显示用于解析查找的每个服务器的答案。
关于 AUTHORITY 部分:缓存结果不具有权威性,也不包含权威数据。
RFC 2308要求缓存错误(NXDOMAIN)确实包含权限部分;“它必须将缓存的 SOA 记录添加到响应的授权部分,并将 TTL 减去存储在缓存中的时间量。这允许 NXDOMAIN / NODATA 响应正确超时。”