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
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
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
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.
2 minutos de lecturasudo cp setip.sh / usr / local / bin / setip