Kai turite sudėtingą tinklo sąranką, apmaudu turėti „ Nėra kelio į pagrindinį kompiuterį “Pradeda rodytis iškėlus naują sąsają. Dažnai taip yra dėl to, kad numatytasis maršrutas yra pakeistas arba atmestas.
Norėdami patikrinti numatytąjį maršrutą, įveskite
ip maršruto šou
Kaip parodyta aukščiau, aš turiu tris fizines sąsajas, vieną į išorę ir dvi prie vidinių tinklų. Numatytasis maršrutas sumažėjo tinkle, kai ryšys buvo atstatytas, todėl likęs mano tinklas veikė normaliai, tik ši mašina nežinojo, kur pasiekti internetą.
Kad mašina galėtų pasiekti internetą, reikia numatytojo maršruto, kurį galima pridėti naudojant šią komandą
sudo ip maršrutas pridėkite numatytąjį nustatymą per 136.63.176.1
Jei turite šią problemą daugiau nei vieną ar du kartus, tai gali tapti nemalonu, todėl aš parašiau keletą „shell“ scenarijų, kad greitai ištaisyčiau situaciją.
Pirmasis scenarijus atims jūsų dabartinį ip. Turiu $ INTF nustatytas kaip STDIN, jūs pakeisite jį į savo konkrečią sąsają, jei nenorite įvesti sąsajos pavadinimo.
Naudojant mėgstamą teksto rengyklę, man patinka „VIM“ ir mano namų kataloge yra šaltinio aplankas
mkdir ~ / src && cd ~ / src
Aš atėjau getip.sh
#! / bin / bash
#fetch ip adresas nustatytas tam tikram įrenginiui
INTF = $ {1}
PTH = (~ / src /)
paskelbti TMP_IP2
TMP_IP2 = $ (ip a | grep $ {INTF} | grep inet | cut -d '” -f6 | cut -d “/” -f1> $ {PTH} dabartinis _ $ {INTF} .ip)
ip a | grep $ {INTF} | grep inet | supjaustyti -d ”” -f6 | supjaustyti -d “/” -f1 | supjaustyti -d “.“ -f1-3 | awk ‘{print $ 0 ″ .0 / 24 ″}’> $ {PTH} neto _ $ {INTF} .ip
ip a | grep $ {INTF} | grep inet | supjaustyti -d ”” -f6 | supjaustyti -d “/” -f1 | supjaustyti -d “.“ -f1-3 | awk ‘{print $ 0 ″ .1 ″}’> $ {PTH} gw _ $ {INTF} .ip
paskelbti TMP_IP
TMP_IP = $ (katė $ {PTH} dabartinė _ $ {INTF} .ip)
aidas „dabartinis wan ip $ TMP_IP“
Išsaugokite ir išeikite, padarykite ją vykdomą ir išbandykite.
sudo chmod a + x getip.sh
bash getip.sh eth0.2
Darant prielaidą, kad tai tinkamai veikė, eikite į priekį ir nukopijuokite jį į / usr / local / bin /, kad jis būtų vykdomas visame pasaulyje.
sudo cp getip.sh / usr / local / bin / getip
Dabar galiu tiesiog įvesti getip eth0.2 ir ip bus grąžintas.
Antrasis scenarijus priskirs numatytąjį maršrutą, taip pat paleis pirmąjį scenarijų.
Aš atėjau iš setip.sh
#! / bin / bash
gauti $ {1}
#fetch ip adresas nustatytas tam tikram įrenginiui
PTH = (~ / src /)
paskelbti RT_IP
RT_IP = $ (katė $ {PTH} gw _ $ {1} .ip)
ip maršruto numatytasis pakeitimas per $ RT_IP
ip maršrutas pridėkite numatytąjį nustatymą per $ RT_IP
echo „ip route - default by $ RT_IP“
Išsaugokite ir meskite. Galbūt pastebėjote, kad pakeičiau ir pridėjau numatytąjį maršrutą, tai yra kartais, kai nustatėte neteisingą šliuzą.
sudo chmod a + x setip.sh
sudo setip.sh eth0.2
Galite dar kartą patikrinti maršruto lentelę ir dar kartą patikrinti, ar viskas gerai.
sudo ip maršruto šou
Galite nukopijuoti scenarijus į / usr / local / bin /, jei norite, kad jie būtų vykdomi visame pasaulyje. Tam vis tiek reikės sudo, nes jūs modifikuojate ir sąsaja.
2 minutės perskaitytasudo cp setip.sh / usr / local / bin / setip