Pourquoi host et nslookup peuvent-ils résoudre un nom mais Dig ne peut pas?

27

Quelqu'un peut-il me dire pourquoi cela se produit? Je peux résoudre un nom d'hôte en utilisant host et / ou nslookup mais les recherches directes ne fonctionnent pas avec dig; les recherches inversées font:

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

Voici à quoi ressemble mon resolv.conf:

nameserver 192.168.0.253
search somenet.internal

Ce comportement est-il normal? Des pensées?

musashiXXX
la source

Réponses:

36

C'est le comportement par défaut de creuser de ne pas utiliser l'option de recherche.

Depuis la page de manuel:

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

Modifier: Ajoutez simplement +searchpour le faire fonctionner, comme dig +search myhost.

Alexander Janssen
la source
Suis-je le seul à voir cela comme un peu contre-intuitif? :-) Quoi qu'il en soit, merci beaucoup!
musashiXXX
5
@musashiXXX Eh bien, cela dépend :-) La plupart des gens utilisent digpour déboguer DNS et dans ce cas, c'est une bonne idée de désactiver tout ce qui pourrait gâcher les réponses du DNS. Je pense que c'est une assez bonne idée; la plupart des gens utilisent hostet nslookupaprès tout. :-)
Alexander Janssen
7

J'avais le même problème. Après avoir inspecté les paquets envoyés à la fois par nslookup et creusé avec wirehark, j'ai trouvé le problème.

dig définissait le bit de données authentique dans la requête. Selon la page de manuel, "Ceci demande au serveur de retourner si toutes les sections de réponse et d'autorité ont toutes été validées comme sécurisées conformément à la politique de sécurité du serveur." En exécutant dig avec + noadflag, il a renvoyé les mêmes résultats que nslookup.

Bob Francis
la source
3
A eu le même problème, mais un résultat différent a été causé par l' ednsextension. Lorsque j'ai fait une requête avec +noendsdig, j'ai renvoyé le même résultat que l'hôte.
Slava Bacherikov
7

Dans mon cas, il s'agit d'un bogue dans Microsoft DNS Server, où il renvoie une FORMERRréponse (erreur de format de demande) pour les demandes avec EDNS Cookiejeu d'options. Les versions plus récentes de dig(9.11 et plus) utilisent par défaut les cookies DNS. Cela peut être évité par +nocookieou +noednsflag pour creuser:

$ dig +nocookie DOMAIN @SERVER

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

Taha Jahangir
la source
1

Vous pouvez utiliser un fichier .digrc dans votre répertoire personnel avec la ligne

+ recherche

pour risquer le comportement par défaut

dudacgf
la source
0

J'ai rencontré ce problème sur mon réseau Wi-Fi domestique en essayant de résoudre le bon vieux problème à google.compartir d'une machine virtuelle Ubuntu fonctionnant sur un hôte Windows 7 dig, ce qui a expiré, mais a nslookupinstantanément renvoyé le résultat.

La solution pour moi était d'ajouter +noedns: $ dig +noedns google.com.

wberry
la source