Oplossing: Mislukt Geen route naar host op Ubuntu met meerdere netwerken
Wanneer u een complexe netwerkconfiguratie hebt, is het frustrerend om de No Route to Host- start te laten verschijnen nadat u een nieuwe interface hebt opgehaald. Dit komt vaak doordat de standaardroute wordt gewijzigd of verwijderd.
Om uw standaardroute in te voeren, voert u in
ip route show
Zoals hierboven getoond, heb ik drie fysieke interfaces, één naar buiten gericht en twee naar interne netwerken. De standaardroute die op het netwerk is gevallen toen een verbinding werd gereset, waardoor de rest van mijn netwerk normaal werkt, waarbij alleen deze machine niet weet waar hij het internet kan bereiken.
Om ervoor te zorgen dat de machine het internet kan bereiken, moet het een standaardroute hebben die kan worden toegevoegd met de volgende opdracht
sudo ip route voeg standaard toe via 136.63.176.1
Als dit probleem zich vaker dan een of twee keer voordoet, kan het een overlast worden, dus ik heb een paar shell-scripts geschreven om de situatie snel te verhelpen.
Het eerste script haalt je huidige IP voor je op. Ik heb $ INTF ingesteld als STDIN, je verandert het in je specifieke interface als je de interfacenaam niet wilt invoeren.
Met behulp van je favoriete teksteditor hou ik van vim en heb ik een bronmap in mijn thuismap
mkdir ~ / src && cd ~ / src
vim getip.sh
#! / bin / bash
# haal ip-adres op dat is 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} huidig _ $ {INTF} .ip)
ip a | grep $ {INTF} | grep inet | knip -d -f6 | knip -d / -f1 | knippen -d. -f1-3 | awk '{print $ 0 ".0 / 24"}'> $ {PTH} net _ $ {INTF} .ip
ip a | grep $ {INTF} | grep inet | knip -d -f6 | knip -d / -f1 | knippen -d. -f1-3 | awk '{print $ 0 ".1"}'> $ {PTH} gw _ $ {INTF} .ip
verklaren TMP_IP
TMP_IP = $ (cat $ {PTH} huidige _ $ {INTF} .ip)
PRO TIP: Als het probleem zich voordoet met uw computer of een laptop / notebook, kunt u proberen de Reimage Plus-software te gebruiken die de opslagplaatsen kan scannen en corrupte en ontbrekende bestanden kan vervangen. Dit werkt in de meeste gevallen, waar het probleem is ontstaan door een systeembeschadiging. U kunt Reimage Plus downloaden door hier te klikkenecho 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
Ervan uitgaande dat dat goed werkt, 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 gewoon getip eth0.2 typen en het ip wordt teruggestuurd.
Het tweede script zal de standaardroute toewijzen, evenals het eerste script uitvoeren.
vim setip.sh
#! / bin / bash
getip $ {1}
# haal ip-adres op dat is ingesteld voor een bepaald apparaat
PTH = (~ / src /)
verklaren RT_IP
RT_IP = $ (cat $ {PTH} gw _ $ {1} .ip)
ip routewijziging standaard via $ RT_IP
ip route voeg standaard toe via $ RT_IP
echo ip-route - standaard via $ RT_IP
Opslaan en afsluiten. Het is u misschien opgevallen dat ik beide wijzigingen aanbreng en een standaardroute toevoeg, dit is voor gelegenheden waarbij u de verkeerde gateway hebt ingesteld.
sudo chmod a + x setip.sh
sudo setip.sh eth0.2
U kunt de routingtabel opnieuw controleren om te controleren of alles goed is.
sudo ip-route show
U kunt de scripts kopiëren naar / usr / local / bin / als u wilt dat ze wereldwijd uitvoerbaar zijn. Het vereist nog steeds sudo, omdat je aan het wijzigen bent en de interface gebruikt.
sudo cp setip.sh / usr / local / bin / setip
PRO TIP: Als het probleem zich voordoet met uw computer of een laptop / notebook, kunt u proberen de Reimage Plus-software te gebruiken die de opslagplaatsen kan scannen en corrupte en ontbrekende bestanden kan vervangen. Dit werkt in de meeste gevallen, waar het probleem is ontstaan door een systeembeschadiging. U kunt Reimage Plus downloaden door hier te klikken