Два VPN на адным тэлефоне: выбірайце схему, а не колькасць праграм
Пераключэнне, падзел па профілях і ўкладзены ланцуг — гэта тры розныя задумы. Выбірайце па тым, што патрэбна праграме ў адзін момант, потым праверце MTU і шлях.
Карыстанне двума VPN — гэта не адзін запыт. Гэта можа азначаць дасягненне дзвюх арганізацый адна за адной, адасабленне працоўных і асабістых праграм або запуск аднаго тунелю ўнутры іншага. Android апрацоўвае гэтыя тры выпадкі цалкам па-рознаму, і колькасць усталяваных на тэлефоне праграм VPN — гэта не архітэктура. Пытанне, якое іх раздзяляе, простае: ці павінны два шляхі існаваць у адзін і той жа момант для адной і той жа праграмы?
Тры схемы, адно пытанне
Калі адказ не, бо дзве сеткі выкарыстоўваюцца ў розны час, вам патрэбна наўмыснае пераключэнне. Калі адказ не, бо самі праграмы падзеленыя, вам патрэбна падзел па профілях, дзе кожная праграма знаходзіцца ў кантэксце, які валодае яе тунелем. Калі адказ так і адзін шлях павінен фізічна несці іншы, вам патрэбен ланцуг, і гэта адзіная з трох схем, дзе парадак з'яўляецца часткай задумы.
Усё астатняе вынікае з гэтага выбару. Пераключэнне мае акно пераходу, падзел мае мяжу палітыкі, а ланцуг мае дадатковыя выдаткі і кошт залежнасцей. Выбар няправільнай схемы не дае чыстай памылкі; ён стварае тэлефон, які выглядае падключаным, і праграму, якая нікуды не можа дасягнуць.
Пераключэнне ў межах аднаго кантэксту карыстальніка
Android дазваляе адну актыўную службу VPN на карыстальніка. Запуск другой праграмы VPN у тым жа кантэксце замяняе першую або цалкам адхіляецца; ён ніколі не аб'ядноўвае два наборы маршрутаў і тым больш не накладае іх шыфраванне. У межах аднаго карыстальніка два тунелі — гэта паслядоўнасць, а не сума.
Гэта працаздольна, калі доступ сапраўды паслядоўны. Назавіце профілі так, каб актыўны быў відавочны, скончыце ўсё адчувальнае перад пераключэннем і чакайце кароткае акно, калі ні адзін з шляхоў цалкам не ўсталяваны. Закрыццё ўкладкі браўзера не тое ж самае, што завяршэнне сеансу: укладка можа захаваць стан свайго ўліковага запісу і проста адправіць наступны запыт праз нядаўна выбраную сетку, і гэта менавіта тая ўцечка, якую людзі заўважаюць потым.
Чаго пераключэнне не можа даць, дык гэта машыны, якая знаходзіцца ў абедзвюх сетках адначасова. Калі праграме патрэбны прыватны адрас з кожнага боку, ніякая дысцыпліна кліента гэтага не створыць.
Падзел па профілях
Кіраваны працоўны профіль — гэта асобны карыстальнік са сваімі праграмамі, сховішчам ключоў і сеткавай палітыкай. Працоўны кліент пошты можа выкарыстоўваць тунель арганізацыі, пакуль асабісты браўзер выкарыстоўвае асабісты, і абодва могуць быць падключаны адначасова, бо яны не ў адным кантэксце і не спаборнічаюць за слот.
Падзел — гэта таксама мяжа. Асабісты браўзер не пазычае працоўны тунель, не бачыць працоўныя суфіксы DNS і не дасягае працоўнай сеткі толькі таму, што абедзве службы паказваюцца падключанымі. Калі нехта паведамляе, што спасылка не адкрываецца, праверце, якая копія праграмы яе апрацавала і які профіль валодае гэтым уліковым запісам, перш чым кранаць любы з двух VPN.
Стаўцеся да мяжы як да нязменнай. Стварэнне другога профілю або выдаленне працоўнага профілю, каб абыйсці рашэнне працадаўцы аб маршрутызацыі, знішчае менавіта той падзел, які рабіў схему працаздольнай, а на кіраванай прыладзе гэта звычайна парушэнне палітыкі, а не змена налад.
Ланцуг, дзе парадак — гэта задума
Ланцуг — гэта схема, якую людзі звычайна маюць на ўвазе, калі кажуць абодва адначасова: тунель тэлефона ідзе ўнутры тунелю маршрутызатара. Гэта можа працаваць, і абмежаванні канкрэтныя. Знешні пастаўшчык павінен дазволіць працоўны шлях да канчатковага пункта VPN тэлефона, што для пратаколаў на базе UDP азначае, што знешняя служба не павінна блакаваць або абмяжоўваць гэты трафік.
Разумейце, хто што бачыць. Знешні пастаўшчык бачыць злучэнне да ўнутранага канчатковага пункта. Унутраны пастаўшчык атрымлівае трафік тэлефона з знешняга выхаду і перадае яго далей. Канчатковы адрасат звычайна бачыць выхад унутранай службы, і ніводзін пастаўшчык уздоўж ланцуга не сляпы; уліковыя запісы праграм па-ранейшаму ідэнтыфікуюць карыстальніка незалежна ад шляху.
Чакайце практычных выдаткаў. Кожны слой дадае інкапсуляцыю, таму эфектыўны MTU зніжаецца, і значэнне, якое было добрым для аднаго тунелю, цяпер фрагментуецца або застойваецца, пакуль MTU унутранага тунелю не будзе ўсталяваны асцярожна. Два слоі таксама азначаюць дзве залежнасці ад збояў і два наборы паведамленняў падтрымання сувязі, а ўнутраны тунель на базе TCP праз стратнае знешняе злучэнне можа застойвацца так, што выглядае як мёртвы сервер.
Самае важнае: ланцуг не аб'ядноўвае дзве прыватныя сеткі. Маршруты, перакрывальныя прэфіксы, развязанне DNS і правілы доступу застаюцца асобнымі рашэннямі, і маршрутызатар, які нясе адзін VPN, пакуль тэлефон нясе другі, не дае тэлефону абедзве адрасныя прасторы.
Праверце задуму, перш чым яе адладжваць
Запішыце схему адным сказам і праверце яе на праграме, якая не спрацавала. Паслядоўны доступ павінен паказваць адзін тунель за раз; падзел па профілях павінен паказваць кожную праграму ў сваім карыстальніку; ланцуг павінен паказваць, што ўнутраны тунель усталёўваецца праз знешні інтэрфейс, а не праз фізічны.
adb shell ip -br addr
adb shell ip route get 10.20.0.8
adb shell dumpsys connectivity | grep -i vpnКалі пошук маршруту называе фізічны інтэрфейс, а праграма чакае тунель, задума і кантэкст праграмы не ўзгадняюцца, і ніводная дадатковая праграма VPN іх не прымірыць. Дакументацыя пра кіраваныя профілі ахоплівае правілы падзелу, калі вам патрэбныя дэталі палітыкі, а не маршрутызацыі.