Cómo comprobar si un servidor DNS está configurado en Linux

LinuxLinuxBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, aprenderá cómo comprobar si un servidor DNS está configurado en su sistema Linux. Exploraremos el archivo de configuración principal /etc/resolv.conf para identificar los servidores DNS configurados.

A continuación, utilizará el comando nslookup para probar la resolución DNS y verificar que su sistema puede traducir con éxito nombres de dominio en direcciones IP. Finalmente, inspeccionaremos el archivo de configuración systemd-resolved /etc/systemd/resolved.conf para entender cómo está configurado el servicio de resolución DNS local.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/RemoteAccessandNetworkingGroup(["Remote Access and Networking"]) linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/RemoteAccessandNetworkingGroup -.-> linux/netstat("Network Monitoring") linux/RemoteAccessandNetworkingGroup -.-> linux/ping("Network Testing") linux/RemoteAccessandNetworkingGroup -.-> linux/ip("IP Managing") subgraph Lab Skills linux/cat -.-> lab-558709{{"Cómo comprobar si un servidor DNS está configurado en Linux"}} linux/netstat -.-> lab-558709{{"Cómo comprobar si un servidor DNS está configurado en Linux"}} linux/ping -.-> lab-558709{{"Cómo comprobar si un servidor DNS está configurado en Linux"}} linux/ip -.-> lab-558709{{"Cómo comprobar si un servidor DNS está configurado en Linux"}} end

Verificar el DNS con cat /etc/resolv.conf

En este paso, comenzaremos por analizar cómo tu sistema Linux encuentra sitios web y servicios en Internet. Este proceso se llama resolución DNS, y es manejado por un servicio que traduce nombres de dominio legibles por humanos (como google.com) en direcciones IP legibles por computadoras (como 172.217.160.142).

El archivo de configuración principal para la resolución DNS en muchos sistemas Linux es /etc/resolv.conf. Este archivo le dice a tu sistema qué servidores DNS utilizar.

Veamos el contenido de este archivo utilizando el comando cat. El comando cat es una herramienta simple pero poderosa que se utiliza para mostrar el contenido de archivos.

Abre tu terminal si no está abierta. Puedes encontrar el icono de Xfce Terminal en el lado izquierdo de tu escritorio.

Ahora, escribe el siguiente comando y presiona Enter:

cat /etc/resolv.conf

Deberías ver una salida similar a esta:

## This is /run/systemd/resolve/stub-resolv.conf.
## Handled by systemd-resolved(8).
## DNS servers configured in /etc/systemd/resolved.conf.
nameserver 127.0.0.53
options edns0 trust-ad

Desglosemos la salida:

  • Las líneas que comienzan con # son comentarios y son ignoradas por el sistema.
  • nameserver 127.0.0.53: Esta línea es la más importante aquí. Especifica la dirección IP del servidor DNS que utilizará tu sistema. En este caso, 127.0.0.53 es una dirección IP especial que apunta a un servicio de resolución DNS local, a menudo systemd-resolved, que analizaremos más adelante. Este resolutor local luego reenvía tus solicitudes DNS a servidores DNS externos.
  • options edns0 trust-ad: Estas son opciones relacionadas con las consultas DNS. edns0 es un mecanismo de extensión para DNS, y trust-ad se relaciona con DNSSEC (Extensiones de Seguridad de DNS). No te preocupes por estas opciones por ahora.

Comprender /etc/resolv.conf es el primer paso para solucionar problemas de conectividad de red relacionados con el DNS. Si este archivo falta o contiene información incorrecta, tu sistema podría no poder resolver nombres de dominio.

Haz clic en Continuar para pasar al siguiente paso.

Probar la resolución DNS con nslookup

En el paso anterior, examinamos el archivo /etc/resolv.conf, que le dice a tu sistema dónde encontrar los servidores DNS. Ahora, probemos activamente si tu sistema puede resolver un nombre de dominio utilizando el comando nslookup.

nslookup es una utilidad de línea de comandos para consultar el Sistema de Nombres de Dominio (Domain Name System, DNS) para obtener el mapeo de nombres de dominio o direcciones IP, o cualquier otro registro DNS específico. Es una herramienta fundamental para la resolución de problemas de red.

Utilicemos nslookup para encontrar la dirección IP de example.com. Escribe el siguiente comando en tu terminal y presiona Enter:

nslookup example.com

Deberías ver una salida similar a esta:

Server:		127.0.0.53
Address:	127.0.0.53#53

Non-authoritative answer:
Name:	example.com
Address: 93.184.216.34

Desglosemos esta salida:

  • Server: 127.0.0.53: Esto muestra la dirección IP del servidor DNS que nslookup utilizó para la consulta. Como vimos en el paso anterior, este es el resolutor local especificado en /etc/resolv.conf.
  • Address: 127.0.0.53#53: Esta es la dirección IP y el número de puerto del servidor DNS. El DNS generalmente utiliza el puerto 53.
  • Non-authoritative answer:: Esto indica que la respuesta provino de un servidor DNS de caché, no del servidor autoritativo de example.com.
  • Name: example.com: Este es el nombre de dominio que consultaste.
  • Address: 93.184.216.34: Esta es la dirección IP que el servidor DNS devolvió para example.com. Esta es la dirección a la que tu computadora se conectaría cuando intentas visitar example.com.

Si nslookup devuelve una dirección IP, significa que tu sistema resolvió correctamente el nombre de dominio. Si falla, es posible que veas un mensaje de error que indique un problema con la resolución DNS.

También puedes intentar resolver otros nombres de dominio, como google.com o labex.io.

nslookup google.com

La salida mostrará las direcciones IP asociadas con google.com. Ten en cuenta que un solo nombre de dominio puede tener múltiples direcciones IP.

Este comando es invaluable para verificar que tu configuración de DNS está funcionando correctamente y para encontrar las direcciones IP de nombres de dominio específicos.

Haz clic en Continuar para pasar al siguiente paso.

Inspeccionar la configuración de resolved con cat /etc/systemd/resolved.conf

En los pasos anteriores, vimos que /etc/resolv.conf a menudo apunta a una dirección local (127.0.0.53) que es manejada por systemd-resolved. Este servicio es parte del gestor de sistemas y servicios systemd y proporciona resolución de nombres de red a las aplicaciones locales.

La configuración de systemd-resolved se encuentra típicamente en el archivo /etc/systemd/resolved.conf. Inspeccionemos este archivo para ver cómo está configurado el resolutor local.

Utiliza nuevamente el comando cat para ver el contenido de /etc/systemd/resolved.conf. Escribe el siguiente comando en tu terminal y presiona Enter:

cat /etc/systemd/resolved.conf

Deberías ver una salida similar a esta:

##  This file is part of systemd.
#
##  systemd is free software; you can redistribute it and/or modify it
##  under the terms of the GNU Lesser General Public License as published by
##  the Free Software Foundation; either version 2.1 of the License, or
##  (at your option) any later version.
#
## Entries in this file show the compile time defaults. Local configuration
## should be placed in a file located in /etc/systemd/resolved.conf.d/.
## See resolved.conf(5) for details.

[Resolve]
#DNS=
#FallbackDNS=
#Domains=
#DNSSEC=no
#DNSOverTLS=no
#MulticastDNS=yes
#LLMNR=yes
#Cache=yes
#DNSStubListener=yes
#ReadEtcHosts=yes

Veamos las partes clave de este archivo:

  • El archivo comienza con comentarios que explican su propósito y licencia.
  • [Resolve]: Esto marca el inicio de la sección principal de configuración para la resolución de nombres.
  • DNS=: Esta línea comentada es donde normalmente se listarían las direcciones IP de los servidores DNS de nivel superior que systemd-resolved debe utilizar. Dado que está comentada, es probable que systemd-resolved esté obteniendo la información de sus servidores DNS de otra fuente, como tu configuración de red (por ejemplo, DHCP).
  • FallbackDNS=: Esta línea comentada te permite especificar servidores DNS de respaldo que se utilizarán si los servidores principales listados en DNS= no son alcanzables.
  • Otras opciones comentadas controlan varios aspectos del comportamiento de systemd-resolved, como la validación DNSSEC, DNS sobre TLS, el almacenamiento en caché y la compatibilidad con Multicast DNS (mDNS) y Link-Local Multicast Name Resolution (LLMNR).

En este entorno, es probable que los servidores DNS reales que se están utilizando sean proporcionados por la infraestructura de red subyacente (el entorno del contenedor Docker). systemd-resolved actúa como una caché local y reenviador.

Comprender /etc/systemd/resolved.conf es importante para la configuración avanzada de DNS y la resolución de problemas en sistemas que utilizan systemd-resolved.

Ahora has inspeccionado con éxito los archivos de configuración principales relacionados con la resolución DNS en este sistema Linux.

Haz clic en Continuar para completar este laboratorio.

Resumen

En este laboratorio, aprendimos cómo verificar la configuración del servidor DNS en un sistema Linux. Comenzamos examinando el archivo /etc/resolv.conf utilizando el comando cat, que es el archivo de configuración principal que especifica los servidores DNS utilizados por el sistema. Comprendimos que las líneas que comienzan con # son comentarios y la línea nameserver indica la dirección IP del servidor DNS, a menudo un resolutor local como 127.0.0.53 que es manejado por systemd-resolved.

Luego, probamos la resolución DNS utilizando el comando nslookup para verificar si el servidor DNS configurado puede traducir correctamente los nombres de dominio en direcciones IP. Finalmente, inspeccionamos la configuración del servicio systemd-resolved viendo el archivo /etc/systemd/resolved.conf con cat, que proporciona detalles adicionales sobre cómo está configurado el resolutor DNS local y cómo reenvía las solicitudes a servidores DNS externos. Estos pasos brindan una comprensión fundamental de cómo se configura y prueba el DNS en Linux.