Du VPN klientai viename kompiuteryje: kas susiduria ir kas veikia
Du klientai varžosi dėl numatytojo maršruto, sprendiklio ir filtro tvarkyklių. Užrašykite, kas valdo išėjimą, tada atskirkite antrą tunelį VM arba netns pagalba.
Jūsų antras klientas prisijungia, pirmojo ištekliai nustoja spręstis, o biliete rašoma, kad darbo VPN sugadino asmeninį. Nieko nėra sugadinta gedimo prasme: abu klientai darė tai, kam buvo sukurti, o kompiuteryje yra tik viena maršrutizavimo lentelė. Susidūrimas vyksta dėl keturių išteklių, kuriuos kiekvienas klientas laiko savais. Pereikite juos iš eilės, ir pataisymas paprastai tampa dizaino pasirinkimu, o ne remontu.
1 žingsnis: išsiaiškinkite, kuris klientas valdo išėjimą
Perskaitykite dabartinį išėjimo sprendimą prieš ką nors keisdami. Maršruto paieška viešajam adresui pasako, kurią sąsają ir kurį kitą šuolį paketas naudotų dabar, ir tai yra atsakymas, kas laimėjo. Palyginkite tai su sąsajų pavadinimais, kuriuos sukūrė klientai; juose paprastai būna produkto ar protokolo pavadinimas. Jei paieška rodo į tunelį, kurio nesitikėjote, susidūrimą jau radote.
ip route get 1.1.1.1
ip route show default
route print
Kai kurie klientai visai nepakeičia numatytojo maršruto; jie prideda dvi puses, vieną apatinei adresų erdvės pusei ir vieną viršutinei, kurios kartu apima viską. Tai palieka matomą pradinį numatytąjį maršrutą ir leidžia rankiniam taisymui atrodyti teisingai, nors srautas vis dar išeina per tunelį. Skaitykite metriką ir priešdėlio ilgį, o ne tik numatytojo įrašo buvimą.
Sustokite, jei abu klientai reikalauja to paties priešdėlio su ta pačia metrika. Branduolys pasirinks vieną, o kitas atrodys prisijungęs nieko nenešdamas.
2 žingsnis: patikrinkite sprendiklį ir persidengiančius priešdėlius
DNS yra antras susidūrimas, ir jis duoda būdingą simptomą: vardai nepavyksta, o adresai veikia. Kiekvienas klientas įstato savo sprendiklį, ir paskutinis rašiusysis laimi vėlesnius užklausimus. Klauskite sprendiklio tarnybos, ką ji naudoja kiekvienai sąsajai, o ne skaitykite kliento nustatymų puslapį.
resolvectl status
Get-DnsClientServerAddress
dig +short intranet.corp.example
Tada palyginkite privačius priešdėlius, kuriuos naudoja du tinklai. Jei abi pusės skiria iš to paties diapazono, jokia kliento pusės priemonė to nepataisys, nes kompiuteris negali pasakyti, kuri 10.0.0.0/8 paskirtis priklauso kuriam tuneliui. Vieną pusę reikia pernumeruoti arba išversti, ir tai pokalbis su tinklo savininkais, o ne konfigūracijos pakeitimas. Persidengimas yra vienintelis susidūrimas, kai sąžiningas atsakymas yra tas, kad dizainą reikia keisti.
Sustokite čia, jei priešdėliai persidengia. Viskas toliau šiame sąraše daro prielaidą, kad jie nesidengia.
3 žingsnis: pasirinkite atskyrimo modelį, kuris išlieka
Patikimi modeliai vengia paleisti du klientus prieš tą pačią maršrutizavimo lentelę. Vienas klientas su skaldyto tunelio politika, kuri pasiekia abu privačius tinklus yra paprasčiausias, jei paskirties vietos nesidengia ir politikos savininkas sutinka. Virtualioji mašina arba tinklo vardų erdvė yra kitas žingsnis, nes kiekviena gauna savo lentelę ir savo sprendiklį.
sudo ip netns add vpn2
sudo ip netns exec vpn2 ip link show
sudo ip netns exec vpn2 curl -sI https://intranet.corp.example/
Vardų erdvė suteikia tokį pat atskyrimą kaip virtualioji mašina be antros operacinės sistemos, bet turi grubių kraštų: tunelio įrenginį reikia perkelti į ją, o programas paleisti jos viduje. Atskiras fizinis įrenginys dažnai yra mažiausiai stebinantis pasirinkimas asmeniniam VPN šalia valdomo darbo kliento. Vieno tunelio dėjimas į kitą nėra atskyrimo modelis; vidinis galinis taškas turi likti pasiekiamas per išorinį tunelį, o tokia konstrukcija papildomai prideda MTU ir delsos problemų.
Pasirinkite vieną modelį ir užrašykite kodėl. Vienos programos vardų erdvės maišymas su skaldytu tuneliu likusiai daliai atkuria pradinį susidūrimą sunkiau derinama forma.
4 žingsnis: patikrinkite abu tinklus iš tos pačios sesijos
Išbandykite vieną išteklių kiekviename privačiame tinkle iš aplinkos, kurioje programa tikrai veikia, o ne iš savo apvalkalo, jei programa veikia vardų erdvėje. Patikrinkite išėjimo sąsają, išspręstą adresą ir atsakymo kodą kartu, nes sėkmė viename iš trijų gali paslėpti gedimą kituose. Pakartokite po perkrovimo, nes klientų paleidimo tvarka lemia, kas laimi. Būtent šią tvarką žmonės pamiršta užrašyti.
curl -sI https://intranet.corp.example/
curl -sI https://files.personal.example/
ip route get 10.20.30.40
Užrašykite klientų versijas, sąsajas, sprendiklio būseną ir kiekvieno tinklo priešdėlius. Kai klientas atnaujinamas ir pakeičia maršruto elgesį, tas įrašas yra skirtumas tarp penkių minučių pataisymo ir perstatymo. Kitas žmogus nepasidalins jūsų atmintimi apie tai, kuris tunelis pakilo pirmas.
Sąrašas baigtas, kai galite įvardyti sąsają, kuri valdo numatytąjį maršrutą, sprendiklį, kurį naudoja kiekvienas vardas, modelį, kuris atskiria antrą tunelį, ir vienos užklausos kiekvienam tinklui rezultatą po perkrovimo. Viskas mažiau yra konfigūracija, kuri šiandien veikia atsitiktinai.