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