为什么host和nslookup可以解析名称但dig无法解析?


27

谁能告诉我为什么会这样吗?我可以使用host和/或nslookup解析主机名,但正向查找不适用于dig;反向查找:

musashixxx@box:~$ host someserver
someserver.somenet.internal has address 192.168.0.252
musashixxx@box:~$ host 192.168.0.252
252.0.168.192.in-addr.arpa domain name pointer someserver.somenet.internal.
musashixxx@box:~$ nslookup someserver
Server:     192.168.0.253
Address:    192.168.0.253#53

Name:   someserver.somenet.internal
Address: 192.168.0.252
musashixxx@box:~$ nslookup 192.168.0.252
Server:     192.168.0.253
Address:    192.168.0.253#53

252.0.168.192.in-addr.arpa  name = someserver.somenet.internal.

musashixxx@box:~$ dig someserver

; <<>> DiG 9.8.1-P1 <<>> someserver
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 55306
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;someserver.            IN  A

;; Query time: 0 msec
;; SERVER: 192.168.0.253#53(192.168.0.253)
;; WHEN: Wed Oct  3 15:47:38 2012
;; MSG SIZE  rcvd: 27

musashixxx@box:~$ dig -x 192.168.0.252

; <<>> DiG 9.8.1-P1 <<>> -x 192.168.0.252
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 28126
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

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

;; ANSWER SECTION:
252.0.168.192.in-addr.arpa. 3600 IN PTR someserver.somenet.internal.

;; Query time: 0 msec
;; SERVER: 192.168.0.253#53(192.168.0.253)
;; WHEN: Wed Oct  3 15:49:11 2012
;; MSG SIZE  rcvd: 86

这是我的resolv.conf的样子:

nameserver 192.168.0.253
search somenet.internal

这是正常现象吗?有什么想法吗?

Answers:


36

dig的默认行为是不使用search-option。

从手册页:

   +[no]search
       Use [do not use] the search list defined by the searchlist or
       domain directive in resolv.conf (if any). The search list is not
       used by default.

编辑:只需添加+search即可使其正常工作,例如dig +search myhost


我是唯一一个认为这有点违反直觉的人吗?:-)无论如何,非常感谢!
musashiXXX

5
@musashiXXX好吧,这取决于:-)大多数人都dig用于调试DNS,在这种情况下,禁用一切可能会破坏DNS答案的方法是一个不错的主意。我认为这是一个很好的主意;大多数人使用hostnslookup毕竟。:-)
亚历山大·扬森

7

我遇到了同样的问题。检查了nslookup和wireshark发来的数据包后,我发现了问题。

dig正在设置查询中的真实数据位。根据手册页,“这要求服务器返回是否所有答案和权限部分均已根据服务器的安全策略被确认为安全”。通过使用+ noadflag运行dig,它返回的结果与nslookup相同。


3
发生了相同的问题,但是edns扩展导致了不同的结果。当我用+noendsdig 查询时,返回与主机相同的结果。
Slava Bacherikov


1

您可以使用以下行在主目录中使用.digrc文件:

+搜寻

发生默认行为的机会


0

我在家庭wi-fi网络上遇到此问题,试图google.com从Windows 7主机上运行的Ubuntu VM中解决问题,原因是dig,超时,但nslookup立即返回结果。

我的解决方案是添加+noedns$ dig +noedns google.com

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.