El Linux dig
El comando le posibilita consultar servidores DNS y realizar búsquedas de DNS. Además puede hallar el dominio al que conduce una dirección IP. ¡Te mostraremos cómo!
Cómo funciona el comando de excavación
La gente utiliza Linux dig
comando para consultar los servidores del Sistema de nombres de dominio (DNS). dig
es un acrónimo de Información de dominio 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. A pesar de esto, puede usarlo para hurgar y aprender más sobre DNS, que es uno de los sistemas centrales que mantienen el tráfico de enrutamiento de Internet.
Internet utiliza direcciones de protocolo de Internet (IP) para identificar «ubicaciones» en la web, pero la gente utiliza 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 utiliza 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 eso, su enrutador consulta el servidor DNS de su proveedor de servicios de Internet (ISP) o cualquier otro que haya configurado su sistema para utilizar. Estos se denominan servidores precursores de DNS.
Si el servidor DNS recibió recientemente la misma solicitud de otra persona en la misma computadora, la solución podría estar en su cache. Si ese es el caso, simplemente envía esa misma información a su programa.
Si el servidor precursor de DNS no puede localizar el dominio en su caché, se pone en contacto con un DNS. servidor de nombres raíz. Un servidor raíz no contendrá la información requerida para solucionar nombres de dominio en direcciones IP, pero contendrá listas de servidores que pueden contribuir con su solicitud.
El servidor raíz mira el dominio de primer nivel al que pertenece su nombre de dominio, como .COM, .ORG, .CO.UK, etc. Después 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. Después, el servidor DNS consulta al 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 al servidor DNS, que, 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. A pesar de esto, tuvimos que instalarlo en la computadora Manjaro 18.04 con el siguiente comando:
sudo pacman -Sy bind-tools
Introducción a excavar
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, a modo de ejemplo.
Usamos el +short
opción de consulta, como se muestra a continuación, que nos da una respuesta concisa:
dig systempeaker.com +short
Todas las direcciones IP asociadas con el dominio systempeaker.com se enumeran para nosotros. En el otro extremo del espectro, si no usar el +short
opción de consulta, la salida es bastante detallada.
Entonces, escribimos lo siguiente para canalizarlo less
:
dig systempeaker.com | less
La salida se muestra en less
, Como se muestra abajo.
Aquí está la lista completa:
; <<>> DiG 9.11.3-1ubuntu1.11-Ubuntu <<>> systempeaker.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12017 ;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 65494 ;; QUESTION SECTION: ;systempeaker.com. IN A ;; ANSWER SECTION: systempeaker.com. 3551 IN A 151.101.194.217 systempeaker.com. 3551 IN A 151.101.130.217 systempeaker.com. 3551 IN A 151.101.66.217 systempeaker.com. 3551 IN A 151.101.2.217 ;; Query time: 0 msec ;; SERVER: 127.0.0.53#53(127.0.0.53) ;; WHEN: Sun Mar 22 07:44:37 EDT 2020 ;; MSG SIZE rcvd: 106
Analicemos esa pieza por pieza.
Encabezamiento
Primero, echemos un vistazo a lo que tenemos en el encabezado:
; <<>> DiG 9.11.3-1ubuntu1.11-Ubuntu <<>> systempeaker.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12017 ;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1
Ahora, esto es lo que significa todo eso:
- Primera linea: La versión de
dig
y el dominio que se consultó. - Opciones globales: Como veremos, puedes utilizar
dig
para consultar varios dominios simultáneamente. Esta línea muestra las alternativas que se han aplicado a todas las consultas de dominio. En nuestro ejemplo simple, era solo el valor predeterminado+cmd
(comando) opción. - Código de operación: Consulta: Este es el tipo de operación que se solicitó que, en esta circunstancia, fue una
query
. Este valor además 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 une la solicitud y la solución.
- Banderas: qr rd ra: Estos representan
query
,recursion desired
, yrecursion available
. La recursividad es una forma de búsqueda de DNS (la otra es iterativa). Además puede verAA
, que significa Respuesta autorizada, lo que significa que un Servidor de nombres autorizado proporcionó la solución. - Consulta: 1: La cantidad de consultas en esta sesión, que fue una.
- Respuesta: 4: El número de respuestas en esta respuesta, que es cuatro.
- Autoridad: 0: La cantidad de respuestas que provienen de un servidor de nombres autorizado, que fue cero en esta circunstancia. La solución se devolvió desde la caché de un servidor precursor de DNS. No habrá una sección autorizada en la solución.
- Adicional: 1: Hay una pieza de información adicional. (Curiosamente, no se incluye nada a menos que este valor sea dos o más).
Decantarse pseudosección
A continuación, vemos lo siguiente en la pseudosección Opt:
;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 65494
Analicemos eso:
- EDNS: versión 0: La versión de Sistema de extensión para DNS que se está usando. EDNS transmite datos extendidos y banderas ampliando el tamaño del Protocolo de datagramas de usuario (UDP) paquetes. Esto se indica a través de 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:
;; QUESTION SECTION: ;systempeaker.com. IN A
Esto es lo que esto significa:
- systempeaker.com: El nombre de dominio que estamos consultando.
- EN: Estamos haciendo una consulta de clase de Internet.
- A: 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:
systempeaker.com. 3551 IN A 151.101.194.217 systempeaker.com. 3551 IN A 151.101.130.217 systempeaker.com. 3551 IN A 151.101.66.217 systempeaker.com. 3551 IN A 151.101.2.217
Esto es lo que significan estas respuestas:
- 3551: Este es el tiempo de vida (TTL), un entero de 32 bits con signo que contiene el intervalo de tiempo a lo largo del cual se puede almacenar en caché un registro. Cuando expira, los datos deben usarse en una respuesta a una solicitud hasta que el servidor DNS los actualice.
- EN: Realizamos una consulta de clase de Internet.
- A: Solicitamos un registro A del servidor DNS.
Sección de Estadística
Estadísticas es la sección final y contiene la próxima información:
;; Query time: 0 msec ;; SERVER: 127.0.0.53#53(127.0.0.53) ;; WHEN: Sun Mar 22 07:44:37 EDT 2020 ;; MSG SIZE rcvd: 106
Esto es lo que tenemos:
- Tiempo de consulta: 0 mseg: El tiempo que tardó en obtener la solución.
- 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ó. Para este caso, apunta al solucionador 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 aparece aquí era 8.8.8.8 # 53, que es Servicio de DNS público de Google.
- CUÁNDO: Dom 22 de marzo 07:44:37 EDT 2020: Cuando se hizo la solicitud.
- TAMAÑO DE MENSAJE rcvd: 106: El tamaño del mensaje recibido del servidor DNS.
Ser selectivo
No debes de conformarte con los dos extremos de los labios apretados y los locuaces. los dig
El comando le posibilita incluir o excluir selectivamente secciones de los resultados.
Las siguientes opciones de consulta eliminarán esa sección de los resultados:
- + nocomentarios: No muestre líneas de comentarios.
- + sin autoridad: No muestre la sección de autoridad.
- + no adicional: No muestre la sección adicional.
- + nostats: No muestre la sección de estadísticas.
- + norespuesta: No muestre la sección de respuestas.
- + notodos: ¡No muestres nada!
los +noall
La opción de consulta de forma general se combina con una de las anteriores para incluir una sección en los resultados. Entonces, en lugar de escribir una larga cadena de alternativas de consulta para desactivar múltiples secciones, puede utilizar +noall
para apagarlos todos.
Después, puede utilizar las siguientes opciones de consulta inclusiva para volver a activar aquellas que desea ver:
- + comentarios: Mostrar líneas de comentarios.
- + autoridad: Muestre la sección de autoridad.
- + adicional: Muestre la sección adicional.
- + estadísticas: Muestra la sección de estadísticas.
- + respuesta: Muestre la sección de respuestas.
- + todo: Mostrar todo.
Escribimos lo siguiente para realizar una solicitud y excluir las líneas de comentarios:
dig systempeaker.com +nocomments
Si usamos el +noall
opción de consulta por sí sola, como se muestra a continuación, no obtendremos ningún resultado útil:
dig systempeaker.com +noall
Podemos agregar selectivamente las secciones que queremos ver. Para agregar la sección de respuesta, escribimos lo siguiente:
dig systempeaker.com +noall +answer
Si escribimos lo siguiente para encender +stats
, además veremos la sección de estadísticas:
dig systempeaker.com +noall +answer +stats
los +noall +answer
La combinación se utiliza a menudo. Puede agregar otras secciones a la línea de comando según sea necesario. Si deseas evitar escribir +noall +answer
en la línea de comando cada vez que utiliza dig
, puede ponerlos en un archivo de configuración llamado «.digrc». Está ubicado en su directorio personal.
Escribimos lo siguiente para crear uno con echo
:
echo "+noall +answer" > $HOME/.digrc
Después podemos escribir lo siguiente para verificar su contenido:
cat .digrc
Esas dos opciones se aplicarán ahora a todos los usos futuros de dig
, Como se muestra abajo:
dig ubuntu.org
dig linux.org
dig github.com
Esta dig
El archivo de configuración se utilizará para los ejemplos restantes de este post.
Registros DNS
La información devuelta a su dig
las solicitudes se extraen de diferentes tipos de registros almacenados en el servidor DNS. A menos que pidamos algo distinto, dig
consulta el registro A (dirección). Los siguientes son los tipos de registros que se usan comúnmente con dig
:
- Un expediente: Vincula el dominio a una dirección IP versión 4.
- Registro MX: El intercambio de correo registra los correos electrónicos directos 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 el email falsificado o falsificado.
- Registro SOA: Los registros de inicio de autoridad pueden contener mucha información sobre el dominio. Aquí, puede hallar el servidor de nombres principal, la parte responsable, una marca de tiempo para los cambios, la frecuencia de las actualizaciones de la 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 un servidor precursor de DNS puede almacenar en caché cada consulta de DNS. Cuando expira ese tiempo, los datos deben actualizarse para solicitudes posteriores.
- ALGUNA: Esto dice
dig
para devolver todo tipo de registro DNS que pueda.
La especificación del 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:
dig redhat.com A
Para consultar los registros de intercambio de correo, usamos la próxima bandera MX:
dig yahoo.com MX
La bandera del servidor de nombres devuelve el siguiente nombre de los servidores de nombres raíz asociados con el dominio de nivel superior:
dig fedora.com NS
Para consultar el inicio del registro de autoridad, escribimos la próxima bandera SOA:
dig manjaro.com SOA
La bandera TTL nos mostrará el tiempo de vida de los datos en la caché del servidor DNS. Si hacemos una serie de solicitudes, vemos que el tiempo de vida se reduce a cero y posteriormente volvemos a su valor inicial.
Escribimos lo siguiente:
dig utiliza.gov TTL
Para ver los registros de texto, escribimos la bandera TX:
dig utiliza.gov TXT
Especificar el servidor DNS
Si desea usar un servidor DNS en particular para su solicitud, puede usar el signo arroba (@
) para pasarlo a dig
como parámetro de línea de comandos.
Con el servidor DNS predeterminado (ver más abajo), dig
hace referencia al solucionador de stub de almacenamiento en caché local en 127.0.0.53.
dig utiliza.gov +stats
Ahora, escribimos lo siguiente para utilizar el servidor DNS público de Google en 8.8.8.8:
dig @8.8.8.8 utiliza.gov +stats
Usando excavar con múltiples dominios
Podemos pasar varios dominios a dig
en la línea de comando, como se muestra a continuación:
dig ubuntu.org fedora.org manjaro.com
Si verifica regularmente un conjunto de dominios, puede almacenarlos en un archivo de texto y pasarlo a dig
. Todos los dominios del archivo se comprobarán sucesivamente.
Nuestro archivo se llama «domains.txt». Usaremos cat
para mostrar su contenido y posteriormente pasarlo a dig
con el -f
(archivo) opción. Escribimos lo siguiente:
cat domains.txt
dig -f domains.txt
Búsquedas inversas de DNS
Si dispone de 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 factible que pueda averiguar su dominio.
Si puede, depende de la presencia de un PTR (registro de puntero). Los PTR resuelven una dirección IP a un nombre de dominio completo. A pesar de esto, 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 el -x
(búsqueda inversa) opción:
dig -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 dig
puede solicitar registros DNS específicos, ¿no podríamos simplemente preguntar dig
recuperar el PTR por nosotros? Sí, podemos, pero necesita un poco más de trabajo.
Tenemos que proporcionar la dirección IP en orden inverso y tachuela .in-addr.arpa
al final, como se muestra a continuación:
dig ptr 148.188.51.209.in-addr.arpa
Obtenemos el mismo resultado; solo tomó un poco más de esfuerzo.
¿Puedes cavarlo?
Todos usamos Internet a diario, y las mentes inquisitivas a menudo se han preguntado cómo ocurre la magia cuando escribimos el nombre de un portal web en un navegador. Con dig
, puede explorar los procesos de conjuración de redes.