Verificar y configurar correctamente los servidores DNS en un sistema Linux es extremadamente importante para mantener la estabilidad y eficiencia de su red. Este artículo proporciona una guía completa tanto para principiantes como para usuarios avanzados sobre cómo verificar y configurar servidores DNS en Linux. Comenzando con conceptos básicos, cubre el uso de herramientas específicas de línea de comandos, la edición de archivos de configuración, la resolución de problemas y abarca conocimientos prácticos exhaustivamente. Como resultado, su sistema Linux se volverá más eficiente en el acceso a recursos en Internet.
Qué es DNS: Una explicación del concepto básico
El Sistema de Nombres de Dominio (DNS) es un sistema que convierte nombres de dominios de internet en direcciones IP y viceversa. Juega un papel crucial en hacer posibles las búsquedas en internet y el acceso a sitios web al traducir nombres de dominio memorables (p.ej., www.ejemplo.com) en direcciones IP numéricas (p.ej., 192.0.2.1) que las computadoras pueden entender. Este proceso, conocido como “resolución de nombres”, facilita la recuperación de información en internet.
DNS tiene una estructura jerárquica con los “Servidores DNS Raíz” en la cima, gestionando la última parte de los nombres de dominio (p.ej., .com, .org). A estos les siguen los “Servidores de Dominio de Nivel Superior (TLD)”, luego los “Servidores DNS Autoritativos”, y finalmente, los “Servidores DNS Locales” responden a las consultas de los usuarios en esta configuración estructurada.
Cuando un usuario introduce un nombre de dominio en un navegador web, el servidor DNS local busca la dirección IP correspondiente. Si el servidor DNS local no tiene la información, la solicitud se pasa a servidores DNS de niveles superiores hasta que se recupera la información necesaria. Este proceso se completa típicamente en milisegundos, permitiendo al usuario acceder a la página web.
El sistema DNS es indispensable para la infraestructura de internet, y su operación eficiente impacta significativamente en el rendimiento web y la accesibilidad. Por lo tanto, configurar y gestionar correctamente los servidores DNS en sistemas Linux es una habilidad crucial para los administradores de sistemas.
Cómo verificar los servidores DNS: Usando herramientas de línea de comandos
Hay varias formas de verificar la configuración de los servidores DNS en sistemas Linux, pero el método más directo y común es usar herramientas de línea de comandos. Aquí, presentamos dos herramientas ampliamente utilizadas: el comando cat
y el comando nmcli
.
Verificando /etc/resolv.conf con el comando `cat`
El método más básico es mostrar el archivo /etc/resolv.conf
. Este archivo contiene las direcciones de los servidores DNS utilizados por el sistema para la resolución de DNS. Puede verificar su contenido ejecutando el siguiente comando:
cat /etc/resolv.conf
La salida podría verse así:
# Generado por NetworkManager
search ejemplo.com
nameserver 192.168.1.1
nameserver 8.8.8.8
En este ejemplo, las líneas con nameserver
indican las direcciones IP de los servidores DNS, con 192.168.1.1
y la dirección DNS pública de Google 8.8.8.8
establecidas.
Verificando los servidores DNS con el comando `nmcli`
En sistemas que utilizan NetworkManager
, puedes usar el comando nmcli
para verificar la configuración de DNS de la conexión de red actual. El siguiente comando recupera información del servidor DNS:
nmcli device show | grep IP4.DNS
Este comando extrae y muestra la configuración del servidor DNS (IPv4) de la información del dispositivo de red actual. La salida puede verse así:
IP4.DNS[1]: 192.168.1.1
IP4.DNS[2]: 8.8.8.8
Estos métodos le permiten verificar fácilmente la información del servidor DNS configurada en su sistema Linux, lo cual puede ser útil para diagnosticar problemas de conexión a la red o considerar cambios a un servidor DNS específico.
Cómo configurar servidores DNS: Editando /etc/resolv.conf
Uno de los métodos básicos para configurar servidores DNS en un sistema Linux es editar directamente el archivo /etc/resolv.conf
. Este archivo mantiene una lista de los servidores DNS a los que el sistema se refiere para la resolución de DNS. Aquí, explicamos cómo editar este archivo de forma segura.
Editando el archivo /etc/resolv.conf
- Primero, haga una copia de seguridad de la configuración actual. Es importante poder restaurar el archivo original en caso de cualquier problema. Use el siguiente comando para crear una copia de seguridad:
sudo cp /etc/resolv.conf /etc/resolv.conf.backup
- Luego, use un editor de texto para editar el archivo
/etc/resolv.conf
. Aquí usamos el editornano
, pero puede usar su editor preferido comovi
oemacs
:
sudo nano /etc/resolv.conf
- Una vez abierto el archivo, agregue o edite las líneas que comienzan con
nameserver
para especificar direcciones de servidores DNS. Por ejemplo, para usar las direcciones DNS públicas de Google, escribiría:
nameserver 8.8.8.8
nameserver 8.8.4.4
- Después de realizar los cambios, guarde el archivo y salga del editor. Si está usando
nano
, presioneCtrl + O
para guardar yCtrl + X
para salir.
Activando la nueva configuración
Después de editar el archivo /etc/resolv.conf
, generalmente necesita reiniciar el servicio de red para aplicar los cambios. Esto se puede hacer con el siguiente comando:
sudo systemctl restart network.service
O, si está usando NetworkManager
, puede reiniciar la conexión de red con este comando:
sudo systemctl restart NetworkManager
Esto aplica la nueva configuración de DNS a su sistema. Para asegurarse de que la configuración esté funcionando correctamente, se recomienda probar accediendo a sitios web o usando comandos como ping
para resolver nombres de dominio.
La configuración manual de servidores DNS es efectiva para ajustar estrategias de resolución de DNS según los requisitos del sistema o de la red. Sin embargo, este método puede no ser adecuado para soluciones a largo plazo, ya que el archivo /etc/resolv.conf
podría sobrescribirse automáticamente por otros procesos. Por lo tanto, considere usar herramientas como resolvconf
, systemd-resolved
o NetworkManager
para gestionar la configuración de DNS.
Verificando y cambiando la configuración de DNS con herramientas de línea de comandos
Linux ofrece varios métodos para verificar y cambiar la configuración de DNS usando la línea de comandos, sin depender de herramientas gráficas. Estos métodos son particularmente útiles para entornos de servidores o la gestión de sistemas remotos. Aquí, explicamos métodos usando los comandos systemd-resolve
y nmcli
.
Verificando la configuración de DNS con el comando `systemd-resolve`
En sistemas que utilizan systemd
, el comando systemd-resolve
puede usarse para verificar la configuración actual de DNS. Este comando está relacionado con el servicio systemd-resolved
y proporciona configuración y estadísticas de resolución de nombres.
Para verificar la configuración de DNS, ejecute el siguiente comando:
systemd-resolve --status
Este comando proporciona una salida detallada que incluye los servidores DNS en uso, dominios de búsqueda y otra información relacionada con la red. La salida se divide por interfaz de red, con cada sección mostrando la configuración para esa interfaz.
Cambiando la configuración de DNS con el comando `nmcli`
En sistemas que usan NetworkManager, el comando nmcli
puede usarse para cambiar la configuración de DNS. nmcli
es una herramienta de línea de comandos para configurar y gestionar conexiones de red.
Por ejemplo, para establecer servidores DNS para una conexión específica, use el siguiente comando:
nmcli connection modify <nombre de la conexión> ipv4.dns "8.8.8.8 8.8.4.4"
nmcli connection modify <nombre de la conexión> ipv4.ignore-auto-dns yes
nmcli connection up <nombre de la conexión>
En este comando, se establecen los servidores DNS de Google (8.8.8.8
y 8.8.4.4
) para la conexión nombrada <nombre de la conexión>
. La opción ipv4.ignore-auto-dns yes
se usa para ignorar la configuración de DNS obtenida automáticamente y usar el DNS especificado manualmente en su lugar. Finalmente, el comando nmcli connection up
se usa para reiniciar la conexión y aplicar la nueva configuración.
Estas herramientas de línea de comandos permiten verificar y cambiar de forma flexible la configuración de DNS en sistemas Linux. Son particularmente útiles para la administración remota de sistemas y la automatización a través de scripts.
Configuración de DNS con systemd-resolved
systemd-resolved
es un moderno resolutor DNS integrado en el sistema y gestor de servicios systemd. Ofrece varias características como caché de DNS, validación DNSSEC y enrutamiento de registros, simplificando el proceso de resolución de DNS. Aquí, explicamos cómo gestionar la configuración de DNS usando systemd-resolved
.
Visión general de systemd-resolved
systemd-resolved
maneja solicitudes de resolución de DNS de aplicaciones locales, almacenando respuestas de servidores DNS externos para mejorar la velocidad y fiabilidad de la resolución de nombres. También gestiona el archivo /etc/resolv.conf
, proporcionando una estrategia de resolución de DNS a nivel de sistema.
Habilitando y configurando systemd-resolved
La mayoría de las distribuciones modernas de Linux tienen systemd-resolved
habilitado por defecto. Sin embargo, si no está habilitado, puede iniciar y habilitar el servicio usando el siguiente comando:
sudo systemctl enable --now systemd-resolved.service
Una vez habilitado, puede editar el archivo /etc/systemd/resolved.conf
para establecer direcciones de servidores DNS personalizadas. Se recomienda hacer una copia de seguridad del archivo antes de editarlo.
sudo nano /etc/systemd/resolved.conf
Por ejemplo, para usar los servidores DNS públicos de Google, establecería lo siguiente:
[Resolve]
DNS=8.8.8.8 8.8.4.4
FallbackDNS=1.1.1.1 9.9.9.9
La opción DNS
especifica las direcciones IP de los servidores DNS primarios a usar, separadas por espacios. FallbackDNS
lista los servidores DNS a utilizar si los servidores primarios no están disponibles.
Después de cambiar la configuración, reinicie el servicio systemd-resolved
para aplicar los cambios:
sudo systemctl restart systemd-resolved
La relación entre systemd-resolved y /etc/resolv.conf
En sistemas que utilizan systemd-resolved
, se recomienda enlazar el archivo /etc/resolv.conf
a /run/systemd/resolve/stub-resolv.conf
. Esto permite el uso del caché DNS local y las características de reenvío proporcionadas por systemd-resolved
. Para configurar el enlace simbólico, use el siguiente comando:
sudo ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
Esto permite que systemd-resolved
gestione el proceso de resolución de DNS del sistema, proporcionando una conexión a internet más rápida y segura.
Gestionando DNS con Network Manager
En los sistemas Linux, Network Manager (NetworkManager) es la herramienta más comúnmente utilizada para la configuración y gestión de redes. Facilita la gestión de diversas interfaces de red, incluidas redes inalámbricas, redes cableadas, banda ancha móvil y conexiones VPN. La configuración de DNS también puede gestionarse a través de esta herramienta. Aquí, discutimos cómo configurar DNS usando Network Manager.
Cambiando la configuración de DNS con Network Manager
Con Network Manager, puede cambiar la configuración de DNS usando tanto la interfaz de usuario gráfica (GUI) como la interfaz de línea de comandos (CLI). Para la CLI, el comando nmcli
es muy útil.
Para cambiar la configuración de DNS para una conexión de red específica, primero identifique el nombre de la conexión. Puede listar todas las conexiones de red disponibles con el siguiente comando:
nmcli connection show
Luego, use el nombre de la conexión para establecer los servidores DNS. El siguiente comando establece las direcciones de los servidores DNS para la conexión denominada “nombre de la conexión”:
nmcli connection modify "nombre de la conexión" ipv4.dns "8.8.8.8 8.8.4.4"
nmcli connection modify "nombre de la conexión" ipv4.ignore-auto-dns yes
nmcli connection up "nombre de la conexión"
Este comando establece los servidores DNS de Google (8.8.8.8
y 8.8.4.4
) para una conexión específica, ignorando la configuración de DNS obtenida automáticamente. Finalmente, la conexión se reinicia usando nmcli connection up
para aplicar la configuración.
Cambiando la configuración global de DNS
También puede usar Network Manager para cambiar la configuración de DNS a nivel de sistema. Para hacer esto, edite el archivo /etc/NetworkManager/NetworkManager.conf
y agregue la opción dns
en la sección [main]
:
[main]
dns=dnsmasq
Esta configuración permite que Network Manager use dnsmasq
para procesar consultas DNS. dnsmasq
es un servidor de caché DNS y DHCP ligero que proporciona resolución de consultas DNS locales y caché, mejorando la velocidad de resolución de DNS.
Después de cambiar la configuración, necesita reiniciar Network Manager:
sudo systemctl restart NetworkManager
Gestionar DNS a través de Network Manager mejora significativamente la flexibilidad y comodidad de la configuración de la red. Permite a los usuarios personalizar fácilmente la configuración de DNS, optimizando el rendimiento y la seguridad de la red.
Solución de problemas: Problemas comunes y sus soluciones
Los problemas relacionados con DNS pueden manifestarse en diversas formas, como problemas de conexión a internet, dificultades para acceder a sitios web y retrasos. Aquí, discutimos problemas comunes relacionados con DNS que podría encontrar en Linux y enfoques para solucionarlos.
Resolución lenta de DNS
Si la resolución de DNS es lenta, el servidor DNS que está utilizando podría ser la causa del retraso. Cambiar a otro servidor DNS podría resolver el problema. Por ejemplo, Google Public DNS (8.8.8.8 y 8.8.4.4) y Cloudflare DNS (1.1.1.1) son opciones rápidas y confiables.
Fallo en la resolución de DNS
Si falla la resolución de DNS, primero verifique si su sistema apunta a los servidores DNS correctos. Puede verificar esto usando el archivo /etc/resolv.conf
o el comando systemd-resolve --status
. Si los servidores DNS correctos están configurados y el problema persiste, limpiar la caché de DNS puede ayudar. Si está utilizando systemd-resolved
, puede limpiar la caché con el siguiente comando:
sudo systemd-resolve --flush-caches
Incapacidad para acceder a sitios web específicos
Si tiene problemas para acceder a sitios web específicos, podría haber problemas con los registros DNS de esos sitios, o su caché DNS local podría estar reteniendo información obsoleta. Limpiar la caché DNS podría resolver el problema. Además, verifique si el archivo /etc/hosts
no ha agregado manualmente entradas para esos sitios web.
El servidor DNS no responde
Si el servidor DNS que está utilizando no responde, primero verifique si el servidor DNS está caído o si hay problemas con su conexión de red. Puede probar si puede alcanzar el servidor DNS usando el comando ping
. Si el servidor DNS no responde, considere cambiar a otro servidor DNS.
Al probar estos pasos generales de solución de problemas, debería poder resolver muchos problemas relacionados con DNS. Sin embargo, si el problema persiste, puede ser necesario investigar más a fondo la configuración o los ajustes de la red. En algunos casos, contactar a su Proveedor de Servicios de Internet (ISP) o administrador de red podría ser el curso de acción adecuado.
Consideraciones de seguridad: Cosas a tener en cuenta al configurar DNS
Al configurar configuraciones de DNS, es importante considerar las implicaciones de seguridad. Configuraciones incorrectas de DNS pueden aumentar la vulnerabilidad a ataques cibernéticos. Aquí, presentamos algunas consideraciones de seguridad clave a tener en cuenta al configurar DNS.
Fiabilidad y seguridad de los servidores DNS
El servidor DNS que elija debe ser fiable y tener medidas de seguridad implementadas. Si utiliza un servicio DNS público, verifique las características de seguridad proporcionadas por el proveedor de servicios, como soporte de DNSSEC y bloqueo de sitios maliciosos.
Mitigando el envenenamiento de la caché de DNS
El envenenamiento de la caché de DNS es un ataque donde un atacante inyecta información falsa de DNS en la caché, dirigiendo a los usuarios a sitios maliciosos, como sitios de phishing. Usar servidores DNS que soporten DNSSEC (Extensiones de seguridad de DNS) puede proteger contra tales ataques.
Asegurando la configuración del servidor DNS local
Si está ejecutando su propio servidor DNS, mantenga las actualizaciones de software al día, deshabilite servicios innecesarios y asegure una configuración segura. Además, configurar correctamente el firewall es crucial para prevenir accesos no autorizados desde el exterior.
Protegiendo la privacidad
Las consultas DNS pueden revelar el historial de uso de internet de los usuarios. Para proteger la privacidad, considere usar servidores DNS que soporten consultas DNS encriptadas, como DNS sobre HTTPS (DoH) o DNS sobre TLS (DoT).
Conclusión
Entender cómo verificar y configurar servidores DNS en Linux y gestionarlos adecuadamente es crucial para mantener la eficiencia y seguridad de la red. Este artículo cubrió los conceptos básicos de DNS, cómo verificar y configurar servidores DNS, gestionar DNS con systemd-resolved y Network Manager, solución de problemas y consideraciones de seguridad. Aplicar este conocimiento permitirá una configuración de DNS más efectiva y segura en sistemas Linux.