Fix: Misslyckades ingen väg att vara värd för Ubuntu med flera nätverk



Prova Vårt Instrument För Att Eliminera Problem

När du har en komplex nätverksinstallation är det frustrerande att ha “ Ingen väg att vara värd ”Börjar visas efter att ett nytt gränssnitt har höjts. Detta beror ofta på att standardvägen antingen ändras eller tappas.



För att kontrollera din standardrutt, ange



IP-ruttvisning



ingen väg till värd-1

Som visas ovan har jag tre fysiska gränssnitt, en utåtvänd och två till interna nätverk. Standardvägen sjönk i nätverket när en anslutning återställdes, vilket fick resten av mitt nätverk att fungera normalt, med bara den här maskinen som inte visste var jag skulle nå internet.

För att maskinen ska kunna nå internet måste den ha en standardväg som kan läggas till med följande kommando



sudo ip route lägga till standard via 136.63.176.1

Om du har det här problemet uppstår mer än en eller två gånger kan det bli en olägenhet, så jag har skrivit ett par skalskript för att snabbt åtgärda situationen.

Det första skriptet hämtar din nuvarande ip åt dig. Jag har ställt in $ INTF som STDIN, du ändrar det till ditt specifika gränssnitt om du inte vill ange gränssnittsnamnet.

Med din favorittextredigerare gillar jag vim och har en källmapp i min hemkatalog

mkdir ~ / src && cd ~ / src

Jag kom getip.sh

#! / bin / bash

#fetch ip-adressuppsättning för given enhet

INTF = $ {1}

PTH = (~ / src /)

förklara TMP_IP2

TMP_IP2 = $ (ip a | grep $ {INTF} | grep inet | klipp -d ”” -f6 | klipp -d “/” -f1> $ {PTH} nuvarande _ $ {INTF} .ip)

ip a | grep $ {INTF} | grep inet | klipp -d ”” -f6 | klipp -d “/” -f1 | klipp -d ”.” -f1-3 | awk '{print $ 0 ″ .0 / 24 ″}'> $ {PTH} netto _ $ {INTF} .ip

ip a | grep $ {INTF} | grep inet | klipp -d ”” -f6 | klipp -d “/” -f1 | klipp -d ”.” -f1-3 | awk '{print $ 0 ″ .1 ″}'> $ {PTH} gw _ $ {INTF} .ip

förklara TMP_IP

TMP_IP = $ (katt $ {PTH} aktuell _ $ {INTF} .ip)

eko “nuvarande wan ip $ TMP_IP”

Spara och avsluta, gör det körbart och testa det sedan.

sudo chmod a + x getip.sh

bash getip.sh eth0.2

ingen väg till värd-2

Förutsatt att det fungerade ordentligt för dig, gå vidare och kopiera det till / usr / local / bin / för att göra det globalt körbart.

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

Nu kan jag helt enkelt skriva getip eth0.2 och ip returneras.

Det andra skriptet tilldelar standardvägen och kör det första skriptet.

Jag kom från setip.sh

#! / bin / bash

getip $ {1}

#fetch ip-adressuppsättning för given enhet

PTH = (~ / src /)

förklara RT_IP

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

IP-rutt ändras som standard via $ RT_IP

IP-rutt lägg till standard via $ RT_IP

echo “ip route - default via $ RT_IP”

Spara och avsluta. Du kanske har märkt att jag har både ändra och lägga till standardrutt, det här är för tillfällen där du har fel gateway.

sudo chmod a + x setip.sh

sudo setip.sh eth0.2

ingen väg till värd-3

Du kan kontrollera routingtabellen igen för att dubbelkontrollera att allt är bra.

sudo ip rutt visa

Du kan kopiera skripten till / usr / local / bin / om du vill att de ska kunna köras globalt. Det kräver fortfarande sudo, eftersom du ändrar och gränssnitt.

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

2 minuter läst