Fix: Mislykkedes ingen rute til at være vært på Ubuntu med flere netværk



Prøv Vores Instrument Til At Fjerne Problemer

Når du har en kompleks netværksopsætning, er det frustrerende at have “ Ingen rute til vært ”Begynder at blive vist, når du har hævet en ny grænseflade. Dette skyldes ofte, at standardruten enten ændres eller droppes.



For at kontrollere din standardrute skal du indtaste



IP-ruteshow



ingen rute til vært-1

Som vist ovenfor har jeg tre fysiske grænseflader, en udadvendt og to til interne netværk. Standardruten faldt på netværket, da en forbindelse blev nulstillet, hvilket fik resten af ​​mit netværk til at fungere normalt, idet kun denne maskine ikke vidste, hvor jeg skulle nå Internettet.

For at maskinen skal kunne nå Internettet, skal den have en standardrute, der kan tilføjes med følgende kommando



sudo ip-rute tilføj standard via 136.63.176.1

Hvis du har dette problem opstår mere end en eller to gange, kan det blive en gener, så jeg har skrevet et par shell-scripts til hurtigt at rette op på situationen.

Det første script henter din nuværende ip til dig. Jeg har $ INTF indstillet som STDIN, du skifter det til din specifikke grænseflade, hvis du ikke vil indtaste grænsefladenavnet.

Ved hjælp af din yndlings teksteditor kan jeg lide vim og har en kildemappe i min hjemmekatalog

mkdir ~ / src && cd ~ / src

Jeg kom getip.sh

#! / bin / bash

#fetch ip-adresse indstillet til en given enhed

INTF = $ {1}

PTH = (~ / src /)

erklære TMP_IP2

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

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

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

erklære TMP_IP

TMP_IP = $ (kat $ {PTH} nuværende _ $ {INTF} .ip)

ekko “nuværende wan ip $ TMP_IP”

Gem og afslut, gør det eksekverbart, og test det derefter.

sudo chmod a + x getip.sh

bash getip.sh eth0.2

ingen rute til vært-2

Forudsat at det fungerede ordentligt for dig, skal du gå videre og kopiere det til / usr / local / bin / for at gøre det globalt eksekverbart.

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

Nu kan jeg bare skrive getip eth0.2 og ip returneres.

Det andet script tildeler standardruten samt det første script.

Jeg kom fra setip.sh

#! / bin / bash

getip $ {1}

#fetch ip-adresse indstillet til en given enhed

PTH = (~ / src /)

erklære RT_IP

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

ip ruteændring standard via $ RT_IP

IP-rute tilføjer standard via $ RT_IP

ekko “ip-rute - standard via $ RT_IP”

Gem og afslut. Du har måske bemærket, at jeg både har ændret og tilføjet standardrute, dette er til lejligheder, hvor du har det forkerte gateway-sæt.

sudo chmod a + x setip.sh

sudo setip.sh eth0.2

ingen rute til vært-3

Du kan kontrollere rutetabellen igen for at dobbelttjekke, om alt er godt.

sudo ip ruteshow

Du kan kopiere scripts til / usr / local / bin /, hvis du ønsker, at de skal være globalt eksekverbare. Det kræver stadig sudo, da du ændrer og bruger interface.

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

2 minutter læst