Si en Linux parece que hay conexión a Internet, pero no se pueden abrir sitios web, o si se puede acceder por dirección IP pero no por nombre de dominio, es muy probable que exista un problema de resolución DNS. DNS se encarga de traducir nombres de dominio como example.com a direcciones IP reales. Si ese proceso falla, la red puede seguir activa, pero el uso normal de Internet se vuelve muy limitado.
Síntomas frecuentes
- El navegador muestra que no se puede encontrar el servidor
ping 8.8.8.8funciona, peroping google.comfalla- Fallan gestores de paquetes como
apt,dnf,yumopacman - Aparece el mensaje
Temporary failure in name resolution
Lo primero que hay que comprobar
Antes de nada, conviene distinguir si el problema afecta a toda la red o solamente a DNS.
ping -c 4 8.8.8.8
ping -c 4 google.com
ip addr
ip route
Si 8.8.8.8 responde pero google.com no, el problema suele estar en la configuración DNS o en el servicio DNS local. Si tampoco funciona el acceso directo por IP, entonces la causa probablemente esté en Wi-Fi, la interfaz de red, la puerta de enlace o el enrutamiento.
Causas principales
1. Configuración incorrecta de /etc/resolv.conf
En muchos sistemas Linux, la información de los servidores DNS se guarda en /etc/resolv.conf. Si allí no hay un nameserver correcto, no será posible resolver nombres de dominio.
cat /etc/resolv.conf
Ejemplo:
nameserver 8.8.8.8
nameserver 1.1.1.1
Si el archivo está vacío o apunta a un DNS local erróneo, la resolución fallará. También hay que recordar que en sistemas Linux modernos este archivo suele ser gestionado automáticamente por NetworkManager o systemd-resolved, por lo que los cambios manuales pueden sobrescribirse.
2. Problemas con systemd-resolved
En distribuciones como Ubuntu, systemd-resolved suele encargarse de la resolución DNS y utiliza 127.0.0.53 como resolvedor local. Si ese servicio se detiene, la resolución de nombres puede dejar de funcionar.
systemctl status systemd-resolved
resolvectl status
Si hay problemas, puede reiniciarse:
sudo systemctl restart systemd-resolved
3. NetworkManager no aplica bien el DNS
En Linux de escritorio, NetworkManager suele obtener la información DNS mediante DHCP. Si el perfil de red está dañado o la reconexión falla, es posible que no se apliquen correctamente los servidores DNS.
nmcli dev show | grep DNS
nmcli connection show
Si hace falta, reinícielo:
sudo systemctl restart NetworkManager
4. Influencia de VPN, proxy o firewall
Una VPN puede desviar las consultas DNS por una ruta incorrecta, y un firewall puede bloquear el puerto 53. En esos casos, la red parece funcionar, pero la resolución de nombres falla.
5. Caché DNS dañada o desactualizada
Si la caché local está dañada o contiene datos antiguos, algunos dominios pueden dejar de resolverse. En entornos con systemd-resolved o nscd, vaciar la caché puede ayudar.
sudo resolvectl flush-caches
Pasos prácticos de solución
Paso 1: Consultar directamente a un DNS público
nslookup google.com 8.8.8.8
dig google.com @8.8.8.8
Si esto funciona, lo más probable es que el DNS externo esté bien y que el problema esté en la configuración local.
Paso 2: Configurar temporalmente un DNS público
sudo sh -c 'printf "nameserver 8.8.8.8\nnameserver 1.1.1.1\n" > /etc/resolv.conf'
Esto sirve como solución temporal. Tras reiniciar o reconectar la red, el archivo puede volver a cambiar. Para una solución permanente, hay que corregir la configuración de NetworkManager, netplan o systemd-resolved.
Paso 3: Revisar netplan en Ubuntu
sudo nano /etc/netplan/*.yaml
Ejemplo:
nameservers:
addresses: [8.8.8.8,1.1.1.1]
Después, aplicar los cambios:
sudo netplan apply
Paso 4: Renovar la configuración DHCP
sudo dhclient -r
sudo dhclient
Si el servidor DHCP proporcionó datos DNS incorrectos, esto puede solucionarlo.
Comandos útiles para comprobar el estado
ping -c 4 8.8.8.8
ping -c 4 google.com
cat /etc/resolv.conf
systemctl status systemd-resolved
resolvectl status
nmcli dev show | grep DNS
nslookup google.com
dig google.com
journalctl -u systemd-resolved --no-pager | tail -n 50
Cómo evitar que vuelva a ocurrir
- No limitarse a editar manualmente
/etc/resolv.conf - Entender si DNS está siendo gestionado por DHCP, NetworkManager o systemd-resolved
- Revisar la configuración DNS después de instalar o activar una VPN
- En servidores, definir DNS fijos de forma explícita
Conclusión
Cuando Linux no puede resolver DNS, lo más importante es comprobar primero si hay conectividad por IP. Así se puede saber rápidamente si el problema está solo en DNS o en toda la red. Después conviene revisar /etc/resolv.conf, systemd-resolved, NetworkManager, DHCP y la configuración de la VPN. Más allá de una solución temporal, lo realmente importante es entender qué componente del sistema está administrando el DNS.