为什么单个 DNS 服务器可能对同一查询做出两种不同的响应?

为什么单个 DNS 服务器可能对同一查询做出两种不同的响应?

我拥有一个域名,并通过 Digital Ocean DNS 服务进行配置——这重要吗?

*.my.domain我有的CNAME ingress.my.domain

当我执行dig命令时,我会得到不同的结果,例如:

➜  ~ dig abc.my.domain @8.8.8.8

; <<>> DiG 9.11.3-1ubuntu1.11-Ubuntu <<>> abc.my.domain @8.8.8.8
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 17257
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;abc.my.domain.              IN      A

;; ANSWER SECTION:
abc.my.domain.       21599   IN      CNAME   ingress.my.domain.
ingress.my.domain.    299     IN      A       <valid IP>

;; Query time: 198 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Fri Jan 03 08:48:15 CET 2020
;; MSG SIZE  rcvd: 83

效果如预期。但我立即得到:

➜  ~ dig abc.my.domain @8.8.8.8

; <<>> DiG 9.11.3-1ubuntu1.11-Ubuntu <<>> abc.my.domain @8.8.8.8
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 60455
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;abc.my.domain.              IN      A

;; AUTHORITY SECTION:
my.domain.            449     IN      SOA     ns1.digitalocean.com. hostmaster.my.domain. 1577916425 10800 3600 604800 1800

;; Query time: 116 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Fri Jan 03 08:48:16 CET 2020
;; MSG SIZE  rcvd: 112

我做错了什么吗?我是不是遇到了一些传播延迟问题?我该如何解决这些问题?

答案1

8.8.8.8(与许多公共解析器一样)不是单个服务器,而是一个大型集群。

后续查询(即使来自同一客户端的查询)也可能由不同的后端服务器处理,并且每个服务器可能具有不同的缓存记录

您通常可以通过 TTL 字段的波动(对于每个服务器,该字段都会稳步减少直至过期,但对于每个后端服务器,该字段的发生时间不同)或最近更新记录时完全不同的响应来观察到这一点,而以前的缓存结果仍然存在于其中一些后端服务器中。

更新 DNS 后,Google 允许你让解析器的所有缓存结果过期

https://developers.google.com/speed/public-dns/cache

答案2

TTL在这种情况下, akaTime To Live可能是一个问题,尤其是因为它设置得相当高abc.my.domain. 21599。列出的值21559是以秒为单位的时间。

TTL 表示 DNS 解析器被允许从缓存命中中响应请求的时间,而不是查询整个 DNS 服务器链。许多解析器都遵守 TTL,并且被调用链中的任何解析器都可以为您提供“旧”但“正确”的条目。

为了避免在测试/设置期间出现此类问题,使用+tracedig 中的标志会很有帮助。这会强制将查询从根服务器解析到该区域的一个权威名称服务器(SOA 记录条目的一个服务器)。

相关内容