Dlaczego host i nslookup mogą rozwiązać nazwę, a dig nie?

27

Czy ktoś może mi powiedzieć, dlaczego tak się dzieje? Mogę rozwiązać nazwę hosta za pomocą hosta i / lub nslookup, ale wyszukiwania do przodu nie działają z dig; wyszukiwania wsteczne wykonują:

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

Oto jak wygląda mój resolv.conf:

nameserver 192.168.0.253
search somenet.internal

Czy to zachowanie jest normalne? jakieś pomysły?

musashiXXX
źródło

Odpowiedzi:

36

Domyślnie kopanie nie korzysta z opcji wyszukiwania.

Ze strony podręcznika:

   +[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.

Edycja: wystarczy dodać, +searchaby działał, jak dig +search myhost.

Alexander Janssen
źródło
Czy jestem jedynym, który uważa to za sprzeczne z intuicją? :-) W każdym razie wielkie dzięki!
musashiXXX,
5
@musashiXXX Cóż, to zależy :-) Większość ludzi używa digdo debugowania DNS iw tym przypadku całkiem dobrym pomysłem jest wyłączenie wszystkiego, co może zepsuć odpowiedzi z DNS. Myślę, że to całkiem niezły pomysł; większość ludzi używa hosti nslookuppo wszystkim. :-)
Alexander Janssen
7

Miałem ten sam problem. Po sprawdzeniu pakietów wysłanych zarówno z nslookup, jak i dig za pomocą wireshark, znalazłem problem.

dig ustawiał autentyczny bit danych w zapytaniu. Według strony podręcznika: „To powoduje, że serwer zwraca, czy wszystkie sekcje odpowiedzi i autoryzacji zostały zatwierdzone jako bezpieczne zgodnie z polityką bezpieczeństwa serwera”. Uruchomienie dig z + noadflag zwróciło takie same wyniki jak nslookup.

Bob Francis
źródło
3
Miał ten sam problem, ale inny wynik był spowodowany ednsrozszerzeniem. Kiedy wykonałem zapytanie z +noendsdig, zwróciło ten sam wynik co host.
Slava Bacherikov,
1

Możesz użyć pliku .digrc w katalogu domowym z linią

+ wyszukiwanie

zaryzykować domyślne zachowanie

dudacgf
źródło
0

Wystąpił ten problem w mojej domowej sieci Wi-Fi, próbując rozwiązać dobry problem google.comz poziomu maszyny Wirtualnej Ubuntu działającej na hoście systemu Windows 7 dig, która przekroczyła limit czasu, ale nslookupnatychmiast zwróciła wynik.

Rozwiązaniem dla mnie było, aby dodać +noedns: $ dig +noedns google.com.

jagoda
źródło