为什么在某些查询上 host 比 dig 慢很多?

为什么在某些查询上 host 比 dig 慢很多?

当查询特定地址时,按照 /etc/resolv.conf 中列出的解析器运行 dig 将会快速返回 NXDOMAIN,而 host 则需要一段时间。

$ dig @<resolver> 140.80.199.91.in-addr.arpa ptr

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.23.rc1.el6_5.1 <<>> @<resolver>140.80.199.91.in-addr.arpa ptr
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 40000
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;140.80.199.91.in-addr.arpa.    IN  PTR

;; Query time: 1 msec
;; SERVER: <resolver>#53(<resolver>)
;; WHEN: Wed Oct 22 16:08:38 2014
;; MSG SIZE  rcvd: 44

但在主机上速度要慢得多......

$ time host 140.80.199.91 <resolver>
;; connection timed out; no servers could be reached

real    0m12.007s
user    0m0.001s
sys 0m0.007s

为什么主持人花了这么长时间才给出同样的答案?

答案1

您的两个命令并不等效。

host 140.80.199.91

相当于:

dig 91.199.80.140.in-addr.arpa ptr

PTR 记录中的标签是 IP 地址元素的反向。

由于您正在查找不同 IP 的反向 DNS,因此它们会尝试访问不同的 DNS 服务器。因此时间自然会有所不同。在您的示例中,反向 DNS 服务器199.80.140.in-addr.arpa没有响应,因此您会遇到超时。

为了避免手动反转 IP,您可以使用该-x选项作为快捷方式:

dig -x 140.80.199.91

此选项也默认为PTR查找,因此您也可以省略该参数。

相关内容