Эки такыр башка иш программалык VPN деген аттын астына биригет, жана алардын бирөө гана эки мобилдик платформанын кайсынысында болбосун жөнөкөй колдонмого жеткиликтүү. Биринчиси — колдонуучу мурун сактаган профилди күйгүзүү; экинчиси — өз процессиңиздин ичинде туннель куруу. Android экинчисин VpnService аркылуу берет, ал эми iOS экинчисин Network Extension укугу аркылуу берет, биринчиси болсо системада, түзмөктүн ээсинде же MDM серверинде калат. Сизге чындыгында кайсынысы керек экенин аныктоо адатта долбоорду кичине кылат.

Бир атты бөлүшкөн эки иш

Сакталган профилди активдештирүү — бар туннелге көтөрүлүүнү айтуу: хост, каттоо маалыматтары, протокол, баары колдонуучу көрө турган жерде конфигурацияланган. Туннель куруу — сиздин код интерфейсти, пакеттер циклин жана протоколду ээлейт. Продукт тизмесинде алар окшош көрүнөт жана дээрлик эч кандай ишке ашырууну бөлүшпөйт.

Эки мобилдик платформанын бири да биринчисин SDK колдонмосуна ачпайт. Колдонуучу эч нерсе кылбаса да пайда болгон байланышты зыяндуу программадан ажыратуу мүмкүн эмес, ошондуктан эки система тең трафик ташыган ар кандай колдонмонун алдына макулдук дарбазасын коёт.

Android: макулдук дарбазасы жана профиль API жок

VpnService Android 4.0дон бери бар жана колдонмого tun интерфейсин түзүүгө, анан пакеттерди окууга жана жазууга мүмкүндүк берет. Кызмат BIND_VPN_SERVICE менен жарыяланышы керек, ал эми VpnService.prepare() колдонуучудан уруксат сураган система диалогун түзөт. Платформанын үлгүсү ToyVpn — көздөлгөн форманын эң айкын билдирүүсү: сиздин код интерфейсти жана андан өткөн бардык нерсени ээлейт.

Ал кылбаганы — системанын VPN жөндөөлөрү экранына жазуу кошуу. Ага ачык API жок, ал эми Жөндөөлөр колдонмосу өз профилдерин жөнөкөй колдонмо жете албаган кампада сактайт. Жөнөкөй колдонмодон жашыруун класстарга чакыруулар система эч качан тизмелебеген профилдерди түзөт, ошондуктан бир курууда иштегендей көрүнгөн код кийинкисинде үнсүз иштебей калат.

Башкарылуучу жол өзүнчө. Түзмөктүн же профилдин ээси түзмөк саясатынын APIлери аркылуу дайыма күйүк VPN пакетин дайындай алат, ал эми ишкана куралы колдонуучу кийин макулдаган профилди жибере алат. Бул түзмөктү башкаруу ыйгарым укугу, колдонмо орнотуу учурунда сураган уруксат эмес. Эгер кардарыңыз уюм болсо, пландаштырууга тийиш жол — ушул; эгер кардарыңыз дүкөндөн орноткон адам болсо, ал такыр жеткиликсиз.

iOS: укук — чек

iOS ошол эле ишти башкача бөлөт. VPN кардары Network Extension алкагында пакеттик туннель провайдерин же колдонмо проксисин ишке ашырат, жана тиешелүү укук иштеп чыгуучунун эсебине берилиши керек. NEVPNManager аркылуу жеке VPN конфигурациясы жөнөкөйүрөөк учур үчүн бар жана ал ошол эле уруксат моделинин ичинде иштейт. Apple бүт бетини Network Extension маалымдамасында документтейт, аны иштин көлөмүн аныктаардан мурун окуган жөн.

VPN жөндөөлөрү экранын ачуу, колдонуучунун сакталган конфигурацияларын окуу же алардын бирин баштоо үчүн колдоого алынган жол жок. Кардар кыла ала турганы — колдонуучу орното турган конфигурация профилин жиберүү, анан пайда болгон туннелди кадимки тармактык чакыруулар аркылуу колдонуу. Ар бир колдонмого туннелди MDM сервери суроо боюнча эреже менен дайындайт, аткаруу убагында колдонмо тандабайт.

Ири жеткирүүчүнүн VPN кардары сиздин эсебиңиз ошону жибере аларынын далили эмес. Бул укуктар ар бир иштеп чыгуучунун эсеби үчүн суралып, каралат, ошондуктан графиктин тобокелдиги Apple'де, сиздин спринт планыңызда эмес.

Десктоп алысыраак жетет, бирок ээлик өзгөрбөйт

Windows — уруксат берүүчү учур. Add-VpnConnection көтөрүлгөн PowerShell сессиясынан телефон китепчесинин жазуусун түзөт, ал эми rasdial аны скрипттен туташтырат же ажыратат. Колдонмо жеткирүүчүнүн кардарын анын документтелген буйрук сабы аркылуу да башкара алат. Профиль түзүү дагы эле административдик аракет, анткени жазуу бүт машина кампасында жашайт.

macOS башка куралдар менен ошондой жүрүм-турум көрсөтөт. scutil --nc start жана stop мурунтан бар кызматтарда иштейт, ал эми бирөөнү түзүү — системалык администрациялоо милдети. Ноутбукта процессти ээлөө сизди конфигурациянын ээси кылбайт.

Анын ордуна эмнени куруу керек

Эгер чыныгы талап колдонмоңуз ички API'ге жетүү болсо, колдонуучу мурунтан иштетип жаткан туннель жетиштүү. Кадимки HTTPS суроолорун жибериңиз, жолду система тандасын, жана туннелди башкарууга аракет кылууну токтотуңуз. Эгер талап колдонмоңуздун трафиги гана туннелди колдонушу болсо, башкаруу каналы аркылуу ар бир колдонмого VPN сураңыз, же колдонмонун ичинде ансыз жеткиликтүү кызматка каршы TLS'ти бүтүрүңүз.

Жашыруун API'лер — алууга татыктуу кыска жол эмес. Алар чыгарылыштардын ортосунда өзгөрөт, колдонмо текшерүүсүндө ийгиликсиз болот, жана алар жараткан бузулуулар кодду мурастаган адамга кадимки тармактык бузулуулардай көрүнөт. Салыштыруу Android менен iOS'тун ортосунда эмес; бул — туннелди ээлөө платформадан трафикти багыттоону суроого каршы, жана биринчисин гана сиз курушуңуз керек.

Тектеш макалалар