El comando dig en Linux: consultas DNS avanzadas

Introducción

El comando dig (Domain Information Groper) es una herramienta esencial para administradores de sistemas y profesionales de redes en Linux. Permite realizar consultas DNS de forma detallada y flexible, superando a utilidades más simples como nslookup o host. Su origen en el paquete BIND le otorga una precisión y riqueza de opciones que lo convierten en el estándar de facto para el diagnóstico de nombres de dominio.

¿Qué es dig?

Dig forma parte del paquete BIND (Berkeley Internet Name Domain) y se encarga de interrogar servidores de nombres para obtener información sobre registros DNS, como A, AAAA, MX, TXT, CNAME, NS, SRV y muchos otros. Su salida puede personalizarse mediante diversas opciones, lo que lo convierte en un aliado poderoso para depurar problemas de resolución de nombres, validar configuraciones de zona y automatizar tareas mediante scripts.

Instalación

En la mayoría de las distribuciones de Linux, dig viene preinstalado. Si no está disponible, basta con instalar el paquete correspondiente:

  • Debian/Ubuntu: sudo apt-get install dnsutils
  • Red Hat/CentOS: sudo yum install bind-utils
  • Fedora: sudo dnf install bind-utils
  • Arch Linux: sudo pacman -S bind-tools

Consultas básicas

Una consulta sencilla se ejecuta indicando el nombre a resolver:

dig example.com

Esto devuelve la sección de respuesta con el registro A por defecto, junto con la sección de pregunta, autoridad y adicional. Cada sección incluye información útil como el tiempo de vida (TTL), la clase (IN) y el tipo de registro.

Consultas avanzadas

Dig ofrece múltiples flags que permiten afinar la consulta:

  • +short: muestra solo la respuesta, ideal para scripts.
  • +trace: muestra el recorrido completo desde las raíces hasta el servidor autoritativo, mostrando cada paso de la delegación.
  • +json: (disponible en versiones recientes) genera la salida en formato JSON para un fácil procesamiento por programas.
  • @servidor: especifica el servidor DNS a consultar, por ejemplo @8.8.8.8 o @1.1.1.1.
  • tipo: indica el tipo de registro, como MX, TXT, ANY o SRV.
  • +noall +answer: suprime todas las secciones excepto la de respuesta, útil para obtener datos limpios.
  • +retry=N: define cuántos reintentos realizar en caso de timeout.
  • +timeout=N: establece el tiempo de espera en segundos para cada consulta.

Ejemplos prácticos

Algunos usos comunes:

  • Obtener solo la dirección IP:
  • dig +short example.com
  • Consultar registros MX de un dominio:
  • dig example.com MX +short
  • Realizar un trazado de la consulta:
  • dig +trace example.com
  • Obtener información en JSON:
  • dig @1.1.1.1 example.com TXT +json
  • Consultar todos los registros disponibles (sin mostrar la sección de autoridad ni adicional):
  • dig example.com ANY +noall +answer
  • Filtrar respuestas con grep para obtener solo las direcciones IPv6:
  • dig example.com AAAA +short | grep -v '^;'
  • Medir el tiempo de respuesta de varios servidores DNS:
  • for s in 8.8.8.8 1.1.1.1 9.9.9.9; do dig @$s example.com +short +time=1 +tries=1; done

Combinar dig con otras herramientas

La potencia de dig se amplifica cuando se usa junto a herramientas de procesamiento de texto:

  • awk: extraer campos específicos, por ejemplo el TTL: dig example.com +noall +answer | awk '{print $2}'
  • sort -u: obtener una lista única de registros: dig example.com TXT +short | sort -u
  • jq (para salida JSON): procesar la salida JSON de dig: dig @1.1.1.1 example.com +json | jq '.Answer[] | select(.type=="A") | .data'

Buenas prácticas y limitaciones

Aunque dig es muy versátil, es importante tener en cuenta algunas consideraciones:

  • Evitar consultas ANY en servidores de producción, ya que pueden generar respuestas grandes y ser utilizadas en ataques de amplificación.
  • Usar los flags +retry y +timeout para evitar esperas indefinidas en redes inestables.
  • Preferir servidores DNS de confianza (como los de tu ISP o resolutores públicos conocidos) cuando realices consultas externas.
  • En scripts de automatización, siempre verifica el código de retorno ($?) y maneja casos de respuesta vacía o error.
  • Ten en cuenta que algunas respuestas pueden estar truncadas por el tamaño del paquete UDP; en esos casos, dig volverá a usar TCP automáticamente si se especifica +vc.

Conclusión

Dominar dig le brinda un control preciso sobre las consultas DNS, facilitando la diagnóstico de problemas, la verificación de configuraciones y la automatización de tareas mediante sus opciones de salida concisa y estructurada. Ya sea que necesite un registro sencillo, un trazado completo o una salida JSON para integración con otras herramientas, dig sigue siendo la herramienta de elección en cualquier entorno Linux.