Quan teniu una configuració de xarxa complexa, és frustrant tenir el “ No hi ha ruta per allotjar-se ”Comença a aparèixer després de crear una nova interfície. Això sovint es deu al fet que la ruta per defecte es canvia o es deixa caure.
Per comprovar la ruta predeterminada, introduïu
espectacle de ruta ip
Com es mostra més amunt, tinc tres interfícies físiques, una orientada cap a l'exterior i dues cap a xarxes internes. La ruta predeterminada va caure a la xarxa quan es va restablir una connexió, cosa que va provocar que la resta de la xarxa funcionés amb normalitat, ja que només aquesta màquina no sabia on arribar a Internet.
Perquè la màquina pugui accedir a Internet, ha de tenir una ruta predeterminada que es pot afegir amb l'ordre següent
sudo ip route add default per 136.63.176.1
Si teniu aquest problema sorgit més d'una o dues vegades, pot convertir-se en una molèstia, de manera que he escrit un parell de scripts d'intèrpret d'ordres per corregir ràpidament la situació.
El primer script us recuperarà la vostra IP actual. Tinc $ INTF configurat com a STDIN; canvieu-lo a la vostra interfície específica si no voleu introduir el nom de la interfície.
Amb l’editor de text preferit, m’agrada vim i tinc una carpeta d’origen al meu directori inicial
mkdir ~ / src && cd ~ / src
Vaig venir getip.sh
#! / bin / bash
#fetch adreça IP establerta per a un dispositiu determinat
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 | tall -d ”” -f6 | talla -d “/” -f1 | tall -d '.' -f1-3 | awk ‘{print $ 0 ″ .0 / 24 ″}’> $ {PTH} net _ $ {INTF} .ip
ip a | grep $ {INTF} | grep inet | tall -d ”” -f6 | talla -d “/” -f1 | tall -d '.' -f1-3 | awk ‘{print $ 0 ″ .1 ″}’> $ {PTH} gw _ $ {INTF} .ip
declarar TMP_IP
TMP_IP = $ (cat $ {PTH} _ _ {{INTF} .ip actual)
ressò 'IP WAN actual $ TMP_IP'
Deseu i sortiu, feu-lo executable i proveu-lo.
sudo chmod a + x getip.sh
bash getip.sh eth0.2
Suposant que us ha funcionat correctament, continueu i copieu-lo a / usr / local / bin / per fer-lo executable globalment.
sudo cp getip.sh / usr / local / bin / getip
Ara només puc escriure getip eth0.2 i la IP es retornarà.
El segon script assignarà la ruta per defecte, així com l'execució del primer script.
Jo venia de setip.sh
#! / bin / bash
getip $ {1}
#fetch adreça IP establerta per a un dispositiu determinat
PTH = (~ / src /)
declarar RT_IP
RT_IP = $ (cat $ {PTH} gw _ $ {1} .ip)
predeterminat canvi de ruta ip via $ RT_IP
la ruta ip afegeix per defecte a través de $ RT_IP
echo 'ruta ip: per defecte mitjançant $ RT_IP'
Deseu i deixeu de fer-ho. És possible que us hàgiu adonat que he canviat i afegit una ruta per defecte, això és per a ocasions en què teniu la porta d’entrada incorrecta.
sudo chmod a + x setip.sh
suo setip.sh eth0.2
Podeu tornar a consultar la taula d’encaminament per comprovar que tot estigui bé.
sudo ip route show
Podeu copiar els scripts a / usr / local / bin / si voleu que siguin executables globalment. Encara requerirà sudo, ja que esteu modificant i interfície.
2 minuts de lecturasudo cp setip.sh / usr / local / bin / setip