Solución a: “Network is unreachable” en Linux
Si al intentar hacer un ping, conectarte por SSH o acceder a Internet Linux responde Network is unreachable, el problema no necesariamente está en tu conexión a Internet. En muchos casos, el sistema simplemente no sabe por dónde enviar los paquetes.
La buena noticia es que podemos comprobarlo desde la terminal y encontrar rápidamente si falta una ruta, una puerta de enlace o si la interfaz de red no está correctamente configurada.
¿Qué significa “Network is unreachable”?
Traducido literalmente, significa que “la red es inalcanzable”. Pero lo importante es entender qué está pasando realmente.
Cuando Linux necesita comunicarse con una dirección IP, el kernel consulta su tabla de enrutamiento para decidir por qué interfaz debe enviar los paquetes y, cuando corresponde, a través de qué puerta de enlace.
Si no existe una ruta válida para llegar al destino, puede aparecer:
Network is unreachablePor ejemplo, si ejecutamos:
ping 8.8.8.8y recibimos:
ping: connect: Network is unreachableLinux no está diciendo que el servidor de Google esté caído. Está indicando que nuestro propio equipo no tiene una ruta válida para llegar hasta esa dirección.
¿Por qué aparece este error?
Las causas pueden ser varias, pero las más habituales son:
- No existe una ruta por defecto.
- La puerta de enlace configurada es incorrecta.
- La interfaz de red está desconectada o desactivada.
- La interfaz no recibió una dirección IP válida.
- La configuración de red quedó incompleta después de un cambio.
- Hay varias interfaces y Linux está utilizando una ruta incorrecta.
- Se modificaron manualmente las rutas y se eliminó la ruta necesaria.
Por eso no conviene empezar agregando rutas a ciegas. Primero vamos a comprobar qué está ocurriendo.
1. Comprobar la interfaz de red
Lo primero es comprobar que Linux detecta la interfaz y conocer su nombre.
ip addrPodemos encontrar nombres como eth0, enp3s0, eno1 o similares. En conexiones Wi-Fi normalmente veremos nombres como wlan0 o wlp2s0.
También podemos obtener una vista más sencilla del estado de las interfaces:
ip -br addrLa interfaz que utilizamos para conectarnos debería aparecer activa y, normalmente, tener una dirección IP asignada.
Si la interfaz no tiene dirección IP, el problema puede estar antes de la propia ruta. En ese caso hay que revisar la conexión, DHCP o la configuración de red.
2. Comprobar la tabla de rutas
Ahora vamos a comprobar algo fundamental: qué caminos conoce Linux para llegar a otras redes.
ip routeUna configuración típica puede mostrar algo parecido a esto:
default via 192.168.1.1 dev enp3s0
192.168.1.0/24 dev enp3s0 proto kernel scope link src 192.168.1.25La línea que nos interesa especialmente es:
default via 192.168.1.1 dev enp3s0Esta es la ruta por defecto. Indica que cuando Linux no tenga una ruta más específica para un destino, debe enviar el tráfico al router 192.168.1.1 utilizando la interfaz enp3s0.
Si no aparece ninguna línea que comience con default, podemos tener justamente la causa del problema: Linux conoce su red local, pero no sabe por dónde salir hacia otras redes.
3. Comprobar específicamente la ruta por defecto
En lugar de revisar toda la tabla podemos consultar solamente la ruta por defecto:
ip route show defaultSi existe, veremos algo similar a:
default via 192.168.1.1 dev enp3s0Si el comando no devuelve nada, no hay una ruta por defecto configurada en la tabla que estamos consultando.
4. Preguntarle directamente al kernel qué ruta utilizaría
Este es uno de los pasos más útiles para diagnosticar el problema.
Podemos pedirle a Linux que determine cómo llegaría a una dirección IP concreta:
ip route get 8.8.8.8Si existe una ruta válida, veremos información similar a:
8.8.8.8 via 192.168.1.1 dev enp3s0 src 192.168.1.25En cambio, si no existe ninguna ruta válida, podemos recibir:
RTNETLINK answers: Network is unreachableEste resultado es especialmente importante porque confirma que el problema está en el enrutamiento local: el kernel no encuentra un camino para llegar al destino.
5. Si falta la ruta por defecto
Si comprobamos que la interfaz tiene una dirección IP correcta y que simplemente falta la ruta por defecto, podemos agregarla temporalmente.
Por ejemplo, suponiendo que:
- La interfaz es
enp3s0. - El router es
192.168.1.1.
El comando sería:
sudo ip route add default via 192.168.1.1 dev enp3s0Importante: no copies estos valores literalmente si no corresponden a tu red. La dirección del gateway y el nombre de la interfaz deben ser los de tu propia configuración.
Ubuntu documenta precisamente este método para añadir temporalmente una puerta de enlace por defecto mediante ip route. Estas modificaciones realizadas directamente con ip no son permanentes y pueden desaparecer después de reiniciar. :contentReference[oaicite:1]{index=1}
6. Volver a comprobar la conexión
Después de corregir la ruta, podemos comprobar nuevamente qué camino utilizará Linux:
ip route get 8.8.8.8Y después probar la conectividad mediante una dirección IP:
ping -c 4 8.8.8.8Usar primero una dirección IP es útil porque nos permite separar este problema de un posible problema de DNS.
Si el ping funciona mediante IP pero una dirección como google.com no funciona, entonces probablemente estamos ante otro problema relacionado con la resolución de nombres y no con Network is unreachable.
7. Si utilizas NetworkManager
En Ubuntu Desktop, Linux Mint y otras distribuciones de escritorio es habitual que la red sea administrada por NetworkManager.
Podemos comprobar el estado de las conexiones con:
nmcli device statusTambién podemos consultar el estado general de la conectividad de NetworkManager:
nmcli networking connectivitySi la conexión debería obtener automáticamente una dirección IP y una ruta mediante DHCP, una forma sencilla de volver a activar el perfil de conexión es desconectarlo y conectarlo nuevamente desde el entorno gráfico o mediante NetworkManager.
Antes de modificar manualmente rutas, conviene comprobar si el problema está realmente en el perfil de conexión.
8. Hacer permanente la solución en Ubuntu
Agregar una ruta mediante ip route puede servir para comprobar que encontramos la causa, pero no es la solución definitiva si la ruta desaparece después de reiniciar.
En Ubuntu, la configuración de red se gestiona mediante Netplan, que puede utilizar NetworkManager o systemd-networkd como backend. La configuración permanente debe realizarse en el sistema de gestión de red correspondiente. :contentReference[oaicite:2]{index=2}
Por ejemplo, una configuración estática de Netplan puede definir una ruta por defecto de esta manera:
network:
version: 2
ethernets:
enp3s0:
addresses:
- 192.168.1.25/24
routes:
- to: default
via: 192.168.1.1Después de modificar la configuración, se aplica con:
sudo netplan applyNo utilices este ejemplo sin adaptarlo a tu red. La interfaz, dirección IP y gateway deben coincidir con tu configuración real.
¿Y si hay Wi-Fi?
El procedimiento de diagnóstico es prácticamente el mismo.
Primero comprobamos que la interfaz Wi-Fi tenga una dirección IP:
ip -br addrDespués revisamos la ruta:
ip routeY finalmente comprobamos qué ruta utilizaría Linux:
ip route get 8.8.8.8No importa demasiado si la conexión es Ethernet o Wi-Fi: para este error, lo importante es que exista una interfaz correctamente configurada y una ruta válida hacia el destino.
Network is unreachable no es lo mismo que un problema de DNS
Esta diferencia es importante.
Si Linux muestra:
Network is unreachableel problema puede estar en la ruta que utiliza el sistema.
En cambio, si podemos hacer:
ping -c 4 8.8.8.8pero esto falla:
ping -c 4 google.comla conexión IP puede estar funcionando y el problema puede encontrarse en la resolución DNS.
Por eso, para diagnosticar Network is unreachable, es mejor comenzar utilizando una dirección IP y revisar primero la tabla de rutas.
Qué no conviene hacer
- No cambiar DNS antes de comprobar la tabla de rutas.
- No agregar una puerta de enlace al azar.
- No borrar todas las rutas de la interfaz sin saber qué configuración utiliza.
- No modificar archivos de Netplan copiando configuraciones de otra máquina.
- No asumir que el problema está en Internet solamente porque un sitio web no abre.
Conclusión
El error Network is unreachable suele indicar que Linux no encuentra una ruta válida para llegar al destino. La forma más rápida de comprobarlo es revisar la interfaz, consultar ip route y preguntarle directamente al kernel qué ruta utilizaría con ip route get.
Si falta la ruta por defecto, podemos corregirla temporalmente con ip route y después hacer permanente la configuración mediante el sistema de gestión de red que utilice nuestra distribución.
La clave es sencilla: antes de tocar la configuración de red, comprobar qué ruta falta y por qué.
