Ak máte zložité nastavenie siete, je frustrujúce mať „ Žiadna trasa k hostiteľovi ”Sa začnú objavovať po zavedení nového rozhrania. Je to často kvôli zmene alebo zrušeniu predvolenej trasy.
Ak chcete skontrolovať svoju predvolenú trasu, zadajte
ip trasa show
Ako je uvedené vyššie, mám tri fyzické rozhrania, jedno smerom von a dve k interným sieťam. Predvolená trasa vypadla v sieti, keď sa obnovilo pripojenie, čo spôsobilo, že zvyšok mojej siete pracoval normálne, iba tento prístroj nevedel, kam sa má dostať na internet.
Aby malo zariadenie prístup na internet, musí mať predvolenú trasu, ktorú je možné pridať pomocou nasledujúceho príkazu
sudo ip route pridať predvolené cez 136.63.176.1
Ak máte tento problém vzniknúť viac ako raz alebo dvakrát, môže to byť nepríjemné, a tak som napísal niekoľko shell skriptov pre rýchlu nápravu situácie.
Prvý skript za vás načíta vašu súčasnú IP adresu. Mám nastavený $ INTF ako STDIN. Ak nechcete zadávať názov rozhrania, zmeníte ho na svoje konkrétne rozhranie.
Pomocou vášho obľúbeného textového editora sa mi páči vim a v domovskom adresári mám zdrojový priečinok
mkdir ~ / src && cd ~ / src
Prišiel som getip.sh
#! / bin / bash
# načítať adresu IP nastavenú pre dané zariadenie
INTF = {1} dolárov
PTH = (~ / src /)
deklarovať TMP_IP2
TMP_IP2 = $ (ip a | grep $ {INTF} | grep inet | cut -d ”” -f6 | cut -d “/” -f1> $ {PTH} aktuálny _ $ {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
deklarovať TMP_IP
TMP_IP = $ (mačka $ {PTH} aktuálna _ $ {INTF} .ip)
echo „current wan ip $ TMP_IP“
Uložte a ukončite, urobte ho spustiteľným a potom to otestujte.
sudo chmod a + x getip.sh
bash getip.sh eth0.2
Za predpokladu, že to fungovalo správne, pokračujte a skopírujte ich do adresára / usr / local / bin /, aby boli globálne spustiteľné.
sudo cp getip.sh / usr / local / bin / getip
Teraz môžem jednoducho napísať getip eth0.2 a ip bude vrátené.
Druhý skript priradí predvolenú cestu, rovnako ako spustenie prvého skriptu.
Prišiel som z setip.sh
#! / bin / bash
getip $ {1}
# načítať adresu IP nastavenú pre dané zariadenie
PTH = (~ / src /)
deklarovať RT_IP
RT_IP = $ (mačka $ {PTH} gw _ $ {1} .ip)
ip zmena trasy predvolená cez $ RT_IP
ip cesta pridať predvolené cez $ RT_IP
echo “ip route - predvolené cez $ RT_IP”
Uložiť a ukončiť. Možno ste si všimli, že mám zmenenú aj pridanú predvolenú trasu, to je občas, že máte nastavenú nesprávnu bránu.
sudo chmod a + x setip.sh
sudo setip.sh eth0.2
Môžete znova skontrolovať smerovaciu tabuľku a skontrolovať, či je všetko v poriadku.
sudo ip route show
Skripty môžete skopírovať do adresára / usr / local / bin /, ak chcete, aby boli globálne spustiteľné. Bude to stále vyžadovať sudo, pretože ho upravujete a upravujete rozhranie.
2 minúty prečítanésudo cp setip.sh / usr / local / bin / setip