Oprava: Neúspěšná žádná cesta k hostiteli v Ubuntu s více sítěmi



Vyzkoušejte Náš Nástroj Pro Odstranění Problémů

Pokud máte složité nastavení sítě, je frustrující mít „ Žádná cesta k hostiteli ”Se začnou objevovat po vyvolání nového rozhraní. To je často způsobeno změnou nebo zrušením výchozí trasy.



Chcete-li zkontrolovat výchozí trasu, zadejte



IP trasa show



žádná cesta k hostiteli-1

Jak je uvedeno výše, mám tři fyzická rozhraní, jedno směrem ven a dvě k interním sítím. Výchozí trasa vypadla v síti, když bylo připojení resetováno, což způsobilo, že zbytek mé sítě bude fungovat normálně, pouze tento stroj neví, kam se dostat na internet.

Aby se stroj mohl připojit k internetu, musí mít výchozí trasu, kterou lze přidat pomocí následujícího příkazu



sudo ip route přidat výchozí přes 136.63.176.1

Pokud máte tento problém vzniknout více než jednou nebo dvakrát, může to být nepříjemné, takže jsem napsal několik shell skriptů, které rychle napraví situaci.

První skript načte vaši aktuální IP adresu za vás. Mám $ INTF nastaven jako STDIN, pokud nechcete zadat název rozhraní, změníte jej na své konkrétní rozhraní.

Pomocí vašeho oblíbeného textového editoru mám rád vim a ve svém domovském adresáři mám zdrojovou složku

mkdir ~ / src && cd ~ / src

Přišel jsem getip.sh

#! / bin / bash

# načíst IP adresu nastavenou pro dané zařízení

INTF = $ {1}

PTH = (~ / src /)

deklarovat TMP_IP2

TMP_IP2 = $ (ip a | grep $ {INTF} | grep inet | cut -d ”” -f6 | cut -d “/” -f1> $ {PTH} aktuální _ $ {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

deklarovat TMP_IP

TMP_IP = $ (kočka $ {PTH} aktuální _ $ {INTF} .ip)

echo „current wan ip $ TMP_IP“

Uložte a ukončete, proveďte spustitelný soubor a poté jej otestujte.

sudo chmod a + x getip.sh

bash getip.sh eth0.2

žádná cesta k hostiteli-2

Za předpokladu, že to fungovalo správně, pokračujte a zkopírujte jej do / usr / local / bin /, aby byl globálně spustitelný.

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

Nyní můžu jednoduše zadat getip eth0.2 a ip bude vráceno.

Druhý skript přiřadí výchozí trasu i spuštění prvního skriptu.

Přišel jsem z setip.sh

#! / bin / bash

getip $ {1}

# načíst IP adresu nastavenou pro dané zařízení

PTH = (~ / src /)

deklarovat RT_IP

RT_IP = $ (kočka $ {PTH} gw _ $ {1} .ip)

výchozí změna IP trasy přes $ RT_IP

ip cesta přidat výchozí přes $ RT_IP

echo „ip route - výchozí přes $ RT_IP“

Uložte a ukončete. Možná jste si všimli, že mám jak změnit, tak přidat výchozí trasu, to je pro příležitosti, že máte nastavenou nesprávnou bránu.

sudo chmod a + x setip.sh

sudo setip.sh eth0.2

žádná cesta k hostiteli-3

Znovu můžete zkontrolovat směrovací tabulku a zkontrolovat, zda je vše v pořádku.

sudo ip route show

Skripty můžete zkopírovat do / usr / local / bin /, pokud chcete, aby byly globálně spustitelné. Bude to stále vyžadovat sudo, protože provádíte úpravy a rozhraní.

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

2 minuty čtení