Solución: no se produjo ninguna ruta al host en Ubuntu con varias redes



Pruebe Nuestro Instrumento Para Eliminar Los Problemas

Cuando tiene una configuración de red compleja, es frustrante tener el ' Sin ruta al anfitrión ”Comienzan a aparecer después de crear una nueva interfaz. Esto se debe con frecuencia a que la ruta predeterminada se cambia o se elimina.



Para verificar su ruta predeterminada ingrese



espectáculo de ruta ip



sin ruta al host-1

Como se muestra arriba, tengo tres interfaces físicas, una hacia el exterior y dos hacia las redes internas. La ruta predeterminada se cayó en la red cuando se restableció una conexión, lo que provocó que el resto de mi red funcionara normalmente, y solo esta máquina no sabía dónde conectarse a Internet.

Para que la máquina pueda acceder a Internet, debe tener una ruta predeterminada que se puede agregar con el siguiente comando



sudo ip route agregar predeterminado a través de 136.63.176.1

Si este problema surge más de una o dos veces, puede convertirse en una molestia, por lo que he escrito un par de scripts de shell para rectificar rápidamente la situación.

El primer script buscará su IP actual por usted. Tengo $ INTF configurado como STDIN, lo cambia a su interfaz específica si no desea ingresar el nombre de la interfaz.

Usando su editor de texto favorito, me gusta vim y tengo una carpeta de origen en mi directorio de inicio

mkdir ~ / src && cd ~ / src

Vine getip.sh

#! / bin / bash

#fetch dirección IP configurada para un dispositivo dado

INTF = $ {1}

PTH = (~ / src /)

declarar TMP_IP2

TMP_IP2 = $ (ip a | grep $ {INTF} | grep inet | cut -d ”” -f6 | cut -d “/” -f1> $ {PTH} actual _ $ {INTF} .ip)

ip a | grep $ {INTF} | grep inet | cut -d ”” -f6 | cut -d “/” -f1 | cut -d ”.” -f1-3 | awk ‘{print $ 0 ″ .0 / 24 ″}’> $ {PTH} net _ $ {INTF} .ip

ip a | grep $ {INTF} | grep inet | cut -d ”” -f6 | cut -d “/” -f1 | cut -d ”.” -f1-3 | awk ‘{print $ 0 ″ .1 ″}’> $ {PTH} gw _ $ {INTF} .ip

declarar TMP_IP

TMP_IP = $ (cat $ {PTH} actual _ $ {INTF} .ip)

echo 'ip wan actual $ TMP_IP'

Guarde y salga, hágalo ejecutable y luego pruébelo.

sudo chmod a + x getip.sh

bash getip.sh eth0.2

sin ruta al host-2

Suponiendo que funcionó correctamente para usted, continúe y cópielo en / usr / local / bin / para hacerlo globalmente ejecutable.

sudo cp getip.sh / usr / local / bin / getip

Ahora simplemente puedo escribir getip eth0.2 y se devolverá la ip.

El segundo script asignará la ruta predeterminada, además de ejecutar el primer script.

Vengo de setip.sh

#! / bin / bash

getip $ {1}

#fetch dirección IP configurada para un dispositivo dado

PTH = (~ / src /)

declarar RT_IP

RT_IP = $ (cat $ {PTH} gw _ $ {1} .ip)

cambio de ruta IP predeterminado a través de $ RT_IP

ruta ip agregar predeterminada a través de $ RT_IP

echo 'ruta ip - predeterminado a través de $ RT_IP'

Guardar y Salir. Es posible que haya notado que cambié y agregué la ruta predeterminada, esto es para ocasiones en las que tiene configurada la puerta de enlace incorrecta.

sudo chmod a + x setip.sh

sudo setip.sh eth0.2

sin ruta al host-3

Puede consultar la tabla de enrutamiento nuevamente para verificar que todo esté bien.

sudo ip route show

Puede copiar los scripts en / usr / local / bin / si desea que sean ejecutables globalmente. Todavía requerirá sudo, ya que está modificando una interfaz.

sudo cp setip.sh / usr / local / bin / setip

2 minutos de lectura