Cómo usar el comando dig en Linux

El comando dig en Linux te permite consultar servidores DNS y realizar búsquedas DNS. También puedes encontrar el dominio al que conduce una dirección IP. ¡Te mostraremos cómo!

Cómo funciona el comando dig

La gente usa el comando dig en Linux para consultar los servidores del Sistema de nombres de dominio (DNS). dig es un acrónimo de Domain Information Groper.

Con dig, puedes consultar los servidores DNS para obtener información sobre varios registros DNS. Esta información incluye las direcciones de host, los intercambios de correo, los servidores de nombres y la información relacionada.

Estaba destinado a ser una herramienta para diagnosticar problemas de DNS. Empero, puedes usarlo para hurgar y aprender más sobre DNS, que es uno de los sistemas centrales que mantiene el tráfico de enrutamiento de Internet.

Internet usa direcciones de protocolo de Internet (IP) para identificar “ubicaciones” en la web, pero las personas usan nombres de dominio.

Cuando escribes un nombre de dominio en una aplicación, como un navegador web o un cliente SSH, algo tiene que traducirse del nombre de dominio a la dirección IP real. Aquí es donde entra en juego el sistema de nombres de dominio.

Usos de DNS

Cuando usas un nombre de dominio con cualquier programa conectado a Internet, tu enrutador local no puede resolverlo. A menos que esté almacenado en caché de una solicitud anterior. Por lo tanto, tu enrutador consulta el servidor DNS de tu proveedor de servicios de Internet (ISP) o cualquier otro que haya configurado tu sistema para usar. Estos se llaman servidores precursores DNS.

Si el servidor DNS recibió recientemente la misma solicitud de otra persona en la misma computadora, la respuesta podría estar en su caché. De ser este el caso, simplemente envía esa misma información a tu programa.

Si el servidor DNS precursor no puede ubicar el dominio en tu caché, se contacta con un DNS root name server. Un servidor root no contendrá la información requerida para resolver nombres de dominio en direcciones IP. Empero contendrá listas de servidores que pueden ayudarte con tu solicitud.

El servidor root examina el dominio de nivel superior al que pertenece tu nombre de dominio, como .COM, .ORG, .CO.UK, etc. Luego envía una lista de los servidores de dominio de nivel superior que manejan esos tipos de dominios al servidor precursor de DNS. El servidor precursor de DNS puede hacer tu solicitud una vez más, a un servidor de dominio de nivel superior.

En este caso el servidor de dominio de nivel superior envía los detalles del servidor de nombres autorizado (donde se almacenan los detalles del dominio) al servidor precursor de DNS.

El servidor DNS luego consulta el servidor de nombres autorizado que aloja la zona del dominio que ingresaste originalmente en tu programa. El servidor de nombres autorizado devuelve la dirección IP al servidor DNS, que, a su vez, te la devuelve.

Instalación de dig

Dig ya estaba instalado en nuestras computadoras Ubuntu 18.04 y Fedora 30. Sin embargo, tuvimos que instalarlo en la computadora Manjaro 18.04 con el siguiente comando:

Comenzando a trabajar con dig

En nuestro primer ejemplo, devolveremos las direcciones IP asociadas con un nombre de dominio. A menudo, varias direcciones IP están asociadas con un solo nombre de dominio. Esto sucede a menudo si se usa el equilibrio de carga, por ejemplo.

Usamos la opción de consulta +short, como se muestra a continuación, que nos da una respuesta concisa:

Todas las direcciones IP asociadas con el dominio howtogeek.com se listan para nosotros. En el otro extremo del espectro, si no usamos la opción de consulta +short, el resultado es bastante detallado.

Entonces, escribimos lo siguiente para canalizarlo con less:

La salida se muestra en less, como puedes ver a continuación.

Aquí está el listado completo:

Vamos a diseccionar esto parte por parte:

Encabezado

Primero, echemos un vistazo a lo que tenemos en el encabezado:

Ahora, esto es lo que todo eso significa:

  • Primera línea: la versión de dig y el dominio que se consultó.
  • Global options:  como veremos, puedes usar dig para consultar varios dominios simultáneamente. Esta línea muestra las opciones que se han aplicado a todas las consultas de dominio. En nuestro ejemplo simple, era solo la opción predeterminada +cmd (comando).
  • Opcode: Query: Este es el tipo de operación que se solicitó y que, en este caso, fue a query. Este valor también puede ser iquery para una consulta inversa, o status si solo estás probando el estado del sistema DNS.
  • Status: Noerror: no hubo errores y la solicitud se resolvió correctamente.
  • ID: 12017: Este ID aleatorio une la solicitud y la respuesta.
  • Flags: qr rd ra: Estos son soportes para queryrecursion desiredrecursion available. La recursión es una forma de búsqueda de DNS (la otra es iterativa). También puedes ver AA, que significa Respuesta autoritativa, lo que significa que un Servidor de nombres autorizado proporcionó la respuesta.
  • Query: 1: el número de consultas en esta sesión, que fue una.
  • Answer: 4: El número de respuestas en esta consulta, que es cuatro.
  • Authority: 0: El número de respuestas que provienen de un servidor de nombres autorizado, que en este caso era cero. La respuesta fue devuelta desde el caché de un servidor precursor de DNS. No habrá una sección autorizada en la respuesta.
  • Additional: 1: Hay una pieza de información adicional. (Curiosamente, no se enumera nada a menos que este valor sea dos o más alto).

Opt Pseudosection

A continuación, observamos lo siguiente en Opt Pseudosection:

Analicemos eso:

  • EDNS: version 0: la versión del Sistema de extensión para DNS que se está utilizando. EDNS transmite datos e indicadores extendidos al ampliar el tamaño de los paquetes del Protocolo de datagramas de usuario (UDP). Esto se indica mediante un indicador de tamaño variable.
  • Flags: no hay indicadores en uso.
  • udp4096: el tamaño del paquete UDP.

Question Section

En la sección Question, observamos lo siguiente:

  • howtogeek.com: el nombre de dominio que estamos consultando.
  • IN: Estamos haciendo una consulta de clase de internet.
  • R: A menos que especifiquemos lo contrario, dig solicitará un registro A (dirección) del servidor DNS.

Sección Answer

La sección Respuesta contiene las siguientes cuatro respuestas que recibimos del servidor DNS:

Esto es lo que significan estas respuestas:

  • 3551: este es el tiempo de vida (TTL), un entero con signo de 32 bits que contiene el intervalo de tiempo para el que se puede almacenar en caché un registro. Cuando caduca, los datos deben usarse en una respuesta a una solicitud hasta que el servidor DNS los actualice.
  • IN: Hicimos una consulta de clase de Internet.
  • R: Solicitamos un registro A del servidor DNS.

Sección Statistics

Estadísticas es la sección final, y contiene la siguiente información:

Esto es lo que tenemos:

  • Query Time: 0 msec: el tiempo que tardó en obtener la respuesta.
  • SERVER: 127.0.0.53#53(127.0.0.53): la dirección IP y el número de puerto del servidor DNS que respondió. En este caso, apunta al solucionador de código auxiliar de almacenamiento en caché local. Esto reenvía las solicitudes de DNS a los servidores DNS ascendentes que estén configurados. En la computadora de prueba de Manjaro, la dirección que aparece aquí era 8.8.8.8 # 53, que es el servicio de DNS público de Google.
  • WHEN: Sun Mar 22 07:44:37 EDT 2020: cuando se realizó la solicitud.
  • MSG SIZE rcvd: 106: el tamaño del mensaje recibido del servidor DNS.

Debes ser selectivo

No tiene que conformarte con los dos extremos de los labios apretados y los garrulos. El comando dig te permite incluir o excluir secciones selectivamente de los resultados.

Las siguientes opciones de consulta eliminarán esa sección de los resultados:

  • + nocomments: no mostrar líneas de comentarios.
  • + noauthority: no mostrar la sección de autoridad.
  • + noadditional: no muestra la sección adicional.
  • + nostats: no muestra la sección de estadísticas.
  • + noanswer: no muestra la sección de respuestas.
  • + noall: ¡No muestres nada!

La opción +noall de consulta generalmente se combina con una de las anteriores para incluir una sección en los resultados. Entonces, en lugar de escribir una larga cadena de opciones de consulta para desactivar varias secciones, puedes usar +noall para desactivarlas todas.

Luego puedes usar las siguientes opciones de consulta inclusivas para volver a activar aquellas que deseas ver:

  • +comments: Mostrar líneas de comentarios.
  • + authority: muestra la sección de autoridad.
  • + additional: muestra la sección adicional.
  • + stats: muestra la sección de estadísticas.
  • +answer: muestra la sección de respuestas.
  • + all: muestra todo.

Escribimos lo siguiente para realizar una solicitud y excluimos las líneas de comentarios:

Si usamos la opción +noall de consulta por sí sola, como se muestra a continuación, no obtendremos ningún resultado útil:

Podemos agregar selectivamente las secciones que queremos ver. Para agregar la sección de respuestas, escribimos lo siguiente:

Si escribimos lo siguiente para activar +stats, también veremos la sección de estadísticas:

La combinación +noall +answer se usa a menudo. Puedes agregar otras secciones a la línea de comandos según sea necesario. Si deseas evitar escribir +noall +answer en la línea de comandos cada vez que uses dig, puedes colocarlos en un archivo de configuración llamado “.digrc”. Debe localizarse en tu directorio de inicio.

Crear el documento

Escribimos lo siguiente para crear uno con echo:

Luego podemos escribir lo siguiente para verificar su contenido:

Esas dos opciones ahora se aplicarán a todos los usos futuros de dig, como se muestra a continuación:

Este archivo de configuración de dig se usará para los ejemplos restantes de este artículo.

Registros DNS

La información devuelta a tus solicitudes dig se extrae de diferentes tipos de registros almacenados en el servidor DNS. A menos que solicitemos algo diferente, dig consulta el registro A (dirección). Los siguientes son los tipos de registros comúnmente utilizados con dig:

  • A Record:  vincula el dominio a una dirección IP versión 4.
  • MX Record: el intercambio de correo registra correos electrónicos directos enviados a dominios al servidor de correo correcto.
  • NS Record: los registros del servidor de nombres delegan un dominio (o subdominio) a un conjunto de servidores DNS.
  • TXT Record: los registros de texto almacenan información basada en texto con respecto al dominio. Por lo general, pueden usarse para suprimir correos electrónicos falsificados o suplantados.
  • SOA Record: los registros de inicio de autoridad pueden contener mucha información sobre el dominio. Aquí puedes encontrar el servidor de nombres principal, la parte responsable, un registro temporal para los cambios. Asimismo, la frecuencia de las actualizaciones de zona y una serie de límites de tiempo para reintentos y abandonos.
  • TTL: Time to live es una configuración para cada registro DNS que especifica cuánto tiempo un servidor precursor DNS puede almacenar en caché cada consulta DNS. Cuando ese tiempo expira, los datos deben actualizarse para solicitudes posteriores.
  • ANY: Esto le indica a dig que devuelva cada tipo de registro DNS que pueda.

Especificar el tipo de registro A no cambia la acción predeterminada, que es consultar el registro de dirección y obtener la dirección IP. Por ejemplo, como se muestra a continuación:

Para consultar los registros de intercambio de correo, utilizamos el siguiente indicador MX:

El indicador del servidor de nombres devuelve el siguiente nombre de los servidores de nombres root asociados con el dominio de nivel superior:

Consultar registro de autoridad

Para consultar el inicio del registro de autoridad, escribimos el siguiente indicador SOA:

El indicador TTL nos mostrará el tiempo de vida de los datos en la memoria caché del servidor DNS. Si hacemos una serie de solicitudes, vemos que el tiempo de vida se reduce a nada y luego volvemos a su valor inicial.

Escribimos lo siguiente:

Para ver los registros de texto, escribimos el indicador TX:

Especificando el servidor DNS

Si deseas usar un servidor DNS particular para tu solicitud, puedes usar el signo arroba (@) para pasarlo a dig como un parámetro de línea de comandos.

Con el servidor DNS predeterminado (ver más abajo), dig hace referencia al solucionador de código auxiliar de almacenamiento en caché local en 127.0.0.53.

Ahora, escribimos lo siguiente para usar el servidor DNS público de Google en 8.8.8.8:

Usando dig con múltiples dominios

Podemos pasar múltiples dominios a dig desde la línea de comando, como se muestra a continuación:

Si verificas regularmente un conjunto de dominios, puedes almacenarlos en un archivo de texto y pasárselos a dig. Todos los dominios en el archivo serán verificados a su vez.

Nuestro archivo se llama “domains.txt”. Usaremos cat para mostrar su contenido y luego se lo pasaremos a dig con la opción –f (archivo). Escribimos lo siguiente:

Búsqueda inversa de DNS

Si tienes una dirección IP y deseas saber a dónde va, puedes intentar una búsqueda inversa de DNS. En caso de que se resuelva en un servidor registrado con un servidor DNS, es posible que puedas averiguar su dominio.

Si puede, depende de la presencia de un PTR (registro de puntero). Los PTR resuelven una dirección IP en un nombre de dominio completo. Sin embargo, debido a que estos no son obligatorios, no siempre están presentes en un dominio.

Veamos si podemos averiguar a dónde nos lleva la dirección IP 209.51.188.148. Escribimos lo siguiente, usando la opción –x (búsqueda inversa):

¡Lotería! La dirección IP se resuelve en gnu.org.

Debido a que un PTR es un registro DNS, y sabemos que dig puede solicitar registros DNS específicos, ¿no podríamos simplemente pedir a dig que recuperemos el PTR? Sí, podemos, pero requiere un poco más de trabajo.

Tenemos que proporcionar la dirección IP en orden inverso y agregar .in-addr.arpa al final, como se muestra a continuación:

Obtenemos el mismo resultado; solo tomó un poco más de esfuerzo.

¿Para qué me puede servir dig?

Todos usamos Internet a diario. Las mentes curiosas a menudo se han preguntado cómo ocurre la magia cuando escribimos el nombre de un sitio web en un navegador. Con dig, puedes explorar los procesos de confabulación de la red.