iOS tətbiqi daxilində VPN ekranı qurun və ilk təəccüb odur ki, Ayarlar tətbiqindəki protokol siyahısı API siyahısı deyil. Network Extension çərçivəsi tətbiqinizə həmin tətbiqə məxsus bir şəxsi VPN konfiqurasiyası yaratmağa imkan verir və o, yalnız bir neçə protokol obyektini qəbul edir. İnsanların gözlədiyi hər şey, L2TP-dən yüklənmiş profilə qədər, bu səthin xaricindədir və ya Apple-a məxsusdur. Sonrakı uğursuzluqlar adətən səhv deyil, API-nin heç vaxt verilmədiyi işi rədd etməsidir.

Mif: API Ayarlar redaktoru deyil

İnanış budur ki, iOS IKEv1, IKEv2, L2TP və IPsec profillərini konfiqurasiya edə bildiyi üçün tətbiq onların hər birini proqram yolu ilə yarada bilər. Bu doğru deyil. Çərçivə çağıran tətbiqə dəqiq bir konfiqurasiya yuvası təqdim edir və həmin yuva yalnız kiçik bir açıq protokol sinfi dəsti qəbul edir. İnsanların gözlədiyi hər şey, L2TP-dən yüklənmiş profilə qədər, bu səthin xaricindədir və ya Apple-a məxsusdur.

Sonrakı uğursuzluqlar adətən səhv deyil. Onlar API-nin heç vaxt verilmədiyi işi rədd etməsidir və həll ekranı API-nin sahib olduğu şeylərin ətrafında dizayn etməkdir.

Üç protokol obyekti və mövcud olmayanlar

Seçimləriniz NEVPNProtocolIPSec vasitəsilə IKEv1, NEVPNProtocolIKEv2 vasitəsilə IKEv2 və öz paket tunel genişləndirmənizi göndərirsinizsə NETunnelProviderProtocol-dir. NEVPNManager sənədləşməsi qəbul edilən protokol obyektlərini sadalayır. L2TP və PPTP heç vaxt bu siyahıda görünmür, çünki Apple onlar üçün heç bir sinif yayımlamayıb. Onlardan birini sınamaq yadda saxlama zamanı xəta ilə, ya da daha pisi, sistemin sakitcə istifadə etməkdən imtina etdiyi konfiqurasiya ilə bitir.

Masaüstü kodu fərqli qaydalara tabedir. macOS-da SCNetworkInterfaceCreateWithInterface IPv4 üzərindən L2TP kimi interfeys tipini qatlayır və onu şəbəkə xidmətinə bağlayır, networksetup -connectpppoeservice isə nəticəni başladır. Administrator hüquqları və köməkçi alət tələb olunur, çünki ortaq sirr və parol sistem açar qutusuna düşür. Bu dizaynı iOS-a köçürün və heç nə kompilyasiya olunmur.

Parolu deyil, açar qutusu istinadını ötürün

IKE siniflərindən heç biri parolu mətn kimi qəbul etmir. passwordReference və sharedSecretReference xassələri davamlı açar qutusu istinadı istəyir və siz onu SecItemCopyMatching-dən kSecReturnPersistentRef istəməklə alırsınız. Element məlumatını ötürmək və ya sətri sahəyə zorla yazmaq yadda saxlama uğursuzluğu və ya boş etimadnaməli bağlantı yaradır. İstinad yalnız arxasındakı açar qutusu elementi qədər davamlıdır, buna görə element konfiqurasiya yığılmazdan əvvəl mövcud olmalıdır. Onu yadda saxlama ilə eyni tranzaksiyada yaradın və sıralama səhvlərinin bütün bir sinfini aradan qaldırın.

Sertifikat autentifikasiyası fərqli yol tutur: PKCS#12 blobu üçün identityData üstəgəl identityDataPassword. Həmin blobu tətbiq paketinin içində göndərmək nümunə kodundan gələn vərdişdir, buraxılış qərarı deyil, çünki parol onunla birlikdə gedir və tətbiqin hər nüsxəsi eyni kimliyi daşıyır.

Hüquq və mövcudluq hər şeyi şərtləndirir

Menecer ümumiyyətlə mövcud olmaya bilər və səbəb təminatdır. Tətbiq identifikatorunuz şəxsi VPN hüququ ilə birlikdə Network Extension imkanına ehtiyac duyur və build-i imzalayan profil hər ikisini daşımalıdır.

Bunu atlayın və paylaşılan nüsxə nil qaytarır, ya da yadda saxlama heç vaxt hüquqdan bəhs etməyən xəta ilə uğursuz olur. Mövcudluq digər keçiddir. iOS 8-dən köhnə hər hansı hədəf seçin və simvol icra zamanı itir, beləliklə uğursuzluq konfiqurasiyasız menecer deyil, çökmə və ya nil menecerdir. Obyekt qrafikinizi sazlamazdan əvvəl icra mühitini və hüququ yoxlayın.

Yüklə, dəyiş, yadda saxla və sonra tələb üzrə sıranı izlə

Həyat dövrünü yüklə, dəyiş, yadda saxla kimi qəbul edin və yükləməni heç vaxt atlamayın. loadFromPreferences tamamlanana qədər menecer heç nə saxlamır və protokol obyekti oxuna və ya dəyişdirilə bilməz.

İkinci yadda saxlama başqa birini əlavə etmək əvəzinə konfiqurasiyanı əvəz edir, buna görə yarımçıq yadda saxlama işləyən profili zədələyə bilər. Tələb üzrə qaydalar sıralanmış massiv təşkil edir və bu sıra siyasətdir. Hər yerdən qoşulma qaydasını ayırma qaydasından əvvəl qoyun və əl ilə ayırma dərhal yenidən qoşulma ilə izlənir, bu qüsur kimi görünür amma sənədləşdirilmiş qiymətləndirməyə uyğundur.

İstifadəçi hərəkəti qalib gəlməlidirsə, ayırma qaydasını önə çıxarın. Tətbiqin nəzarətindən kənarda qalanlar da eyni dərəcədə vacibdir. Marşrutlar sizin təyin etdiyiniz üstünlükdən deyil, tuneldən və ya server siyasətindən gəlir və paket tunel provayderi başlayanda onları bildirir. Tətbiq digər tətbiqlər və ya konfiqurasiya profilləri tərəfindən quraşdırılmış profilləri sadalaya və ya redaktə edə bilməz, ona görə cihazdakı hər VPN-i göstərən ekran vəd etməyin.

Əlaqəli məqalələr