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.8o@1.1.1.1.tipo: indica el tipo de registro, comoMX,TXT,ANYoSRV.+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
dig example.com MX +short
dig +trace example.com
dig @1.1.1.1 example.com TXT +json
dig example.com ANY +noall +answer
dig example.com AAAA +short | grep -v '^;'
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
ANYen servidores de producción, ya que pueden generar respuestas grandes y ser utilizadas en ataques de amplificación. - Usar los flags
+retryy+timeoutpara 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.