Fix: Keine Route zum Host unter Ubuntu mit mehreren Netzwerken fehlgeschlagen

Wenn Sie ein komplexes Netzwerk-Setup haben, ist es frustrierend, wenn nach dem Aufrufen einer neuen Schnittstelle die Meldung “Keine Route zum Host” angezeigt wird. Dies ist häufig darauf zurückzuführen, dass die Standardroute entweder geändert oder gelöscht wird.

Um Ihre Standardroute zu überprüfen, geben Sie ein

IP-Route anzeigen

Keine Route zu Host-1

Wie oben gezeigt, habe ich drei physische Schnittstellen, eine nach außen und zwei zu internen Netzwerken. Die Standardroute wurde beim Zurücksetzen einer Verbindung im Netzwerk gelöscht, sodass der Rest meines Netzwerks normal funktioniert und nur dieser Computer nicht weiß, wo er auf das Internet zugreifen kann.

Damit der Computer das Internet erreichen kann, muss er über eine Standardroute verfügen, die mit dem folgenden Befehl hinzugefügt werden kann

sudo ip route Standard über 136.63.176.1 hinzufügen

Wenn dieses Problem mehr als ein- oder zweimal auftritt, kann es zu einem Ärgernis werden. Deshalb habe ich ein paar Shell-Skripte geschrieben, um die Situation schnell zu beheben.

Das erste Skript ruft Ihre aktuelle IP für Sie ab. Ich habe $ INTF als STDIN festgelegt. Sie ändern es in Ihre spezifische Schnittstelle, wenn Sie den Schnittstellennamen nicht eingeben möchten.

Mit Ihrem bevorzugten Texteditor mag ich vim und habe einen Quellordner in meinem Home-Verzeichnis

mkdir ~ / src && cd ~ / src

vim getip.sh

#! / bin / bash

IP-Adresse abrufen für bestimmtes Gerät festgelegt

INTF = $ {1}

PTH = (~ / src /)

deklarieren Sie TMP_IP2

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

deklarieren Sie TMP_IP

TMP_IP = $ (cat $ {PTH} current _ $ {INTF} .ip)

Echo “aktuelle wan ip $ TMP_IP”

Speichern und beenden Sie es, machen Sie es ausführbar und testen Sie es dann.

sudo chmod a + x getip.sh

bash getip.sh eth0.2

Keine Route zu Host-2

Angenommen, das hat für Sie ordnungsgemäß funktioniert, kopieren Sie es in / usr / local / bin /, um es global ausführbar zu machen.

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

Jetzt kann ich einfach getip eth0.2 eingeben und die IP wird zurückgegeben.

Das zweite Skript weist die Standardroute zu und führt das erste Skript aus.

vim setip.sh

#! / bin / bash

getip $ {1}

IP-Adresse abrufen für bestimmtes Gerät festgelegt

PTH = (~ / src /)

Deklarieren Sie RT_IP

RT_IP = $ (cat $ {PTH} gw _ $ {1} .ip)

Standardmäßig wird die IP-Route über $ RT_IP geändert

IP-Route Standard über $ RT_IP hinzufügen

Echo “IP-Route – Standard über $ RT_IP”

Speichern und Beenden. Möglicherweise haben Sie bemerkt, dass ich sowohl die Standardroute geändert als auch hinzugefügt habe. Dies ist der Fall, wenn Sie das falsche Gateway festgelegt haben.

sudo chmod a + x setip.sh

sudo setip.sh eth0.2

Keine Route zu Host-3

Sie können die Routing-Tabelle erneut überprüfen, um zu überprüfen, ob alles in Ordnung ist.

sudo ip route show

Sie können die Skripte nach / usr / local / bin / kopieren, wenn Sie möchten, dass sie global ausführbar sind. Es wird weiterhin sudo erfordern, da Sie Änderungen und Schnittstellen vornehmen.

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

Similar Posts

Leave a Reply

Your email address will not be published.