¿Por qué host y nslookup pueden resolver un nombre pero dig no puede?

27

¿Puede alguien decirme por qué está pasando esto? Puedo resolver un nombre de host usando host y / o nslookup, pero las búsquedas directas no funcionan con dig; las búsquedas inversas hacen:

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

Así es como se ve mi resolv.conf:

nameserver 192.168.0.253
search somenet.internal

¿Es normal este comportamiento? ¿Alguna idea?

musashiXXX
fuente

Respuestas:

36

Es el comportamiento predeterminado de cavar no usar la opción de búsqueda.

Desde la página del manual:

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

Editar: solo agregue +searchpara que funcione, como dig +search myhost.

Alexander Janssen
fuente
¿Soy el único que lo ve como un poco contra-intuitivo? :-) De todos modos, muchas gracias!
musashiXXX
55
@musashiXXX Bueno, depende :-) La mayoría de la gente usa digpara depurar DNS y en este caso es una buena idea deshabilitar todo lo que pueda estropear las respuestas de DNS. Creo que es una muy buena idea; la mayoría de la gente usa hosty nslookupdespués de todo. :-)
Alexander Janssen
7

Estaba teniendo el mismo problema. Después de inspeccionar los paquetes enviados desde nslookup y cavar con wireshark, encontré el problema.

dig estaba configurando el bit de datos auténtico en la consulta. Según la página del manual, "Esto solicita al servidor que devuelva si todas las secciones de respuesta y autoridad han sido validadas como seguras de acuerdo con la política de seguridad del servidor". Al ejecutar dig con + noadflag, devolvió los mismos resultados que nslookup.

Bob Francis
fuente
3
Tuve el mismo problema, pero la ednsextensión causó un resultado diferente . Cuando hice una consulta con +noendsdig devolvió el mismo resultado que el host.
Slava Bacherikov
7

En mi caso, es un error en el servidor DNS de Microsoft, donde devuelve la FORMERRrespuesta (error de formato de solicitud) para las solicitudes con la EDNS Cookieopción establecida. Las versiones más recientes de dig(9.11 y posteriores) usan cookies dns de forma predeterminada. Esto puede evitarse mediante +nocookieo +noednsmarcar para excavar:

$ dig +nocookie DOMAIN @SERVER

Fuente: https://kevinlocke.name/bits/2017/01/20/formerr-from-microsoft-dns-server-for-dig/

Taha Jahangir
fuente
1

Puede usar un archivo .digrc en su directorio de inicio con la línea

+ búsqueda

arriesgar el comportamiento predeterminado

dudacgf
fuente
0

Experimenté este problema en la red wifi de mi hogar tratando de resolver el buen funcionamiento google.comdesde una VM de Ubuntu que se ejecuta en un host de Windows 7, con el digcual se agotó el tiempo de espera, pero al nslookupinstante arrojó el resultado.

La solución para mí fue la de añadir +noedns: $ dig +noedns google.com.

fresa
fuente