Çox fərqli iki iş proqram VPN-i adı altında birləşdirilir, və onlardan yalnız biri hər iki mobil platformada adi tətbiq üçün əlçatandır. Birincisi istifadəçinin artıq saxladığı profili işə salmaqdır; ikincisi öz prosesinizin içində tunel qurmaqdır. Android ikincisini VpnService vasitəsilə, iOS isə ikincisini Network Extension hüququ vasitəsilə verir, birincisi isə sistemdə, cihaz sahibində və ya MDM serverində qalır. Hansına həqiqətən ehtiyacınız olduğunu müəyyən etmək adətən layihəni kiçildir.

Eyni adı daşıyan iki iş

Saxlanmış profili aktivləşdirmək mövcud tunelə qalxmağı tapşırmaq deməkdir: host, etimad məlumatı, protokol, hamısı artıq istifadəçinin görə biləcəyi yerdə qurulub. Tunel qurmaq isə kodunuzun interfeysə, paket dövrünə və protokola sahib olması deməkdir. Məhsul siyahısında oxşar görünürlər və demək olar ki, heç bir tətbiq paylaşmırlar.

Heç bir mobil platform birincisini SDK tətbiqinə açmır. İstifadəçi heç nə etmədən görünən bağlantını zərərli proqramdan ayırmaq mümkün deyil, ona görə də hər iki sistem trafik daşıyan hər tətbiqin qarşısına razılıq qapısı qoyur.

Android: razılıq qapısı və profil API-si yoxdur

VpnService Android 4.0-dan bəri mövcuddur və tətbiqə tun interfeysi yaratmağa, sonra paketləri oxumağa və yazmağa imkan verir. Xidmət BIND_VPN_SERVICE ilə elan edilməlidir və VpnService.prepare() istifadəçidən icazə istəyən sistem dialoqunu yaradır. Platforma nümunəsi ToyVpn nəzərdə tutulan formanın ən aydın ifadəsidir: kodunuz interfeysə və ondan keçən hər şeyə sahibdir.

Etmədiyi şey sistemin VPN ayarları ekranına giriş əlavə etməkdir. Bunun üçün ictimai API yoxdur və Ayarlar tətbiqi öz profillərini adi tətbiqin çata bilmədiyi anbarda saxlayır. Adi tətbiqdən gizli siniflərə edilən çağırışlar sistemin heç vaxt siyahıya almadığı profillər yaradır, buna görə bir buraxılışda işləyən kod növbətidə səssizcə işləməyi dayandırır.

İdarəolunan yol ayrıdır. Cihaz sahibi və ya profil sahibi cihaz siyasəti API-ləri vasitəsilə həmişə aktiv VPN paketini təyin edə bilər və müəssisə aləti istifadəçinin sonra təsdiqlədiyi profili göndərə bilər. Bu cihaz idarəetmə səlahiyyətidir, tətbiqin quraşdırma zamanı istədiyi icazə deyil. Müştəriniz təşkilatdırsa, planlaşdırmalı olduğunuz yol budur; müştəriniz mağazadan quraşdıran bir şəxsdirsə, bu heç mövcud deyil.

iOS: sərhəd hüquqdur

iOS eyni işi başqa cür bölür. VPN klienti Network Extension çərçivəsi altında paket tuneli provayderi və ya tətbiq proksisi tətbiq edir və uyğun hüquq developer hesabına verilməlidir. NEVPNManager vasitəsilə şəxsi VPN konfiqurasiyası daha sadə hal üçün mövcuddur və o da eyni icazə modeli içində işləyir. Apple bütün səthi Network Extension sənədlərində təsvir edir və işin əhatəsini müəyyən etməzdən əvvəl onu oxumağa dəyər.

VPN ayarları ekranını açmaq, istifadəçinin saxladığı konfiqurasiyaları oxumaq və ya onlardan birini başlatmaq üçün dəstəklənən yol yoxdur. Klientin edə biləcəyi şey istifadəçinin quraşdıracağı konfiqurasiya profili göndərmək və sonra yaranan tuneli adi şəbəkə çağırışları ilə istifadə etməkdir. Hər tətbiq üçün tunel MDM serveri tərəfindən tələb əsaslı qayda ilə təyin edilir, tətbiq tərəfindən işləmə zamanı seçilmir.

Böyük təchizatçının VPN klienti hesabınızın eyni şeyi göndərə biləcəyinə dəlil deyil. Bu hüquqlar hər developer hesabı üçün istənilir və nəzərdən keçirilir, ona görə cədvəl riski sprint planınızda deyil, Apple-dadır.

Masaüstü daha uzağa çatır, amma sahiblik dəyişmir

Windows icazəli haldır. Add-VpnConnection yüksəldilmiş PowerShell sessiyasından telefon kitabçası girişi yaradır və rasdial onu skriptdən qoşur və ya ayırır. Tətbiq həmçinin sənədləşdirilmiş əmr sətri vasitəsilə təchizatçı klientini idarə edə bilər. Profili yaratmaq hələ də inzibati əməliyyatdır, çünki giriş maşın miqyaslı anbarda yaşayır.

macOS fərqli alətlərlə eyni cür davranır. scutil --nc start və stop artıq mövcud olan xidmətlər üzərində işləyir, birini yaratmaq isə sistem inzibatçılığı tapşırığıdır. Noutbukda prosesə sahib olmaq sizi konfiqurasiyanın sahibi etmir.

Əvəzində nə qurmalı

Əgər əsl tələb tətbiqinizin daxili API-yə çatmasıdırsa, istifadəçinin artıq işlətdiyi tunel kifayətdir. Adi HTTPS sorğuları göndərin, yolu sistem seçsin və tuneli idarə etməyə çalışmağı dayandırın. Tələb yalnız tətbiqinizin trafikinin tuneldən istifadə etməsidirsə, idarəetmə kanalı vasitəsilə hər tətbiq üçün VPN istəyin və ya TLS-i tətbiqin içində onsuz əlçatan olan xidmətə qarşı sonlandırın.

Gizli API-lər almağa dəyər qısa yol deyil. Onlar buraxılışlar arasında dəyişir, tətbiq yoxlamasında uğursuz olur və yaratdıqları nasazlıqlar kodu miras alan üçün adi şəbəkə nasazlığı kimi görünür. Müqayisə Android ilə iOS arasında deyil; tunelə sahib olmaqla platformadan trafiki yönləndirməsini istəmək arasındadır və yalnız birincisi sizin qurmalı olduğunuzdur.

Əlaqəli məqalələr