¿Qué es el error resolv.conf Read-Only en Linux?
Uno de los problemas más frustrantes 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 mensaje de error que indica que el archivo es de solo lectura (Read-Only) o que los cambios se borran al reiniciar el sistema.
Causas principales del bloqueo en resolv.conf
Este comportamiento no suele ser un fallo aleatorio, sino una medida de seguridad o gestión de red automatizada. Las causas más comunes incluyen:
- El archivo es un enlace simbólico (symlink) gestionado por servicios como
NetworkManagerosystemd-resolved. - Atributos inmutables aplicados al archivo mediante el comando
chattr. - Configuración del cliente DHCP que sobrescribe el archivo en cada reinicio de la interfaz de red.
Método 1: Desactivar la gestión automática de NetworkManager
Si tu distribución utiliza NetworkManager, este servicio sobrescribe el archivo resolv.conf constantemente. Para solucionarlo, sigue estos pasos:
- Abre tu terminal con privilegios de superusuario.
- Edita el archivo de configuración de NetworkManager:
sudo nano /etc/NetworkManager/NetworkManager.conf - Busca la sección
[main]y añade la siguiente línea:dns=none - Guarda el archivo presionando
Ctrl + Oy sal conCtrl + X. - Reinicia el servicio de red ejecutando:
sudo systemctl restart NetworkManager
Método 2: Eliminar el atributo de solo lectura con chattr
En ocasiones, el sistema de archivos marca el archivo como inmutable. Puedes verificarlo y solucionarlo con los siguientes comandos:
- Comprueba si tiene el atributo inmutable ejecutando:
lsattr /etc/resolv.conf - Si ves una letra 'i' en la salida, retira el atributo con el comando:
sudo chattr -i /etc/resolv.conf - Ahora podrás editar el archivo manualmente con tu editor de texto favorito, por ejemplo:
sudo nano /etc/resolv.conf
Método 3: Configurar systemd-resolved correctamente
Si tu sistema utiliza systemd-resolved, la forma correcta de cambiar los DNS no es editar directamente el archivo final, sino configurar el resolvedor del sistema:
- Abre el archivo de configuración de systemd:
sudo nano /etc/systemd/resolved.conf - Descomenta y modifica la línea de DNS, por ejemplo:
DNS=8.8.8.8 8.8.4.4 - Guarda los cambios y reinicia el servicio con:
sudo systemctl restart systemd-resolved