Icono del sitio Binario 0

Configuración Manual de DNS en RHEL mediante Script Bash

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 empresariales donde se requiere un control estricto de la configuración de red, como laboratorios de pruebas, servidores en producción o infraestructuras que no confían en la configuración automática puede ser necesario establecer los servidores DNS manualmente y deshabilitar la gestión automática que realiza NetworkManager. Este artículo detalla un enfoque automatizado mediante un script Bash diseñado específicamente para sistemas basados en RHEL (Red Hat Enterprise Linux) y derivados (como CentOS, AlmaLinux o Rocky Linux).

Objetivo del Script

El script configurar_dns_rhel.sh automatiza el proceso de:

Contenido del Script

#!/bin/bash

# Lista de servidores DNS (modifica según necesidad)
DNS_SERVERS=("172.29.63.31" "172.29.63.30")

# Comprobación de privilegios
if [ "$(id -u)" -ne 0 ]; then
echo "Este script debe ejecutarse como root." >&2
exit 1
fi

# Deshabilitar la gestión DNS en NetworkManager
echo "Deshabilitando gestión DNS de NetworkManager..."
mkdir -p /etc/NetworkManager/conf.d
echo -e "[main]\ndns=none" > /etc/NetworkManager/conf.d/dns.conf

# Crear resolv.conf con los DNS especificados
echo "Creando /etc/resolv.conf..."
> /etc/resolv.conf
for dns in "${DNS_SERVERS[@]}"; do
echo "nameserver $dns" >> /etc/resolv.conf
done
chmod 644 /etc/resolv.conf

# Reiniciar NetworkManager
echo "Reiniciando NetworkManager..."
systemctl restart NetworkManager

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

Análisis Técnico Paso a Paso

1. Definición de DNS

El script comienza declarando una lista de direcciones IP que actuarán como servidores DNS:

DNS_SERVERS=("172.29.63.31" "172.29.63.30")

Estas deben adaptarse al entorno de red del usuario (por ejemplo, servidores DNS corporativos, locales, o públicos como 8.8.8.8 de Google).

2. Validación de Privilegios

Se verifica que el script se esté ejecutando como usuario root. Esto es obligatorio para modificar la configuración de red y reiniciar servicios:

if [ "$(id -u)" -ne 0 ]; then
echo "Este script debe ejecutarse como root." >&2
exit 1
fi

3. Desactivar la gestión automática de DNS

Para evitar que NetworkManager sobrescriba /etc/resolv.conf, se desactiva explícitamente la gestión DNS:

bashCopiarEditarmkdir -p /etc/NetworkManager/conf.d
echo -e "[main]\ndns=none" > /etc/NetworkManager/conf.d/dns.conf

Este archivo indica a NetworkManager que no debe manipular el DNS del sistema, delegando completamente esta tarea al administrador.

4. Creación manual de resolv.conf

Se limpia el contenido de /etc/resolv.conf y se introducen las entradas nameserver con los DNS especificados:

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

Esto garantiza que el archivo contenga exactamente los servidores deseados, sin entradas heredadas o residuales.

5. Reinicio de NetworkManager

Para que los cambios en la configuración tomen efecto, se reinicia el servicio:

systemctl restart NetworkManager

Este paso es crucial para asegurarse de que NetworkManager respete la nueva directiva de no modificar el DNS.

6. Verificación final

El contenido del archivo resultante se muestra por pantalla:

cat /etc/resolv.conf

Esto proporciona una confirmación visual inmediata de que la configuración se ha aplicado correctamente.

Conclusión

El script configurar_dns_rhel.sh es una herramienta eficaz para administradores de sistemas que requieren una configuración manual y persistente de los servidores DNS en sistemas RHEL. Automatiza una tarea propensa a errores y evita conflictos con la gestión dinámica de NetworkManager.

Este tipo de solución es especialmente útil en entornos donde:

Recomendaciones Adicionales

Salir de la versión móvil