Oplossing: mislukt Geen route naar host op Ubuntu met meerdere netwerken



Probeer Ons Instrument Voor Het Oplossen Van Problemen

Als u een complexe netwerkconfiguratie heeft, is het frustrerend om de ' Geen route naar host ”Verschijnen na het openen van een nieuwe interface. Dit komt vaak doordat de standaardroute wordt gewijzigd of verwijderd.



Om uw standaardroute te controleren, voert u in



ip route show



geen route naar host-1

Zoals hierboven getoond, heb ik drie fysieke interfaces, één naar buiten gericht en twee naar interne netwerken. De standaardroute viel op het netwerk toen een verbinding werd gereset, waardoor de rest van mijn netwerk normaal werkte, terwijl alleen deze machine niet wist waar hij het internet kon bereiken.

Om ervoor te zorgen dat de machine het internet kan bereiken, moet deze een standaardroute hebben die kan worden toegevoegd met de volgende opdracht



sudo ip route standaard toevoegen via 136.63.176.1

Als dit probleem zich meer dan een of twee keer voordoet, kan het vervelend worden, dus ik heb een paar shellscripts geschreven om de situatie snel recht te zetten.

Het eerste script haalt je huidige ip voor je op. Ik heb $ INTF ingesteld als STDIN, u wijzigt dit naar uw specifieke interface als u de interfacenaam niet wilt invoeren.

Met je favoriete teksteditor vind ik vim leuk en heb ik een bronmap in mijn homedirectory

mkdir ~ / src && cd ~ / src

Ik kwam getip.sh

#! / bin / bash

#fetch IP-adres ingesteld voor een bepaald apparaat

INTF = $ {1}

PTH = (~ / src /)

declareer TMP_IP2

TMP_IP2 = $ (ip a | grep $ {INTF} | grep inet | cut -d '' -f6 | cut -d '/' -f1> $ {PTH} huidige _ $ {INTF} .ip)

ip een | grep $ {INTF} | grep inet | cut -d ”” -f6 | cut -d '/' -f1 | cut -d '.' -f1-3 | awk ‘{print $ 0 ″ .0 / 24 ″}’> $ {PTH} net _ $ {INTF} .ip

ip een | grep $ {INTF} | grep inet | cut -d ”” -f6 | cut -d '/' -f1 | cut -d '.' -f1-3 | awk ‘{print $ 0 ″ .1 ″}’> $ {PTH} gw _ $ {INTF} .ip

declareer TMP_IP

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

echo 'huidige wan ip $ TMP_IP'

Sla op en sluit af, maak het uitvoerbaar en test het vervolgens.

sudo chmod a + x getip.sh

bash getip.sh eth0.2

geen route naar host-2

Ervan uitgaande dat dit goed werkte, ga je gang en kopieer het naar / usr / local / bin / om het wereldwijd uitvoerbaar te maken.

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

Nu kan ik eenvoudig getip eth0.2 typen en de ip wordt geretourneerd.

Het tweede script wijst de standaardroute toe en voert het eerste script uit.

Ik kwam van setip.sh

#! / bin / bash

ontvang $ {1}

#fetch IP-adres ingesteld voor een bepaald apparaat

PTH = (~ / src /)

declareer RT_IP

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

ip routeverandering standaard via $ RT_IP

ip route standaard toevoegen via $ RT_IP

echo 'ip route - standaard via $ RT_IP'

Opslaan en afsluiten. Het is je misschien opgevallen dat ik zowel de standaardroute heb gewijzigd als toegevoegd, dit is voor gevallen waarin je de verkeerde gateway hebt ingesteld.

sudo chmod a + x setip.sh

sudo setip.sh eth0.2

geen route naar host-3

U kunt de routeringstabel nogmaals controleren om te controleren of alles goed is.

sudo ip route show

U kunt de scripts naar / usr / local / bin / kopiëren als u wilt dat ze globaal uitvoerbaar zijn. Het zal nog steeds sudo nodig hebben, aangezien je de interface aanpast.

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

2 minuten gelezen