Comando nslookup: uso e opções, consulta de registros e escolha do servidor DNS

Ambiente de testeFamília RHELAlmaLinux 9.8nslookup 9.16conta rootDebian 12 conta comum
Comandos de redenslookupLocalização/usr/bin/nslookup

O comando nslookup é uma ferramenta de consulta que pergunta a um servidor DNS por um nome de domínio e retorna seus endereços IP e registros DNS como MX, NS e TXT. Ao consultar por tipo os registros de example.com em um servidor AlmaLinux 9 e trocar o servidor DNS consultado, o mesmo domínio deu resultados diferentes conforme o servidor: a linha Non-authoritative answer do início da resposta desapareceu ou o resultado da consulta ANY mudou.

A saída abaixo foi obtida com a conta root em um servidor AlmaLinux 9.8. O endereço do servidor DNS configurado no servidor foi substituído pelo valor de exemplo 192.0.2.53, e os números de versão dos pacotes também foram trocados por valores de exemplo.

1️⃣ Como usar o comando nslookup

A forma básica é [nslookup -opção nome servidor-DNS], e tanto as opções quanto o servidor DNS podem ser omitidos. Se você escrever só um nome, o nslookup pergunta o endereço desse nome ao servidor DNS configurado no servidor.

nslookup example.com
Server:		192.0.2.53
Address:	192.0.2.53#53

Non-authoritative answer:
Name:	example.com
Address: 172.66.147.243
Name:	example.com
Address: 104.20.23.154
Name:	example.com
Address: 2606:4700:10::6814:179a
Name:	example.com
Address: 2606:4700:10::ac42:93f3

As duas linhas Server e Address do topo mostram o servidor DNS que recebeu a consulta, e o #53 no fim é o número da porta DNS. Sem indicar o tipo de registro, o nslookup consulta primeiro o registro A (IPv4) e depois o AAAA (IPv6), por isso dois endereços IPv6 vieram depois de dois endereços IPv4.

Non-authoritative answer significa que quem respondeu foi um servidor DNS com o valor em cache, e não o servidor que gerencia diretamente os registros de example.com. Por isso, logo depois de alterar um registro, o valor pode ser diferente do real.

2️⃣ Opções do nslookup

As opções são escritas com um hífen antes do nome.

-type é a mesma opção que -query ou a forma curta -q. Perguntando a 8.8.8.8 com -q=mx, saiu a mesma linha de servidor de e-mail que com -type=mx.

nslookup -q=mx google.com 8.8.8.8
Server:		8.8.8.8
Address:	8.8.8.8#53

Non-authoritative answer:
google.com	mail exchanger = 10 smtp.google.com.

Authoritative answers can be found from:

-timeout e -retry definem quanto tempo esperar por um servidor DNS que não responde. 192.0.2.1 é um endereço reservado para documentação, então nenhum servidor responde nele.

nslookup -timeout=2 -retry=1 example.com 192.0.2.1
;; connection timed out; no servers could be reached

Com -timeout=2 -retry=1, o nslookup mostrou a linha [connection timed out] após 2 segundos e terminou. Com -retry=2 levou 4 segundos, e sem nenhuma opção levou 15 segundos. Para que um script não fique parado muito tempo por causa de um servidor que não responde, reduza os dois valores.

Com -debug, as seções de pergunta e resposta do pacote de resposta são mostradas como estão.

nslookup -debug example.com 8.8.8.8
Server:		8.8.8.8
Address:	8.8.8.8#53

------------
    QUESTIONS:
	example.com, type = A, class = IN
    ANSWERS:
    ->  example.com
	internet address = 104.20.23.154
	ttl = 300
    ->  example.com
	internet address = 172.66.147.243
	ttl = 300
    AUTHORITY RECORDS:
    ADDITIONAL RECORDS:
------------
Non-authoritative answer:
Name:	example.com
Address: 104.20.23.154
Name:	example.com
Address: 172.66.147.243
------------
    QUESTIONS:
	example.com, type = AAAA, class = IN
    ANSWERS:
    ->  example.com
	has AAAA address 2606:4700:10::6814:179a
	ttl = 300
    ->  example.com
	has AAAA address 2606:4700:10::ac42:93f3
	ttl = 300
    AUTHORITY RECORDS:
    ADDITIONAL RECORDS:
------------
Name:	example.com
Address: 2606:4700:10::6814:179a
Name:	example.com
Address: 2606:4700:10::ac42:93f3

Cada registro ganhou um ttl = 300 que a saída padrão não mostra. Ele indica que o servidor DNS que recebeu esta resposta pode manter o registro em cache por até 300 segundos.

-norecurse pede ao servidor DNS que responda só com o que já tem, sem buscar por outros servidores. Perguntando ao mesmo 8.8.8.8 sem a opção saíram quatro endereços, mas com -norecurse a consulta terminou em [SERVFAIL].

nslookup -norecurse example.com 8.8.8.8
Server:		8.8.8.8
Address:	8.8.8.8#53

** server can't find example.com: SERVFAIL
OpçãoCopiarDescrição
-type=Define o tipo de registro a consultar; se omitido, A e depois AAAA
-q=Mesma opção que -type, define o tipo de registro a consultar
-timeout=Tempo de espera da resposta à primeira consulta (segundos)
-retry=Número de envios da consulta quando não há resposta
-debugMostra a pergunta e a resposta do pacote, incluindo o TTL
-norecursePede só os valores que esse servidor tem, sem passar por outros servidores
OpçãoCopiarDescrição
-query=Mesma opção que -type, define o tipo de registro a consultar
-port=Define a porta a consultar, 53 por padrão
-versionMostra a versão e sai

3️⃣ Consulta de registros com nslookup (MX, NS, TXT, SOA)

Escrevendo um tipo de registro depois de -type=, só esse registro é consultado. O valor pode ser escrito em maiúsculas ou minúsculas.

Valor de -type=Informação contida
A · AAAAEndereço IPv4, endereço IPv6
MXServidor que recebe os e-mails e sua prioridade
NSServidores de nomes que gerenciam os registros do domínio
TXTValores de texto como SPF
SOAServidor de nomes principal da zona, e-mail do administrador, número de série, intervalos de atualização
CNAMEAlias que aponta para outro nome
PTRNome de host ligado a um endereço IP (reverso)
ANYPede todos os registros desse nome de uma vez

Os servidores de e-mail são verificados com o registro MX.

nslookup -type=mx google.com
Server:		192.0.2.53
Address:	192.0.2.53#53

Non-authoritative answer:
google.com	mail exchanger = 10 smtp.google.com.

Authoritative answers can be found from:

O 10 depois de mail exchanger é a prioridade. Quando há vários servidores de e-mail, quem envia tenta a entrega começando pelo servidor de menor número. A mesma consulta em example.com retornou [mail exchanger = 0 .], e um MX com só um ponto significa que este domínio não recebe e-mails.

O [Authoritative answers can be found from:] no fim da consulta MX é uma linha de cabeçalho que mostra abaixo dela as informações dos servidores de nomes autoritativos incluídas na resposta. Nas consultas MX, NS e TXT deste artigo a resposta não trouxe essas informações, então nada apareceu abaixo do cabeçalho.

O registro NS contém os servidores de nomes que gerenciam diretamente os registros do domínio.

nslookup -type=ns example.com
Server:		192.0.2.53
Address:	192.0.2.53#53

Non-authoritative answer:
example.com	nameserver = hera.ns.cloudflare.com.
example.com	nameserver = elliott.ns.cloudflare.com.

Authoritative answers can be found from:

example.com tinha dois servidores de nomes. Esses dois servidores são os servidores de nomes autoritativos de example.com.

Um registro TXT pode guardar valores de texto sem formato fixo.

nslookup -type=txt example.com
Server:		192.0.2.53
Address:	192.0.2.53#53

Non-authoritative answer:
example.com	text = "_k2n1y4vw3qtb4skdx9e7dxt97qrmmq9"
example.com	text = "v=spf1 -all"

Authoritative answers can be found from:

v=spf1 -all é um valor SPF que indica que nenhum servidor pode enviar e-mails com este nome de domínio. Quando um domínio tem vários registros TXT, eles aparecem assim, um por linha.

O registro SOA contém as informações básicas da zona.

nslookup -type=soa example.com
Server:		192.0.2.53
Address:	192.0.2.53#53

Non-authoritative answer:
example.com
	origin = elliott.ns.cloudflare.com
	mail addr = dns.cloudflare.com
	serial = 2418004112
	refresh = 10000
	retry = 2400
	expire = 604800
	minimum = 1800

Authoritative answers can be found from:

origin é o servidor de nomes principal, e mail addr é o endereço de e-mail do administrador com o @ escrito como ponto. serial é um número de série que sobe a cada alteração dos registros, e refresh, retry e expire são valores de tempo (em segundos) que os servidores de nomes secundários usam para sincronizar os registros com o principal. minimum é o tempo que a resposta sobre um registro inexistente fica em cache.

Os aliases são verificados com o registro CNAME. A consulta de www.github.com retornou uma linha dizendo que ele é um alias de github.com.

nslookup -type=cname www.github.com
Server:		192.0.2.53
Address:	192.0.2.53#53

www.github.com	canonical name = github.com.

-type=any pede todos os registros desse nome de uma vez. Perguntando ao servidor DNS configurado no servidor, os registros A, AAAA, MX e NS vieram juntos.

nslookup -type=any example.com
Server:		192.0.2.53
Address:	192.0.2.53#53

Non-authoritative answer:
Name:	example.com
Address: 172.66.147.243
Name:	example.com
Address: 104.20.23.154
Name:	example.com
Address: 2606:4700:10::6814:179a
Name:	example.com
Address: 2606:4700:10::ac42:93f3
example.com	mail exchanger = 0 .
example.com	nameserver = hera.ns.cloudflare.com.
example.com	nameserver = elliott.ns.cloudflare.com.

Authoritative answers can be found from:

Enviando a mesma consulta a 8.8.8.8, voltaram só uma linha [hinfo = “RFC8482”] e uma linha de assinatura.

nslookup -type=any example.com 8.8.8.8
Server:		8.8.8.8
Address:	8.8.8.8#53

Non-authoritative answer:
example.com	hinfo = "RFC8482" ""
example.com	rdata_46 = HINFO 13 2 3600 20261029212708 20261027192708 34505 example.com. 2YBHcD7GmqHiW6E7e8Lx3z/gPoCsLbYw/Uegjy801hQ+4fYp5U7wKqc2 NXOONd8WS0xjgzfW5Dn0akDqdjltOw==

Authoritative answers can be found from:

A RFC 8482 é o documento que permite responder a uma consulta ANY com uma resposta curta em vez de todos os registros. Por isso, consulte os registros necessários indicando um tipo por vez.

4️⃣ Escolher o servidor DNS no nslookup

Se você escrever um servidor DNS depois do nome, o nslookup pergunta a esse servidor em vez do servidor DNS configurado no servidor.

nslookup example.com 8.8.8.8
Server:		8.8.8.8
Address:	8.8.8.8#53

Non-authoritative answer:
Name:	example.com
Address: 104.20.23.154
Name:	example.com
Address: 172.66.147.243
Name:	example.com
Address: 2606:4700:10::6814:179a
Name:	example.com
Address: 2606:4700:10::ac42:93f3

A linha Server mudou para 8.8.8.8, e os quatro endereços foram os mesmos da resposta do servidor DNS configurado no servidor. Depois de trocar os servidores de nomes, use esta forma para verificar se os novos valores já chegaram a cada servidor DNS público.

Se você indicar como servidor DNS um dos servidores de nomes da consulta NS, estará perguntando diretamente ao servidor autoritativo.

nslookup example.com elliott.ns.cloudflare.com
Server:		elliott.ns.cloudflare.com
Address:	2606:4700:58::a29f:2ce4#53

Name:	example.com
Address: 104.20.23.154
Name:	example.com
Address: 172.66.147.243
Name:	example.com
Address: 2606:4700:10::6814:179a
Name:	example.com
Address: 2606:4700:10::ac42:93f3

Desta vez a linha Non-authoritative answer desapareceu. O valor veio direto do servidor que gerencia os registros, então é o valor atual, sem passar por cache. No Address logo abaixo da linha Server apareceu o endereço IPv6 deste servidor de nomes.

Ao consultar um nome que não existe, aparece [NXDOMAIN]. .invalid é um domínio de primeiro nível reservado para nunca ser usado de fato, então a resposta foi que o nome não existe.

nslookup example.invalid
Server:		192.0.2.53
Address:	192.0.2.53#53

** server can't find example.invalid: NXDOMAIN

Já no-such-host.example.com terminou com [No answer] em vez de NXDOMAIN. Isso significa que o registro consultado não veio na resposta, um resultado diferente de NXDOMAIN, em que o próprio nome não existe.

nslookup no-such-host.example.com
Server:		192.0.2.53
Address:	192.0.2.53#53

Non-authoritative answer:
*** Can't find no-such-host.example.com: No answer

5️⃣ Consulta reversa com nslookup

Se você escrever um endereço IP no lugar de um nome, o nslookup consulta o registro PTR e encontra o nome de host ligado a esse endereço.

nslookup 8.8.8.8
8.8.8.8.in-addr.arpa	name = dns.google.

Authoritative answers can be found from:

8.8.8.8.in-addr.arpa é o nome formado ao escrever o endereço IPv4 de trás para frente e acrescentar in-addr.arpa. O valor do registro PTR desse nome, dns.google., é o nome de host de 8.8.8.8.

Na consulta reversa, as duas linhas Server do topo não apareceram. Consultando o mesmo endereço com o nslookup 9.18 em um servidor Debian 12, a forma foi a mesma.

6️⃣ Modo interativo do nslookup

Executando o nslookup sem argumentos, você entra no modo interativo com o prompt >. Para consultar vários nomes e tipos de registro em sequência, não é preciso digitar o comando inteiro de novo.

nslookup
> server 8.8.8.8
Default server: 8.8.8.8
Address: 8.8.8.8#53
> set type=mx
> google.com
Server:		8.8.8.8
Address:	8.8.8.8#53

Non-authoritative answer:
google.com	mail exchanger = 10 smtp.google.com.

Authoritative answers can be found from:
> set type=txt
> example.com
Server:		8.8.8.8
Address:	8.8.8.8#53

Non-authoritative answer:
example.com	text = "_k2n1y4vw3qtb4skdx9e7dxt97qrmmq9"
example.com	text = "v=spf1 -all"

Authoritative answers can be found from:
> exit

Troque o servidor DNS consultado com server e defina o tipo de registro com set type=; daí em diante, basta digitar um nome para consultá-lo com essas configurações. Digitando exit, você volta ao shell.

set all mostra todos os valores de configuração atuais.

nslookup
> set type=txt
> set all
Default server: 192.0.2.53
Address: 192.0.2.53#53

Set options:
  novc			nodebug		nod2
  search		recurse
  timeout = 0		retry = 3	port = 53	ndots = 1
  querytype = txt     	class = IN
  srchlist = example.internal
> exit

querytype tinha mudado para txt, o valor definido antes. retry = 3 e port = 53 são valores padrão que não foram alterados.

7️⃣ Instalar o nslookup no Linux e comparar com dig e host

Se ao executar o nslookup no Linux aparecer [command not found], instale o pacote de ferramentas do BIND. No servidor AlmaLinux, o nslookup vinha do pacote bind-utils.

rpm -qf /usr/bin/nslookup
bind-utils-9.16.20-30.el9_8.2.x86_64

No servidor Debian 12 era o pacote bind9-dnsutils. O nome antigo dnsutils continuava existindo como pacote de transição que instala o bind9-dnsutils.

dpkg -S /usr/bin/nslookup
bind9-dnsutils: /usr/bin/nslookup

Na família RHEL, instale o pacote bind-utils com o comando abaixo.

dnf install bind-utils

Na família Debian, instale o pacote bind9-dnsutils.

apt install bind9-dnsutils

O mesmo pacote também traz dig e host. Os três comandos consultam o DNS, mas a saída tem formas diferentes.

ComandoSaídaQuando usar
nslookupLinha Server + resposta, modo interativoConsultar vários nomes e registros em sequência
digTodas as seções do pacote de resposta; com +short, só os valoresExtrair só os valores em um script
hostUma frase por registroVerificar A, AAAA e MX de uma vez
host example.com
example.com has address 172.66.147.243
example.com has address 104.20.23.154
example.com has IPv6 address 2606:4700:10::6814:179a
example.com has IPv6 address 2606:4700:10::ac42:93f3
example.com mail is handled by 0 .

Mesmo sem opções, o host consultou de uma vez os registros A, AAAA e MX e mostrou cada um como uma frase de uma linha. Com +short, o dig deixa só os endereços IP.

dig +short example.com
104.20.23.154
172.66.147.243

Para extrair só os valores em um script, dig +short é mais fácil de manipular, e para verificar vários nomes em sequência, o modo interativo do nslookup é mais prático.

🌏 Se você leu até aqui
Como ver as mesmas informações sem comandos
Os servidores de nomes e registros verificados com o nslookup também podem ser consultados do mesmo jeito na web. A consulta de domínio Whois acrescenta os dados de registro e a data de expiração do comando whois e mostra tudo em uma única tela.
Iniciantes Basta digitar o domínio, sem abrir terminal nem CMD. Registrador, data de registro, data de expiração e status aparecem organizados, junto com os dias que faltam para expirar.
Especialistas Compare lado a lado os servidores de nomes registrados no Whois com as respostas DNS reais e confira os registros A, AAAA, NS, MX e TXT, o TTL e até o texto bruto do Whois.
Abrir consulta de domínio

🔲 Simulador do comando nslookup

No simulador abaixo, você pode digitar o nslookup trocando o tipo de registro e o servidor DNS.

Simulador do comando nslookupnslookup 9.16
[root@server work]#
Funciona só no seu navegador; as respostas vêm de um DNS virtual com valores de consultas reais, e ↑↓ traz de volta os comandos digitados antes.

🔢 FAQ & conteúdo recomendado

No nslookup do Windows também, o primeiro argumento é o nome a consultar e o segundo é o servidor DNS. Executado sem argumentos, ele entra no modo interativo com o prompt >. Os textos da saída no Windows podem ser diferentes dos do Linux.

O nslookup termina com o código de saída 1 se pelo menos uma consulta falhar. Ao mostrar o código de saída depois da consulta de example.invalid, que deu NXDOMAIN, saiu 1, e depois da consulta de example.com foi 0.

Com -type=aaaa só o registro AAAA é consultado. Executando em example.com, vieram só os dois endereços IPv6, sem endereço IPv4.

ℹ️ Aviso de afiliados
O conteúdo deste site contém links de afiliados. Quando um visitante compra um produto ou serviço por meio de um desses links, o site recebe uma comissão do vendedor. O valor que o comprador paga (em promoções, ele diminui ↓) não aumenta por causa disso. Preços, descontos e informações de estoque valem para o momento em que o texto foi escrito e podem ter mudado, por isso confirme com o vendedor antes de comprar. Os produtos são escolhidos e avaliados por critérios próprios, e o recebimento de comissão não influencia a ordem de apresentação nem o conteúdo das avaliações.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Demonstre sua humanidade: 5   +   3   =