DNS 中 DIG 不可预测的 TTL

DNS 中 DIG 不可预测的 TTL

我发现,对同一域名(和同一解析 DNS 服务器)的后续查询之间,答案中的 TTL 字段可能会有很大差异(并且通常会增加)。

$ dig stackexchange.com

; <<>> DiG 9.9.5-4.3ubuntu0.2-Ubuntu <<>> stackexchange.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 45575
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;stackexchange.com.     IN  A

;; ANSWER SECTION:
stackexchange.com.  107 IN  A   104.16.13.13
stackexchange.com.  107 IN  A   104.16.12.13

;; Query time: 12 msec
;; SERVER: 127.0.1.1#53(127.0.1.1)
;; WHEN: Thu Apr 09 14:28:45 BST 2015
;; MSG SIZE  rcvd: 78

 

$ dig stackexchange.com

; <<>> DiG 9.9.5-4.3ubuntu0.2-Ubuntu <<>> stackexchange.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 9152
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;stackexchange.com.     IN  A

;; ANSWER SECTION:
stackexchange.com.  201 IN  A   104.16.13.13
stackexchange.com.  201 IN  A   104.16.12.13

;; Query time: 13 msec
;; SERVER: 127.0.1.1#53(127.0.1.1)
;; WHEN: Thu Apr 09 14:28:46 BST 2015
;; MSG SIZE  rcvd: 78

我启动了 tcpdump 来检查数据包(只是为了确保 dig 中没有错误),我可以看到数据包返回了不同的 TTL 值。

14:28:45.011150 IP (tos 0x18, ttl 48, id 0, offset 0, flags [DF], proto UDP (17), length 106)
192.168.1.1.domain > 192.168.1.109.10403: [udp sum ok] 27042 q: A? stackexchange.com. 2/0/1 stackexchange.com. [1m47s] A 104.16.13.13, stackexchange.com. [1m47s] A 104.16.12.13 ar: . OPT UDPsize=4096 (78)
14:28:46.671406 IP (tos 0x0, ttl 64, id 39411, offset 0, flags [DF], proto UDP (17), length 74)
192.168.1.109.24817 > 192.168.1.1.domain: [udp sum ok] 57829+ [1au] A? stackexchange.com. ar: . OPT UDPsize=4096 (46)
14:28:46.682634 IP (tos 0x18, ttl 48, id 0, offset 0, flags [DF], proto UDP (17), length 106)
192.168.1.1.domain > 192.168.1.109.24817: [udp sum ok] 57829 q: A? stackexchange.com. 2/0/1 stackexchange.com. [3m21s] A 104.16.13.13, stackexchange.com. [3m21s] A 104.16.12.13 ar: . OPT UDPsize=4096 (78)

我原本以为这是由于任播和单个数据中心内多个 DNS 服务器的潜在负载平衡所致。问题是,查询是通过我的路由器解析的,我假设它会缓存记录直至其 TTL。因此,我应该在每个后续响应中看到一个递减的 TTL 字段。这可能是我的路由器的一个错误,还是它只是没有缓存?

答案1

许多路由器,尤其是廉价路由器,实际上并不提供 DNS 缓存。由于提供商的任播 DNS 服务器,记录的 TTL 值将因服务器首次/最后一次解析此域的时间而异。

你可以通过访问 digwebinterface.com 这样的网站来查看这一点: http://www.digwebinterface.com/?hostnames=stackexchange.com&type=A&useresolver=8.8.4.4&ns=all&nameservers=

相关内容