Introducción al Problema del Archivo Resolv.conf Inmutable en Linux
Uno de los dolores de cabeza más comunes para los administradores de sistemas Linux al configurar redes es intentar modificar el archivo /etc/resolv.conf para cambiar los servidores DNS y recibir un frustrante mensaje de error indicando que la operación no está permitida o que el archivo es inmutable. Esto suele ocurrir porque NetworkManager, systemd-resolved o un atributo especial del sistema de ficheros bloquean su edición manual.
Causas Principales del Error
Las razones por las cuales no puedes modificar o guardar cambios en /etc/resolv.conf son principalmente tres:
- El archivo tiene activado el atributo de inmutabilidad a nivel de sistema de ficheros (
+i). - Un servicio de red como
NetworkManageroresolvconfsobrescribe el archivo automáticamente cada vez que se reinicia la interfaz de red. - El archivo es un enlace simbólico que apunta a un archivo de configuración generado por un demonio de red.
Método 1: Remover el Atributo de Inmutabilidad con Chattr
Si el sistema operativo o un script de instalación ha marcado el archivo como inmutable, ningún usuario (ni siquiera root) podrá modificarlo hasta que se remueva dicho atributo.
- Abre tu terminal con privilegios de superusuario o utiliza
sudo. - Verifica si el archivo tiene atributos especiales ejecutando el comando:
lsattr /etc/resolv.conf - Si observas una letra 'i' en la salida, remueve la inmutabilidad con el comando:
sudo chattr -i /etc/resolv.conf - Ahora ya puedes editar el archivo con tu editor favorito, por ejemplo:
sudo nano /etc/resolv.conf - Guarda los cambios y, si lo deseas, vuelve a aplicar la inmutabilidad para protegerlo:
sudo chattr +i /etc/resolv.conf
Método 2: Configurar NetworkManager para Evitar Sobrescrituras
Si eliminas la inmutabilidad pero tus cambios desaparecen tras reiniciar el equipo, el culpable es NetworkManager.
- Abre el archivo de configuración principal de NetworkManager:
sudo nano /etc/NetworkManager/NetworkManager.conf - Busca la sección
[main]y añade la siguiente línea si no existe:dns=none - Guarda el archivo y sal del editor.
- Reinicia el servicio de red para aplicar los cambios con:
sudo systemctl restart NetworkManager - Vuelve a configurar tus servidores DNS manualmente en
/etc/resolv.confsin temor a que se sobrescriban.