Cómo usar el comando dig en Linux
Publicado: 2022-01-29 El comando de dig
de Linux le permite consultar servidores DNS y realizar búsquedas de DNS. También puede encontrar el dominio al que conduce una dirección IP. ¡Te mostraremos cómo!
Cómo funciona el comando de excavación
La gente usa el comando dig
de Linux para consultar los servidores del Sistema de nombres de dominio (DNS). dig
es un acrónimo de Domain Information Groper. Con dig
, puede consultar los servidores DNS para obtener información sobre varios registros DNS, incluidas direcciones de host, intercambios de correo, servidores de nombres e información relacionada. Estaba destinado a ser una herramienta para diagnosticar problemas de DNS. Sin embargo, puede usarlo para hurgar y obtener más información sobre DNS, que es uno de los sistemas centrales que mantienen 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 escribe 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.
Cuando usa un nombre de dominio con cualquier programa conectado a Internet, su enrutador local no puede resolverlo (a menos que esté almacenado en caché de una solicitud anterior). Por lo tanto, su enrutador consulta el servidor DNS de su proveedor de servicios de Internet (ISP) o cualquier otro que haya configurado para que use su sistema. Estos se denominan servidores precursores de 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é. Si ese es el caso, simplemente envía esa misma información a su programa.
Si el servidor precursor de DNS no puede ubicar el dominio en su caché, se comunica con un servidor de nombres raíz de DNS. Un servidor raíz no tendrá la información necesaria para resolver nombres de dominio en direcciones IP, pero tendrá listas de servidores que pueden ayudarlo con su solicitud.
El servidor raíz busca el dominio de nivel superior al que pertenece su 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 realizar su solicitud una vez más, a un servidor de dominio de nivel superior.
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. Luego, el servidor DNS consulta el servidor de nombres autorizado que aloja la zona del dominio que ingresó originalmente en su programa. El servidor de nombres autorizado envía la dirección IP de regreso al servidor DNS, el cual, a su vez, se la envía a usted.
Instalación de excavación
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:
sudo pacman -Sy herramientas de enlace
Primeros pasos con cavar
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 utiliza 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:
cavar howtogeek.com +corto
Todas las direcciones IP asociadas con el dominio howtogeek.com se enumeran 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 a través de less
:
cavar howtogeek.com | menos
La salida se muestra en less
, como se muestra a continuación.
Aquí está la lista completa:
; <<>> DiG 9.11.3-1ubuntu1.11-Ubuntu <<>> howtogeek.com ;; opciones globales: +cmd ;; Tengo respuesta: ;; ->>ENCABEZADO<<- código de operación: CONSULTA, estado: SIN ERROR, id: 12017 ;; banderas: qr rd ra; CONSULTA: 1, RESPUESTA: 4, AUTORIDAD: 0, ADICIONAL: 1 ;; PSEUDOSECCIÓN OPCIONAL: ; EDNS: versión: 0, banderas:; actualización: 65494 ;; SECCIÓN DE PREGUNTAS: ;howtogeek.com. EN UN ;; SECCIÓN DE RESPUESTAS: howtogeek.com. 3551 EN UN 151.101.194.217 howtogeek.com. 3551 EN UN 151.101.130.217 howtogeek.com. 3551 EN UN 151.101.66.217 howtogeek.com. 3551 EN UN 151.101.2.217 ;; Tiempo de consulta: 0 ms ;; SERVIDOR: 127.0.0.53#53(127.0.0.53) ;; CUÁNDO: Domingo 22 de marzo 07:44:37 EDT 2020 ;; TAMAÑO DEL MENSAJE recibido: 106
Vamos a diseccionar eso pieza por pieza.
Encabezamiento
Primero, echemos un vistazo a lo que tenemos en el encabezado:
; <<>> DiG 9.11.3-1ubuntu1.11-Ubuntu <<>> howtogeek.com ;; opciones globales: +cmd ;; Tengo respuesta: ;; ->>ENCABEZADO<<- código de operación: CONSULTA, estado: SIN ERROR, id: 12017 ;; banderas: qr rd ra; CONSULTA: 1, RESPUESTA: 4, AUTORIDAD: 0, ADICIONAL: 1
Ahora, esto es lo que significa todo eso:
- Primera línea: la versión de
dig
y el dominio que se consultó. - Opciones globales: como veremos, puede 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+cmd
(comando) predeterminada. - Código de operación : consulta: este es el tipo de operación que se solicitó, en este caso, una
query
. Este valor también puede seriquery
para una consulta inversa ostatus
si solo está probando el estado del sistema DNS. - Estado: Noerror: No hubo errores y la solicitud se resolvió correctamente.
- ID: 12017 : este ID aleatorio vincula la solicitud y la respuesta.
- Indicadores: qr rd ra: estos representan
query
,recursion desired
yrecursion available
. La recursividad es una forma de búsqueda de DNS (la otra es iterativa). También puede verAA
, que significa Respuesta autorizada, lo que significa que un servidor de nombres autorizado proporcionó la respuesta. - Consulta: 1: el número de consultas en esta sesión, que fue una.
- Respuesta: 4: El número de respuestas en esta respuesta, que es cuatro.
- Autoridad: 0: el número de respuestas que provinieron de un servidor de nombres autorizado, que fue cero en este caso. La respuesta se devolvió desde la memoria caché de un servidor precursor de DNS. No habrá una sección autorizada en la respuesta.
- Adicional: 1: Hay una pieza de información adicional. (Extrañamente, no aparece nada a menos que este valor sea dos o más).
Optar por pseudosección
A continuación, vemos lo siguiente en la Pseudosección Opt:
;; PSEUDOSECCIÓN OPCIONAL: ; EDNS: versión: 0, banderas:; actualización: 65494
Vamos a desglosarlo:
- EDNS: versión 0: la versión del sistema de extensión para DNS que se está utilizando. EDNS transmite banderas y datos extendidos al extender el tamaño de los paquetes del Protocolo de datagramas de usuario (UDP). Esto se indica mediante una bandera de tamaño variable.
- banderas: No hay banderas en uso.
- udp : 4096: El tamaño del paquete UDP.
Sección de preguntas
En la sección Pregunta, vemos lo siguiente:
;; SECCIÓN DE PREGUNTAS: ;howtogeek.com. EN UN
Esto es lo que esto significa:
- howtogeek.com: El nombre de dominio que estamos consultando.
- IN: Estamos haciendo una consulta de clases de internet.
- R: A menos que especifiquemos lo contrario,
dig
solicitará un registro A (dirección) del servidor DNS.
Sección de respuesta
La sección Respuesta contiene las siguientes cuatro respuestas que recibimos del servidor DNS:
howtogeek.com. 3551 EN UN 151.101.194.217 howtogeek.com. 3551 EN UN 151.101.130.217 howtogeek.com. 3551 EN UN 151.101.66.217 howtogeek.com. 3551 EN UN 151.101.2.217
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 durante el cual se puede almacenar en caché un registro. Cuando caduca, los datos deben usarse en respuesta a una solicitud hasta que el servidor DNS los actualice.
- IN: Hicimos una consulta de clases de Internet.
- R: Pedimos un registro A del servidor DNS.
Sección de Estadísticas
Estadísticas es la sección final y contiene la siguiente información:
;; Tiempo de consulta: 0 ms ;; SERVIDOR: 127.0.0.53#53(127.0.0.53) ;; CUÁNDO: Domingo 22 de marzo 07:44:37 EDT 2020 ;; TAMAÑO DEL MENSAJE recibido: 106
Esto es lo que tenemos:
- Query Time: 0 mseg: El tiempo que se tardó en obtener la respuesta.
- SERVIDOR: 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 resolutor de stub 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 Manajro, la dirección que se muestra aquí era 8.8.8.8#53, que es el servicio de DNS público de Google.
- CUÁNDO: Domingo 22 de marzo 07:44:37 EDT 2020: Cuando se realizó la solicitud.
- MSG SIZE rcvd: 106: El tamaño del mensaje recibido del servidor DNS.
ser selectivo
No tienes que conformarte con los dos extremos de hermético y locuaz. El comando de dig
le permite incluir o excluir selectivamente secciones 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 mostrar la sección adicional.
- +nostats: No mostrar la sección de estadísticas.
- +noanswer: No mostrar la sección de respuestas.
- +noall: ¡No muestres nada!
La opción de consulta +noall
se suele combinar 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, puede usar +noall
para desactivarlas todas.
A continuación, puede utilizar las siguientes opciones de consulta inclusivas para volver a activar las que desea volver a ver:
- +comentarios: Mostrar líneas de comentarios.
- +autoridad: Muestra la sección de autoridad.
- +adicional: Muestra la sección adicional.
- +stats: Muestra la sección de estadísticas.
- +respuesta: muestra la sección de respuestas.
- +todo: Muestra todo.
Escribimos lo siguiente para realizar una solicitud y excluir las líneas de comentarios:
cavar howtogeek.com +sin comentarios
Si usamos la opción de consulta +noall
por sí sola, como se muestra a continuación, no obtendremos ningún resultado útil:
cavar howtogeek.com +noall
Podemos añadir selectivamente las secciones que queremos ver. Para agregar la sección de respuesta, escribimos lo siguiente:
cavar howtogeek.com +noall +respuesta
Si escribimos lo siguiente para activar +stats
, también veremos la sección de estadísticas:
cavar howtogeek.com +noall +respuesta +estadísticas
La +noall +answer
se usa a menudo. Puede agregar otras secciones a la línea de comando según sea necesario. Si desea evitar escribir +noall +answer
en la línea de comando cada vez que usa dig
, puede ponerlos en un archivo de configuración llamado ".digrc". Se encuentra en su directorio de inicio.
Escribimos lo siguiente para crear uno con echo
:
echo "+noall +respuesta" > $HOME/.digrc
Luego podemos escribir lo siguiente para verificar su contenido:
gato
Esas dos opciones ahora se aplicarán a todos los usos futuros de dig
, como se muestra a continuación:
cavar ubuntu.org
cavar linux.org
cavar github.com
Este archivo de configuración de dig
se utilizará para los ejemplos restantes de este artículo.
Registros DNS
La información devuelta a sus solicitudes de dig
se extrae de diferentes tipos de registros que se encuentran en el servidor DNS. A menos que pidamos algo diferente, dig
consulta el registro A (dirección). Los siguientes son los tipos de registros que se usan comúnmente con dig
:
- Un Registro: Vincula el dominio a una dirección IP versión 4.
- Registro MX: el intercambio de correo registra los correos electrónicos enviados a los dominios al servidor de correo correcto.
- Registro NS: los registros del servidor de nombres delegan un dominio (o subdominio) a un conjunto de servidores DNS.
- Registro TXT: Los registros de texto almacenan información basada en texto sobre el dominio. Por lo general, se pueden usar para suprimir correos electrónicos falsificados o falsificados.
- Registro SOA: Los registros de inicio de autoridad pueden contener mucha información sobre el dominio. Aquí puede encontrar el servidor de nombres principal, la parte responsable, una marca de tiempo para los cambios, la frecuencia de las actualizaciones de zona y una serie de límites de tiempo para reintentos y abandonos.
- TTL: el tiempo de vida es una configuración para cada registro de DNS que especifica cuánto tiempo se le permite a un servidor precursor de DNS almacenar en caché cada consulta de DNS. Cuando vence ese tiempo, los datos deben actualizarse para solicitudes posteriores.
- ANY: Esto le dice a
dig
que devuelva todos los tipos de registros 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, como se muestra a continuación:
cavar redhat.com A
Para consultar los registros de intercambio de correo, usamos la siguiente bandera MX:
cavar yahoo.com MX
El indicador del servidor de nombres devuelve el siguiente nombre de los servidores de nombres raíz asociados con el dominio de nivel superior:
cavar fedora.com NS
Para consultar el inicio del registro de autoridad, escribimos el siguiente indicador SOA:
excavar manjaro.com SOA
La bandera TTL nos mostrará el tiempo de vida de los datos en el caché del servidor DNS. Si hacemos una serie de solicitudes, vemos que el tiempo de vida se reduce a nada y luego vuelve a su valor inicial.
Tecleamos lo siguiente:
excavar usa.gov TTL
Para ver los registros de texto, escribimos la bandera TX:
excavar usa.gov TXT
Especificación del servidor DNS
Si desea usar un servidor DNS en particular para su solicitud, puede usar el signo de arroba ( @
) para pasarlo a dig
como un parámetro de línea de comando.
Con el servidor DNS predeterminado (ver a continuación), dig
hace referencia al sistema de resolución de stub de almacenamiento en caché local en 127.0.0.53.
cavar usa.gov +estadísticas
Ahora, escribimos lo siguiente para usar el servidor DNS público de Google en 8.8.8.8:
excavar @8.8.8.8 usa.gov +estadísticas
Usando dig con múltiples dominios
Podemos pasar múltiples dominios para dig
en la línea de comando, como se muestra a continuación:
cavar ubuntu.org fedora.org manjaro.com
Si revisa regularmente un conjunto de dominios, puede almacenarlos en un archivo de texto y pasarlo a dig
. Todos los dominios en el archivo se verificarán a su vez.
Nuestro archivo se llama "domains.txt". Usaremos cat
para mostrar su contenido y luego lo pasaremos a dig
con la opción -f
(archivo). Tecleamos lo siguiente:
gato dominios.txt
dig -f dominios.txt
Búsquedas DNS inversas
Si tiene una dirección IP y desea saber a dónde va, puede intentar una búsqueda DNS inversa. Si se resuelve en un servidor registrado con un servidor DNS, es posible que pueda averiguar su dominio.
Si puede hacerlo 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, dado que 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):
cavar -x 209.51.188.148
¡Presto! 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 pedirle a dig
que recupere el PTR por nosotros? 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:
cavar ptr 148.188.51.209.in-addr.arpa
Obtenemos el mismo resultado; sólo tomó un poco más de esfuerzo.
¿Puedes cavarlo?
Todos usamos Internet a diario, y 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
, puede explorar los procesos de conjuración de redes.
Comandos Linux | ||
archivos | tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · cola · stat · ls · fstab · eco · menos · chgrp · chown · rev · mirar · cadenas · tipo · renombrar · zip · descomprimir · montar · desmontar · instalar · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · parche · convertir · rclone · triturar · srm | |
Procesos | alias · pantalla · top · agradable · renice · progreso · strace · systemd · tmux · chsh · historia · at · lote · gratis · cual · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · tiempo de espera · pared · sí · matar · dormir · sudo · su · hora · groupadd · usermod · grupos · lshw · apagar · reiniciar · detener · apagar · contraseña · lscpu · crontab · fecha · bg · fg | |
Redes | netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · cavar · dedo · nmap · ftp · curl · wget · quién · whoami · w · iptables · ssh-keygen · ufw |
RELACIONADO: Las mejores computadoras portátiles Linux para desarrolladores y entusiastas