Por que host e nslookup resolvem um nome, mas dig não pode?

27

Alguém pode me dizer por que isso está acontecendo? Posso resolver um nome de host usando host e / ou nslookup, mas as pesquisas futuras não funcionam com dig; as pesquisas reversas fazem:

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

Aqui está a aparência do meu resolv.conf:

nameserver 192.168.0.253
search somenet.internal

Esse comportamento é normal? Alguma ideia?

musashiXXX
fonte

Respostas:

36

É o comportamento padrão do dig para não usar a opção de pesquisa.

Na página do 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.

Edit: Basta adicionar +searchpara fazê-lo funcionar, como dig +search myhost.

Alexander Janssen
fonte
Eu sou o único que vê isso como um pouco contra-intuitivo? :-) De qualquer forma, muito obrigado!
precisa
5
@musashiXXX Bem, isso depende :-) A maioria das pessoas usa digpara depurar o DNS e, nesse caso, é uma boa idéia desativar tudo o que possa atrapalhar as respostas do DNS. Eu acho que é uma boa ideia; a maioria das pessoas usa hoste nslookupdepois de tudo. :-)
Alexander Janssen
7

Eu estava tendo o mesmo problema. Depois de inspecionar os pacotes enviados pelo nslookup e cavar com o wireshark, encontrei o problema.

dig estava definindo o bit de dados autêntico na consulta. De acordo com a página do manual, "Isso solicita que o servidor retorne se todas as seções de resposta e autoridade foram validadas como seguras de acordo com a política de segurança do servidor". Ao executar dig com + noadflag, ele retornou os mesmos resultados que o nslookup.

Bob Francis
fonte
3
Tinha o mesmo problema, mas um resultado diferente foi causado por ednsextensão. Quando fiz consulta com +noendsdig retornou o mesmo resultado que o host.
Slava Bacherikov 4/11
7

No meu caso, é um bug no Microsoft DNS Server, onde retorna FORMERRresposta (erro de formato da solicitação) para solicitações com o EDNS Cookieconjunto de opções. As versões mais recentes dig(9.11 e superior) usam cookies DNS por padrão. Isso pode ser evitado +nocookieou +noednssinalizado para cavar:

$ dig +nocookie DOMAIN @SERVER

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

Taha Jahangir
fonte
1

Você pode usar um arquivo .digrc no diretório inicial com a linha

+ pesquisa

arriscar o comportamento padrão

dudacgf
fonte
0

Eu experimentei esse problema na minha rede wi-fi doméstica tentando resolver o bom ol ' google.comde dentro de uma VM do Ubuntu em execução em um host Windows 7, com o digtempo limite esgotado, mas nslookupretornou o resultado instantaneamente.

A solução para mim foi para adicionar +noedns: $ dig +noedns google.com.

amora
fonte