Configuración manual de servidores DNS en sistemas Linux sin systemd-resolved

Artículos Guías Manuales Sistemas Linux Windows Redes MySql Binario 0 Binario Cero Artículos Guías Manuales Sistemas Linux Windows Redes MySql Binario 0 Binario Cero

En entornos Linux modernos, especialmente aquellos basados en systemd, el servicio systemd-resolved gestiona la resolución de nombres mediante mecanismos dinámicos. Sin embargo, en algunos escenarios como servidores minimalistas, contenedores o entornos personalizados, puede ser necesario desactivar este servicio y establecer una configuración DNS estática mediante el archivo tradicional /etc/resolv.conf.

El script configurar_dns_resolv.sh automatiza esta tarea de forma segura y controlada.

Objetivo

Este script tiene como finalidad:

  • Deshabilitar systemd-resolved, si está activo.
  • Eliminar el enlace simbólico /etc/resolv.conf creado por dicho servicio.
  • Escribir un nuevo archivo /etc/resolv.conf con una lista definida de servidores DNS personalizados.
  • Establecer los permisos correctos sobre el archivo.

Código del script

#!/bin/bash

# Lista de servidores DNS (puedes modificar estas direcciones)
DNS_SERVERS=("8.8.8.8" "1.1.1.1")

# Desactivar y detener systemd-resolved si está en uso
if systemctl is-active --quiet systemd-resolved; then
echo "Deteniendo y deshabilitando systemd-resolved..."
systemctl stop systemd-resolved
systemctl disable systemd-resolved
fi

# Eliminar symlink si existe
if [ -L /etc/resolv.conf ]; then
echo "Eliminando enlace simbólico /etc/resolv.conf"
rm -f /etc/resolv.conf
fi

# Crear nuevo archivo resolv.conf
echo "Configurando /etc/resolv.conf con los DNS especificados..."
> /etc/resolv.conf # Vacía el archivo

for dns in "${DNS_SERVERS[@]}"; do
echo "nameserver $dns" >> /etc/resolv.conf
done

chmod 644 /etc/resolv.conf

# Mostrar el resultado
echo "Contenido actual de /etc/resolv.conf:"
cat /etc/resolv.conf

Explicación técnica

1. Lista de servidores DNS

DNS_SERVERS=("8.8.8.8" "1.1.1.1")

Define los servidores DNS a utilizar. Puedes sustituir estas IPs por otras como OpenDNS (208.67.222.222), Quad9, Cloudflare, o servidores internos.

2. Gestión de systemd-resolved

systemctl stop systemd-resolved
systemctl disable systemd-resolved

Se detiene y deshabilita el servicio que, en muchas distribuciones, gestiona /etc/resolv.conf mediante un enlace simbólico al archivo /run/systemd/resolve/stub-resolv.conf.

3. Eliminación del symlink

rm -f /etc/resolv.conf

Permite reemplazar el archivo simbólico con un archivo plano editable.

4. Generación de nuevo resolv.conf

echo "nameserver $dns" >> /etc/resolv.conf

Se escribe cada servidor DNS en el nuevo archivo, uno por línea. Se asegura un formato válido para la resolución de nombres.

5. Permisos

chmod 644 /etc/resolv.conf

Otorga permisos de lectura para todos y escritura solo para el propietario (root), tal como se espera para archivos de configuración del sistema.

Ventajas de este enfoque

  • Control total sobre los DNS utilizados, sin depender de servicios dinámicos.
  • Ideal para entornos cerrados o minimalistas (como contenedores o servidores sin NetworkManager).
  • Fácil de adaptar y automatizar, incluso en scripts de provisión o cloud-init.

Consideraciones

  • Algunos sistemas pueden volver a generar /etc/resolv.conf tras reinicios si usan NetworkManager, dhclient o netplan. En estos casos se recomienda:
    • Añadir el archivo a una lista de exclusión.
    • Configurar los servicios para no sobrescribirlo.
  • Este script requiere privilegios de root para modificar archivos del sistema y gestionar servicios.

Ejecución

Para ejecutar el script:

sudo bash configurar_dns_resolv.sh

Conclusión

El script configurar_dns_resolv.sh es una solución sencilla, clara y eficaz para quienes necesiten una resolución DNS estática y persistente sin depender de systemd-resolved. Es especialmente útil para administradores de sistemas, profesionales de ciberseguridad o entornos donde se requiere un mayor control sobre la red.

Binario 0
Resumen de privacidad

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.