Introducción al problema de /etc/resolv.conf en Linux
Uno de los dolores de cabeza más comunes para los administradores de sistemas y usuarios avanzados de Linux ocurre al intentar cambiar los servidores DNS editando el archivo /etc/resolv.conf. Aunque guardes los cambios, al reiniciar el servicio de red, NetworkManager o el propio sistema operativo, la configuración anterior regresa o el archivo se sobrescribe por completo.
Este comportamiento no es un error del sistema operativo, sino una característica de diseño donde herramientas de gestión de red como NetworkManager o resolvconf controlan dinámicamente este archivo. En este artículo te mostraremos las causas y los métodos exactos para solucionar este inconveniente y fijar tus DNS de forma permanente.
Causas principales por las que se sobrescribe el archivo resolv.conf
- NetworkManager activo: La utilidad de red por defecto en distribuciones como Ubuntu, Fedora o Debian regenera automáticamente el archivo basándose en las conexiones activas.
- Uso de resolvconf: Un paquete diseñado para gestionar los nombres de servidores que sobrescribe las entradas manuales.
- Enlace simbólico: En muchos sistemas modernos,
/etc/resolv.confes en realidad un enlace simbólico que apunta a un archivo generado por systemd-resolved.
Método 1: Deshabilitar la gestión automática en NetworkManager
Si tu distribución utiliza NetworkManager y deseas editar el archivo sin interferencias, puedes configurar la conexión para que no sobrescriba el archivo DNS.
- Abre tu terminal y edita el archivo de configuración de NetworkManager ejecutando
sudo nano /etc/NetworkManager/NetworkManager.conf. - Busca la sección
[main]y añade la siguiente línea:dns=none. - Guarda los cambios presionando
Ctrl + Oy sal conCtrl + X. - Reinicia el servicio de red con el comando
sudo systemctl restart NetworkManager. - Ahora podrás modificar
/etc/resolv.confcon tus DNS preferidas (por ejemplo,nameserver 8.8.8.8) sin que se borren.
Método 2: Configurar las DNS estáticas mediante Netplan (Ubuntu y derivados)
En las versiones modernas de Ubuntu, la forma recomendada de gestionar la red y los servidores DNS es a través de Netplan, evitando editar directamente archivos del sistema.
- Busca el archivo de configuración YAML de Netplan en el directorio correspondiente ejecutando
ls /etc/netplan/. - Abre el archivo con permisos de superusuario, por ejemplo:
sudo nano /etc/netplan/01-netcfg.yaml(el nombre puede variar). - Localiza la sección de tu interfaz de red y añade el bloque
nameserverscon tus direcciones IP deseadas:network: version: 2 ethernets: eth0: dhcp4: true nameservers: addresses: [8.8.8.8, 8.8.4.4] - Guarda el archivo y aplica los cambios ejecutando el comando
sudo netplan apply.
Método 3: Configurar systemd-resolved correctamente
Si tu sistema utiliza systemd-resolved, la mejor práctica no es luchar contra el enlace simbólico, sino configurar el archivo de Stub Resolver.
- Abre el archivo de configuración global con
sudo nano /etc/systemd/resolved.conf. - Descomenta y edita la línea de servidores DNS eliminando el símbolo
#inicial, por ejemplo:DNS=1.1.1.1 8.8.8.8. - Guarda los cambios y reinicia el servicio con
sudo systemctl restart systemd-resolved. - Verifica que el enlace simbólico funcione correctamente ejecutando
sudo ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf.