Oprava: Zlyhanie Žiadna cesta k hostiteľovi na Ubuntu s viacerými sieťami



Vyskúšajte Náš Nástroj Na Odstránenie Problémov

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



žiadna cesta k hostiteľovi-1

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

žiadna cesta k hostiteľovi-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

žiadna cesta k hostiteľovi-3

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.

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

2 minúty prečítané