Екі мүлдем басқа жұмыс бағдарламалық 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 арасында емес; бұл — туннельді иелену платформадан трафикті бағыттауды сұрауға қарсы, және тек біріншісін сіз құруға тиіссіз.

Қатысты мақалалар