nslookup
A ferramenta nslookup é unha utilidade dispoñible a través da liña de comandos en varios sistemas operativos, entre eles Windows e Ubuntu. nslookup mostra información útil para verificar o correcto funcionamento da infraestructura DNS.
Tamén existen ferramentas online como nslookup.io, aínda que estas ferramentas están limitadas a servidores DNS públicos. É dicir, se configuramos un servidor DNS privado, as ferramentas online non terán acceso a ese servidor DNS e, polo tanto, xa non cumpren o seu cometido.
O comando nslookup ten dous modos:
- Interactivo
- Non interactivo
Modo interactivo
Para acceder ao modo interactivo, temos que introducir o comando sen parámetros:
$ nslookup
Ao executar o comando, quedará á espera de novas instrucións. Saberemos que está á espera de novas consultar polo símbolo >. Ao iniciar o modo interactivo, segundo o sistema operativo, mostrarase unha información diferente.
No caso de non ter dispoñible o comando nslookup en Ubuntu, debes instalar o paquete dnsutils co comando sudo apt install dnsutils.
En Windows, mostraranos que servidor DNS se empregará para a resolución das consultas DNS. No seguinte exemplo, nslookup utilizará o servidor DNS one.one.one.one (o cal ten dirección IP 1.1.1.1):
C:\> nslookup
Servidor predeterminado: one.one.one.one
Address: 1.1.1.1
>
O servidor que utiliza nslookup para a resolución de nomes é o que está configurado no sistema operativo como primario ou preferido. Se o servidor primario está caído (non devolve resposta), aínda que haxa un servidor DNS secundario configurado, non se empregará. Nese caso, deberase forzar a nslookup a que se utilice o secundario.
En Linux non se mostrará nada. A información sobre que servidor DNS se emprega para as resolucións das consultas DNS mostrarase cada vez que se realiza unha.
$ nslookup
>
Tamén se pode consultar mediante o comando server:
> server
Default server: 1.1.1.1
Address: 1.1.1.1#53
No exemplo, podemos ver que o servidor DNS que se está empregando é o 1.1.1.1.
Cando se mostra o símbolo >, teremos que introducir un nome para realizar a consulta. Por exemplo, google.com:
> google.com
Servidor: dns.google
Address: 8.8.8.8
Respuesta no autoritativa:
Nombre: google.com
Addresses: 2a00:1450:4003:80a::200e
142.250.184.174
Nunha resposta, nslookup devolve dous datos:
- O servidor DNS empregado para realizar a consulta. Neste exemplo,
8.8.8.8. - A resposta á consulta. Neste caso, como se realizou a consulta para o dominio
google.com, obtivéronse as direccións IP2a00:1450:4003:80a::200ee142.250.184.174.
Dependendo do sistema operativo, a información pódese presentar estruturada de maneira diferente, pero a información é a mesma. Por exemplo:
> google.com
Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
Name: google.com
Address: 142.250.184.174
Name: google.com
Address: 2a00:1450:4003:803::200e
En Ubuntu, cando se realiza unha consulta con nslookup, sempre mostrará o seguinte:
Server: 127.0.0.53
Address: 127.0.0.53#53
Se desexamos evitar que o servidor DNS sexa 127.0.0.53 podemos editar o ficheiro /etc/resolv.conf. O contido do ficheiro é o seguinte:
# This file is managed by man:systemd-resolved(8). Do not edit.
#
# This is a dynamic resolv.conf file for connecting local clients to the
# internal DNS stub resolver of systemd-resolved. This file lists all
# configured search domains.
#
# Run "resolvectl status" to see details about the uplink DNS servers
# currently in use.
#
# Third party programs should typically not access this file directly, but only
# through the symlink at /etc/resolv.conf. To manage man:resolv.conf(5) in a
# different way, replace this symlink by a static file or a different symlink.
#
# See man:systemd-resolved.service(8) for details about the supported modes of
# operation for /etc/resolv.conf.
nameserver 127.0.0.53
options edns0 trust-ad
Para conseguir o obxectivo, temos que modificar a liña destacada. En lugar de ter 127.0.0.53, poñeremos a dirección IP do servidor DNS que queiramos empregar. Algúns exemplos de servidores públicos son 1.1.1.1 ou 8.8.8.8. Tamén podemos indicar direccións IP de servidores DNS privados. Polo tanto, substituiremos a liña destacada por algo como o seguinte:
nameserver 1.1.1.1
Unha vez realizado o cambio, automaticamente se realizarán todas as consultas a este servidor DNS.
Vexamos outro exemplo. Se introducimos outro dominio como microsoft.com, a consulta mostrará unha información similar:
> microsoft.com
Servidor: dns.google
Address: 8.8.8.8
Respuesta no autoritativa:
Nombre: microsoft.com
Addresses: 104.215.148.63
40.76.4.15
40.112.72.205
40.113.200.201
13.77.161.179
Na resposta anterior podemos ver que emprega o mesmo servidor DNS para realizar a consulta e que se obteñen 5 direccións IP para o dominio microsoft.com.
Tamén podemos realizar consultas inversas poñendo unha dirección IP. Por exemplo:
> 1.1.1.1
1.1.1.1.in-addr.arpa name = one.one.one.one.
Authoritative answers can be found from:
No exemplo anterior, obtemos que o dominio correspondente coa IP 1.1.1.1 é one.one.one.one..
Cando queiramos pechar o modo interactivo, só teremos que escribir o seguinte:
> exit
Modo non interactivo
Se só se vai realizar unha consulta, recoméndase o modo non interactivo. Neste modo, temos que pasarlle uns parámetros a nslookup. O primeiro parámetro é o nome de dominio para o cal queremos realizar a consulta. Por exemplo, se queremos realizar unha consulta do dominio youtube.com, farémolo da seguinte maneira:
$ nslookup youtube.com
Exemplo de saída de comando
$ nslookup youtube.com
Server: 1.1.1.1
Address: 1.1.1.1#53
Non-authoritative answer:
Name: youtube.com
Address: 142.250.185.14
Name: youtube.com
Address: 2a00:1450:4003:803::200e
Unha vez executado o comando, realízase a consulta, móstrase a información e finalízase o programa. A información mostrada no modo non interactivo é a mesma que a que se mostra no modo interactivo.
Utilizar un servidor DNS determinado
Se queremos forzar a que a consulta se realice cun servidor DNS concreto, indicarémolo a continuación do dominio a consultar. Por exemplo, se queremos obter a dirección IP do dominio youtube.com a través do servidor DNS con IP 1.0.0.1, executaremos o seguinte:
$ nslookup youtube.com 1.0.0.1
Exemplo de saída de comando
$ nslookup youtube.com 1.0.0.1
Server: 1.0.0.1
Address: 1.0.0.1#53
Non-authoritative answer:
Name: youtube.com
Address: 142.250.185.14
Name: youtube.com
Address: 2a00:1450:4003:803::200e
Poderase observar nas dúas primeiras liñas que se está utilizando o servidor DNS indicados por parámetros.
Obter rexistros NS
Podemos obter a lista de servidores de nomes dun dominio. Só temos que executar o comando nslookup indicándolle que queremos os rexistros NS. Isto facémolo da seguinte forma:
$ nslookup -type=ns google.com
Exemplo de saída de comando
$ nslookup -type=ns google.com
Server: 1.1.1.1
Address: 1.1.1.1#53
Non-authoritative answer:
google.com nameserver = ns3.google.com.
google.com nameserver = ns4.google.com.
google.com nameserver = ns2.google.com.
google.com nameserver = ns1.google.com.
Authoritative answers can be found from:
Podemos ver que os servidores de nomes de google.com son:
ns1.google.com.ns2.google.com.ns3.google.com.ns4.google.com.
Obter rexistros MX
Podemos consultar outros rexistros cambiando o valor do parámetro type. Por exemplo, para obter os rexistros MX de google.com, poñemos o seguinte:
$ nslookup -type=mx google.com
Exemplo de saída de comando
$ nslookup -type=mx google.com
Server: 1.1.1.1
Address: 1.1.1.1#53
Non-authoritative answer:
google.com mail exchanger = 50 alt4.aspmx.l.google.com.
google.com mail exchanger = 20 alt1.aspmx.l.google.com.
google.com mail exchanger = 40 alt3.aspmx.l.google.com.
google.com mail exchanger = 30 alt2.aspmx.l.google.com.
google.com mail exchanger = 10 aspmx.l.google.com.
Authoritative answers can be found from:
Da resposta da consulta, obtemos que os servidores de correo son (de maior a menor preferencia):
alt4.aspmx.l.google.comalt1.aspmx.l.google.comalt3.aspmx.l.google.comalt2.aspmx.l.google.comaspmx.l.google.com
Obter rexistro SOA
Podemos consultar o rexistro SOA co parámetro -type=soa. Por exemplo, para obter o rexistro SOA de google.com, poñemos o seguinte:
$ nslookup -type=soa google.com
Exemplo de saída de comando
$ nslookup -type=soa google.com
Server: 1.1.1.1
Address: 1.1.1.1#53
Non-authoritative answer:
google.com
origin = ns1.google.com
mail addr = dns-admin.google.com
serial = 356224418
refresh = 900
retry = 900
expire = 1800
minimum = 60
Authoritative answers can be found from:
Obter todos os rexistros
Podemos obter todos os rexistros (de calquera tipo) dun dominio, podemos empregar o seguinte comando:
$ nslookup -type=any google.com
Exemplo de saída de comando
$ nslookup -type=any google.com
Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
Name: google.com
Address: 74.125.140.139
Name: google.com
Address: 74.125.140.138
Name: google.com
Address: 74.125.140.113
Name: google.com
Address: 74.125.140.101
Name: google.com
Address: 74.125.140.102
Name: google.com
Address: 74.125.140.100
Name: google.com
Address: 2a00:1450:400c:c08::65
Name: google.com
Address: 2a00:1450:400c:c08::71
Name: google.com
Address: 2a00:1450:400c:c08::8a
Name: google.com
Address: 2a00:1450:400c:c08::8b
google.com nameserver = ns3.google.com.
google.com text = "docusign=1b0a6754-49b1-4db5-8540-d2c12664b289"
google.com nameserver = ns1.google.com.
google.com rdata_257 = 0 issue "pki.goog"
google.com text = "v=spf1 include:_spf.google.com ~all"
google.com
origin = ns1.google.com
mail addr = dns-admin.google.com
serial = 356461415
refresh = 900
retry = 900
expire = 1800
minimum = 60
google.com nameserver = ns4.google.com.
google.com mail exchanger = 10 aspmx.l.google.com.
google.com nameserver = ns2.google.com.
google.com mail exchanger = 50 alt4.aspmx.l.google.com.
google.com text = "docusign=05958488-4752-4ef2-95eb-aa7ba8a3bd0e"
google.com mail exchanger = 40 alt3.aspmx.l.google.com.
google.com mail exchanger = 20 alt1.aspmx.l.google.com.
google.com text = "globalsign-smime-dv=CDYX+XFHUw2wml6/Gb8+59BsH31KzUr6c1l2BPvqKX8="
google.com mail exchanger = 30 alt2.aspmx.l.google.com.
google.com text = "facebook-domain-verification=22rm551cu4k0ab0bxsw536tlds4h95"
Authoritative answers can be found from:
Se o servidor DNS non devolve ningunha resposta co parámetro -type=any, podes probar con outro diferente. Para iso, debes indicar a dirección IP do servidor DNS ao final do comando.
$ nslookup -type=any google.com 8.8.8.8
Modo debug
O modo debug mostra que pasos se levan a cabo para resolver a consulta que se está a producir. Para utilizar este modo, debemos indicalo da seguinte forma:
$ nslookup -debug google.com
Exemplo de saída de comando
$ nslookup -debug google.com
Server: 1.1.1.1
Address: 1.1.1.1#53
------------
QUESTIONS:
google.com, type = A, class = IN
ANSWERS:
-> google.com
internet address = 172.217.168.174
ttl = 170
AUTHORITY RECORDS:
ADDITIONAL RECORDS:
------------
Non-authoritative answer:
Name: google.com
Address: 172.217.168.174
------------
QUESTIONS:
google.com, type = AAAA, class = IN
ANSWERS:
-> google.com
has AAAA address 2a00:1450:4003:80a::200e
ttl = 182
AUTHORITY RECORDS:
ADDITIONAL RECORDS:
------------
Name: google.com
Address: 2a00:1450:4003:80a::200e
No exemplo anterior podemos ver que, por defecto, nslookup realiza dúas consultas: unha para o rexistro A e outra para o rexistro AAAA.