为什么 DNS 查找仅对特定域很慢?

为什么 DNS 查找仅对特定域很慢?

我们正在运行 Windows DNS 服务器,但它们不具有权威性。因此,我们将缓存服务器作为转发器。

也就是说,对于以下两个域名,DNS查找会延迟很长时间如果该域名尚未缓存到我们的内部 DNS。

  • 互联网2.edu
  • PostgreSQL 社区

到目前为止,我们还没有发现任何其他表现出此类症状的域名。

我已经在端口 53 上进行了数据包捕获,并测试了dig使用该选项和不使用该+trace选项的情况。

一旦它被缓存在我们的 DNS 服务器上,后续查询使用 会非常快速地返回dig+trace如果不使用+trace选项,它会相当快地缓存NS信息和一些A记录(dns、dns2、dns3)。它会继续返回,status: SERVFAIL直到最终缓存A的记录internet.edu。一旦缓存,查找就会像预期的那样超级快。如果A从缓存中删除记录,长时间的延迟会再次发生。

对于为什么会发生这种情况有什么想法吗?

$ time dig internet2.edu @dc01

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.47.rc1.el6 <<>> +time=300 internet2.edu @dc01
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 33488
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;internet2.edu.                 IN      A

;; Query time: 10401 msec
;; SERVER: x.x.x.x#53(x.x.x.x)
;; WHEN: Thu Sep  8 13:37:55 2016
;; MSG SIZE  rcvd: 31


real    0m15.411s
user    0m0.001s
sys     0m0.004s



$ time dig internet2.edu @dc01

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.47.rc1.el6 <<>> internet2.edu @dc01
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 65026
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;internet2.edu.                 IN      A

;; ANSWER SECTION:
internet2.edu.          56      IN      A       207.75.164.248

;; Query time: 2335 msec
;; SERVER: x.x.x.x#53(x.x.x.x)
;; WHEN: Thu Sep  8 13:39:09 2016
;; MSG SIZE  rcvd: 47


real    0m2.340s
user    0m0.003s
sys     0m0.001s

相关内容