Cómo verificar y configurar servidores DNS en Linux: desde conceptos básicos hasta medidas de seguridad

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.

Índice

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

  1. 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
  1. Luego, use un editor de texto para editar el archivo /etc/resolv.conf. Aquí usamos el editor nano, pero puede usar su editor preferido como vi o emacs:
sudo nano /etc/resolv.conf
  1. 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
  1. Después de realizar los cambios, guarde el archivo y salga del editor. Si está usando nano, presione Ctrl + O para guardar y Ctrl + 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.

Índice