Herramientas de diagnóstico para pruebas de DNS en sistemas Linux

El diagnóstico de la resolución de nombres es una tarea fundamental para administradores de sistemas y especialistas en redes. En entornos Linnux, existen tres herramientas principales para realizar consultas manuales a servidores DNS: host, dig y nslookup.

Uso del comando host

El comando host es una utilidad sencilla diseñada para realizar búsquedas DNS rápidas convirtiendo nombres de dominio en direcciones IP y viceversa.

Consulta a un servidor específico

Para verificar la resolución en un servidor DNS determinado (por ejemplo, un servidor interno en la IP 10.0.0.50), se puede pasar la dirección del servidor como segundo argumento:

$ host example.com 10.0.0.50

Using domain server:
Name: 10.0.0.50
Address: 10.0.0.50#53
Aliases: 

example.com has address 93.184.216.34
example.com has IPv6 address 2606:2800:220:1:248:1893:25c8:1946

Especificar un puerto personalizado

Si el servicio DNS no se está ejecutando en el puerto estándar (53), se utiliza el parámetro -p:

$ host -p 8053 example.org 192.168.1.200
Using domain server:
Name: 192.168.1.200
Address: 192.168.1.200#8053

example.org has address 93.184.216.34

Búsqueda por tipos de registros

Es posible filtrar la consulta para obtener registros específicos como MX (servidores de correo) o NS (servidores de nombres) mediante el parámetro -t:

$ host -t MX google.com
$ host -t NS cloudflare.com
$ host -t SOA debian.org
$ host 8.8.4.4

Análisis avanzado con dig

dig (Domain Information Groper) es la herramienta más robusta y preferida por ingenieors de redes debido a su salida detallada y flexibilidad.

Consultas básicas y personalizadas

La sintaxis utiliza el símbolo @ para definir el servidor de destino:

$ dig google.com @8.8.8.8

; <<>> DiG 9.16.1-Ubuntu <<>> google.com @8.8.8.8
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 45210
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;google.com.			IN	A

;; ANSWER SECTION:
google.com.		235	IN	A	142.250.190.46

;; Query time: 15 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)

Uso de puertos no estándar

Al igual que con host, si el servidor escucha en un puerto distinto, se especifica con -p:

$ dig mydomain.local @127.0.0.1 -p 5353

Simulación de ubicación geográfica (EDNS0 Client Subnet)

Muchos servicios de CDN devuelven IPs diferentes según el origen de la consulta. Con el parámetro +subnet, podemos indicarle al DNS que simule una petición proveniente de una red específica:

$ dig www.facebook.com @8.8.8.8 +subnet=185.60.216.35

; CLIENT-SUBNET: 185.60.216.35/32/24
;; ANSWER SECTION:
www.facebook.com.	3600	IN	CNAME	star-mini.c10r.facebook.com.
star-mini.c10r.facebook.com. 60	IN	A	157.240.22.35

Transferencia de zona (AXFR)

Para intentar listar todos los registros de un dominio (si el servidor lo permite), se utiliza el tipo axfr:

$ dig -t axfr internal.lan @10.0.0.1

Uso de nslookup

Aunque es una herramienta considerada antigua, sigue seindo ampliamente utilizada por su disponibilidad tanto en Windows como en Linux y su modo interactivo.

Modo comando directo

Se puede ejecutar una consulta rápida pasando el dominio y el servidor DNS:

$ nslookup kernel.org 1.1.1.1
Server:		1.1.1.1
Address:	1.1.1.1#53

Non-authoritative answer:
Name:	kernel.org
Address: 147.75.197.195

Modo interactivo

Este modo permite realizar múltiples consultas sin salir de la herramienta y cambiar configuraciones sobre la marcha:

$ nslookup
# Definir el servidor a consultar
> server 8.8.4.4
Default server: 8.8.4.4
Address: 8.8.4.4#53

# Cambiar el tipo de registro a buscar
> set type=mx
> redhat.com
Server:		8.8.4.4
Address:	8.8.4.4#53

redhat.com	mail exchanger = 10 mx1.redhat.com.
redhat.com	mail exchanger = 10 mx2.redhat.com.

# Volver a registros A
> set q=A
> fedoraproject.org
> exit

Etiquetas: dns dig nslookup Networking Sysadmin

Publicado el 7-2 01:10