Introducción al problema del archivo resolv.conf en Linux
Uno de los dolores de cabeza más comunes para los administradores de sistemas Linux en distribuciones basadas en Ubuntu y Debian es la modificación persistente del archivo /etc/resolv.conf. A menudo, tras reiniciar el sistema o reconectar la red, los cambios realizados manualmente en los servidores de nombres (DNS) desaparecen por completo, dejando el archivo restaurado a su estado por defecto o vinculado a un servicio de gestión automática como systemd-resolved o NetworkManager.
En este artículo técnico exploraremos las causas exactas por las que ocurre este comportamiento y te mostraremos los mejores métodos para solucionarlo de raíz y asegurar una configuración de red estable.
Causas principales por las que se sobrescribe resolv.conf
El sistema operativo moderno en Linux utiliza gestores de red automatizados para actualizar la configuración de DNS dinámicamente según la red a la que te conectes. Las causas más frecuentes incluyen:
- El uso de
systemd-resolved, que gestiona un enlace simbólico en/etc/resolv.confapuntando a un archivo temporal de configuración local. - NetworkManager sobrescribe el archivo cada vez que la interfaz de red se reinicia o se establece una nueva conexión DHCP.
- Clientes DHCP locales como
dhcpcdoisc-dhcp-clientque actualizan automáticamente los servidores de nombres provistos por el router.
Método 1: Deshabilitar systemd-resolved y configurar un archivo estático
Si tu distribución utiliza systemd-resolved y deseas un control total y estático sobre tus servidores DNS, puedes desactivar este servicio y crear un archivo real.
- Detén y desgracia el servicio systemd-resolved ejecutando el siguiente comando en tu terminal:
sudo systemctl disable --now systemd-resolved - Elimina el enlace simbólico actual que apunta al archivo dinámico:
sudo rm /etc/resolv.conf - Crea un nuevo archivo
/etc/resolv.confutilizando tu editor de texto favorito (por ejemplo, nano):sudo nano /etc/resolv.conf - Añade tus servidores DNS preferidos con el siguiente formato y guarda el archivo:
nameserver 8.8.8.8nameserver 8.8.4.4 - Bloquea los permisos del archivo para evitar modificaciones accidentales:
sudo chattr +i /etc/resolv.conf
Método 2: Configurar NetworkManager para ignorar la actualización de DNS
Si prefieres mantener NetworkManager activo pero necesitas que no toque tus configuraciones personalizadas de DNS, debes editar su archivo de configuración global.
- Abre el archivo de configuración de NetworkManager con privilegios de superusuario:
sudo nano /etc/NetworkManager/NetworkManager.conf - Busca la sección
[main]y añade la siguiente directiva para desactivar la gestión automática de DNS:dns=none - Guarda los cambios y cierra el editor.
- Reinicia el servicio de NetworkManager para aplicar los cambios:
sudo systemctl restart NetworkManager
Conclusión
Resolver el problema del archivo resolv.conf sobrescrito en Linux garantiza que tus servicios de red y resolución de nombres permanezcan estables ante reinicios y caídas de interfaces. Dependiendo de tus necesidades de administración, puedes optar por desactivar los gestores automáticos o utilizar atributos inmutables en el sistema de archivos.