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
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
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
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í.
2 minuty čtenísudo cp setip.sh / usr / local / bin / setip