Naudoti du VPN nėra viena užklausa. Tai gali reikšti pasiekti dvi organizacijas vieną po kitos, atskirti darbo ir asmenines programėles arba paleisti vieną tunelį kito viduje. Android šiuos tris atvejus tvarko visiškai skirtingai, o telefone įdiegtų VPN programėlių skaičius nėra architektūra. Juos skiriantis klausimas paprastas: ar du keliai turi egzistuoti tuo pačiu metu tai pačiai programėlei?

Trys išdėstymai, vienas klausimas

Jei atsakymas ne, nes du tinklai naudojami skirtingu metu, jums reikia sąmoningo perjungimo. Jei atsakymas ne, nes pačios programėlės yra atskiros, jums reikia profilių atskyrimo, kai kiekviena programėlė yra kontekste, kuriam priklauso jos tunelis. Jei atsakymas taip ir vienas kelias turi fiziškai nešti kitą, jums reikia grandinės, ir tai vienintelis iš trijų, kuriame tvarka yra sprendimo dalis.

Visa kita kyla iš šio pasirinkimo. Perjungimas turi perėjimo langą, atskyrimas turi politikos ribą, o grandinė turi papildomų sąnaudų ir priklausomybės kainą. Pasirinkus netinkamą, ji nesugenda švariai; ji sukuria telefoną, kuris atrodo prijungtas, ir programėlę, kuri niekur nepasiekia.

Perjungimas viename naudotojo kontekste

Android leidžia vieną aktyvią VPN paslaugą vienam naudotojui. Paleidus antrą VPN programėlę tame pačiame kontekste, pirmoji pakeičiama arba atsisakoma tiesiogiai; ji niekada nesujungia dviejų maršrutų rinkinių ir tikrai nesudeda jų šifravimo. Vieno naudotojo viduje du tuneliai yra seka, o ne suma.

Tai praktiška, kai prieiga tikrai nuosekli. Pavadinkite profilius taip, kad aktyvusis būtų akivaizdus, užbaikite viską jautrų prieš perjungdami ir tikėkitės trumpo lango, kuriame nė vienas kelias nėra visiškai nustatytas. Naršyklės skirtuko uždarymas nėra tas pats, kas sesijos pabaiga: skirtukas gali išsaugoti savo paskyros būseną ir tiesiog išsiųsti kitą užklausą naujai pasirinktu tinklu, ir būtent tai yra nuotėkis, kurį žmonės pastebi vėliau.

Ko perjungimas negali duoti, tai mašinos, kuri vienu metu yra abiejuose tinkluose. Jei programėlei reikia privataus adreso iš kiekvienos pusės, jokia kliento disciplina to nesukurs.

Atskyrimas pagal profilį

Valdomas darbo profilis yra atskiras naudotojas su savo programėlėmis, raktų saugykla ir tinklo politika. Darbo pašto klientas gali naudoti organizacijos tunelį, o asmeninė naršyklė – asmeninį, ir abu gali būti prijungti tuo pačiu metu, nes jie nėra tame pačiame kontekste, konkuruojančiame dėl vietos.

Atskyrimas yra ir riba. Asmeninė naršyklė neskolinasi darbo tunelio, nemato darbo DNS priesagų ir nepasiekia darbo tinklo vien todėl, kad abi paslaugos rodomos kaip prijungtos. Kai kas nors praneša, kad nuoroda neatsidaro, prieš liesdami bet kurį iš dviejų VPN patikrinkite, kuri programėlės kopija ją apdorojo ir kuriam profiliui priklauso ta paskyra.

Traktuokite ribą kaip fiksuotą. Antro profilio sukūrimas arba darbo profilio pašalinimas siekiant apeiti darbdavio maršrutizavimo sprendimą sunaikina būtent tą atskyrimą, kuris leido išdėstymui veikti, o valdomame įrenginyje tai paprastai yra politikos pažeidimas, o ne konfigūracijos pakeitimas.

Grandinė, kurioje tvarka yra sprendimas

Grandinė yra išdėstymas, kurį žmonės paprastai turi omenyje sakydami abu kartu: telefono tunelis keliauja maršrutizatoriaus tunelio viduje. Ji gali veikti, o apribojimai yra konkretūs. Išorinis tiekėjas turi leisti veikiantį kelią iki telefono VPN galinio taško, o tai UDP pagrįstiems protokolams reiškia, kad išorinė paslauga neturi blokuoti ar riboti to srauto.

Supraskite, kas ką mato. Išorinis tiekėjas mato ryšį link vidinio galinio taško. Vidinis tiekėjas gauna telefono srautą iš išorinės išėjimo ir persiunčia jį toliau. Galutinė paskirties vieta paprastai mato vidinės paslaugos išėjimą, ir nė vienas tiekėjas grandinėje nėra aklas; programėlių paskyros vis tiek identifikuoja naudotoją nepriklausomai nuo kelio.

Tikėkitės praktinių sąnaudų. Kiekvienas sluoksnis prideda inkapsuliavimo, todėl efektyvusis MTU mažėja ir vertė, kuri buvo tinkama vienam tuneliui, dabar fragmentuojasi arba stringa, kol vidinio tunelio MTU nustatomas konservatyviai. Du sluoksniai taip pat reiškia dvi gedimo priklausomybes ir du gyvybės palaikymo pranešimų rinkinius, o TCP pagrįstas vidinis tunelis per nuostolingą išorinę jungtį gali stringti taip, kad atrodo kaip miręs serveris.

Svarbiausia, grandinė nesulieja dviejų privačių tinklų. Maršrutai, persidengiantys priešdėliai, DNS sprendimas ir prieigos taisyklės lieka atskiri sprendimai, o maršrutizatorius, nešantis vieną VPN, kol telefonas neša kitą, nesuteikia telefonui abiejų adresų erdvių.

Patikrinkite sprendimą prieš jį derindami

Užrašykite išdėstymą vienu sakiniu ir išbandykite jį su programėle, kuri nepavyko. Nuosekli prieiga turėtų rodyti vieną tunelį vienu metu; profilių atskyrimas turėtų rodyti kiekvieną programėlę jos pačios naudotojuje; grandinė turėtų rodyti vidinį tunelį besikuriantį per išorinę sąsają, o ne per fizinę.

adb shell ip -br addr
adb shell ip route get 10.20.0.8
adb shell dumpsys connectivity | grep -i vpn

Jei maršruto paieška nurodo fizinę sąsają, kol programėlė tikisi tunelio, sprendimas ir programėlės kontekstas nesutaria, ir jokia papildoma VPN programėlė jų nesutaikys. Valdomų profilių dokumentacija apima atskyrimo taisykles, jei jums reikia politikos, o ne maršrutizavimo detalės.

Susiję straipsniai