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