dig (domain information grouper) es una herramienta para consultar servidores DNS (lookup). Realiza consultas y muestra la respuesta retornada por el servidor consultado. La mayoría de los administradores de sistemas utilizan dig para diagnosticar problemas con la resolución de nombres (traducción de nombres de host a direcciones IP) debido a su flexibilidad, facilidad de uso y claridad en la salida. Otras herramientas de lookup (como nslookup o host) tienden a tener menos funcionalidades que dig.



La herramienta dig es provista en Debian/Devuan y derivados por el paquete dnsutils. Para instalarlo simplemente ejecutar apt-get install dnsutils como root.

En sistemas operativos basados en Red Hat es provista por el paquete bind-utils. Instalarlo ejecutando yum install bind-utils como root.

Consultas básicas (registros A y AAAA)

Por defecto dig consulta el valor del registro A para el nombre de host especificado como parámetro. Esto es, obtener la dirección IPv4 asociada al nombre de host:

root@linuxito:~# dig www.google.com

; <<>> DiG 9.8.4-rpz2+rl005.12-P1 <<>> www.google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 57997
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;www.google.com.                        IN      A

;; ANSWER SECTION:
www.google.com.         299     IN      A       172.217.0.132

;; Query time: 14 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Thu Aug 10 08:19:53 2017
;; MSG SIZE  rcvd: 48

"www.google.com" resuelve a la dirección IPv4 172.217.0.132.

Para resolver la dirección IPv6, es necesario obtener el registro AAAA:

root@linuxito:~# dig AAAA www.google.com

; <<>> DiG 9.8.4-rpz2+rl005.12-P1 <<>> AAAA www.google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 41640
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;www.google.com.                        IN      AAAA

;; ANSWER SECTION:
www.google.com.         21      IN      AAAA    2607:f8b0:4002:805::2004

;; Query time: 2 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Wed Aug  9 08:40:21 2017
;; MSG SIZE  rcvd: 60

Control de la salida de dig

La salida por defecto es muy verbosa. Es posible controlar la cantidad de información que muestra a través de diferentes opciones de consulta.

Agregando la opción +nocomments es posible eliminar los comentarios:

root@linuxito:~# dig +nocomments AAAA www.google.com

; <<>> DiG 9.8.4-rpz2+rl005.12-P1 <<>> +nocomments AAAA www.google.com
;; global options: +cmd
;www.google.com.                        IN      AAAA
www.google.com.         249     IN      AAAA    2607:f8b0:4002:805::2004
;; Query time: 2 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Wed Aug  9 08:41:42 2017
;; MSG SIZE  rcvd: 60

Para eliminar el comentario inicial (el cual incluye la versión de dig y el comando ejecutado) agregar +nocmd:

root@linuxito:~# dig +nocmd +nocomments AAAA www.google.com
;www.google.com.                        IN      AAAA
www.google.com.         299     IN      AAAA    2607:f8b0:4002:c03::68
;; Query time: 3 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Wed Aug  9 09:00:45 2017
;; MSG SIZE  rcvd: 60

También es posible ignorar las estadísticas de la consulta con +nostats:

root@linuxito:~# dig +nostats +nocmd +nocomments AAAA www.google.com
;www.google.com.                        IN      AAAA
www.google.com.         210     IN      AAAA    2607:f8b0:4002:c03::67

Finalmente, la opción +short retorna sólo el valor del registro consultado (ideal para utilizar en scripts):

root@linuxito:~# dig +short AAAA www.google.com
2607:f8b0:4002:c03::68

A continuación, veamos cómo consultar los diferentes tipos de registros DNS.

Servidor de nombres (registros NS)

Los registros NS indican los nombres de host de los servidores DNS para la zona indicada. Por ejemplo, para conocer los nombres de host de los servidores de nombres de la zona "google.com":

root@linuxito:~# dig +short NS google.com
ns3.google.com.
ns2.google.com.
ns1.google.com.
ns4.google.com.

Inicio de zona (registro SOA)

El registro SOA indica quién es la autoridad de la zona, incluyendo el servidor de nombres principal, dirección de correo electrónico del administrador de dominio, número de serie del dominio (el cual es utilizado por servidores de nombre para determinar si la información de una zona está actualizada) e información de refresco de la zona:

root@linuxito:~# dig +short SOA google.com
ns1.google.com. dns-admin.google.com. 164807749 900 900 1800 60

Servidores de correo (registros MX)

Los registros MX (Mail Exchange) indican los nombres de host de los servidores de correo. Son indispensables para el funcionamiento de los servicios de correo electrónico de la zona:

root@linuxito:~# dig +short MX google.com
50 alt4.aspmx.l.google.com.
20 alt1.aspmx.l.google.com.
10 aspmx.l.google.com.
40 alt3.aspmx.l.google.com.
30 alt2.aspmx.l.google.com.

Generalmente cada zona tiene múltiples servidores de correo con diferentes prioridades.

Resolución inversa (consulta del registro PTR)

La resolución inversa (no siempre está definida) indica qué nombre o nombres de host están asignados a una cierta dirección IP. dig posee la opción -x para obtener los nombres de host asociados a una dirección IP:

root@linuxito:~# dig +short -x 172.217.2.37
atl14s78-in-f5.1e100.net.
atl14s78-in-f5.1e100.net.

Sin embargo, también es posible consultar el registro PTR para el dominio in-addr.arpa:

root@linuxito:~# dig +short PTR 37.2.217.172.in-addr.arpa.
atl14s78-in-f5.1e100.net.
atl14s78-in-f5.1e100.net.

Registro TXT

El registro TXT originalmente fue diseñado para almacenar texto plano legible para el humano. Sin embargo generalmente se utiliza para la protección del dominio a través de mecanismos como SPF o DKIM:

root@linuxito:~# dig +short TXT google.com
"v=spf1 include:_spf.google.com ~all"

Se observa que el registro TXT de la zona "google.com" almacena la configuración SPF de la misma.

Consultar servidores DNS específicos

Por defecto, dig consulta a los servidores DNS configurados en el sistema (en el archivo /etc/resolv.conf). Sin embargo, es posible consultar a cualquier servidor DNS en Internet a través del parámetro @.

Por ejemplo, para consultar a los servidores DNS públicos de Verisign:

root@linuxito:~# dig @64.6.64.6 www.linuxito.com

; <<>> DiG 9.8.4-rpz2+rl005.12-P1 <<>> @64.6.64.6 www.linuxito.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 53572
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;www.linuxito.com.              IN      A

;; ANSWER SECTION:
www.linuxito.com.       1799    IN      CNAME   linuxito.com.
linuxito.com.           1799    IN      A       192.184.81.204

;; Query time: 28 msec
;; SERVER: 64.6.64.6#53(64.6.64.6)
;; WHEN: Thu Aug 10 08:57:20 2017
;; MSG SIZE  rcvd: 64

Sólo es necesario conocer la dirección IP del servidor de nombres que se desea consultar. Esta funcionalidad es interesante para comparar la velocidad de diferentes servidores DNS (ver la línea ";; Query time:").

Referencias


Tal vez pueda interesarte


Compartí este artículo y dejá tu comentario