iPhone VPN-dədir? iOS tətbiqi əslində nə görə bilər
iOS SDK-da vahid VPN bayrağı yoxdur. Tətbiq yalnız öz konfiqurasiyasını, status bildirişini və məhdud proxy görüntüsünü müşahidə edə bilər, başqa heç nə.
Bir iOS tətbiqindən telefonun VPN-də olub-olmadığını soruşun — dürüst cavab budur ki, o, sizin nəzərdə tutduğunuz şəkildə bunu bilə bilməz. SDK «cihaz tuneldən keçir» üçün heç bir bayraq təqdim etmir və buna yaxınlaşa biləcək özəl interfeyslər buraxılan tətbiqlər üçün bağlıdır. Siz öz tətbiqinizin konfiqurasiyasını, ona bağlı vəziyyəti və şəbəkə yığınından bir-iki dolayı işarəni müşahidə edə bilərsiniz. Hər biri fərqli suala cavab verir və pozulmuş yoxlamaların çoxu onlardan birini bütün cavab kimi qəbul etməkdən gəlir.
Tək VPN bayrağı mifi
İnanc budur ki, SDK-nın haradasa cihazın tuneldən keçib-keçmədiyini bildirən bir xassəsi var — necə ki əlçatanlıq bayrağı hostun cavab verib-vermədiyini bildirir. Belə ictimai xassə mövcud deyil. Mövcud olsaydı belə, «tunel var» və «mənim trafikim ondan istifadə edir» fərqli iddialardır və əksər tətbiqlər üçün yalnız ikincisi vacibdir.
Bu boşluq birtərəfli VPN aşkarlayıcısı reklam edən kitabxanaların kövrək bir şey oxumasının səbəbidir — interfeys adı və ya proxy açarı kimi — və onu hökm kimi təqdim etməsidir.
Nil dəyərinə güvənməzdən əvvəl üstünlükləri yükləyin
Paylaşılan menecer nüsxəsi onu istədiyiniz anda mövcud olur, lakin onun protokol xassəsi yükləmə geri çağırışı tamamlanana qədər nil olaraq qalır. Beləliklə, nil protokol ən azı «hələ yüklənməyib» demək olduğu qədər «quraşdırılmayıb» deməkdir. Oxumanı tamamlama blokunun içində edin və yalnız sonra qərar verin: mövcud olan və aktivləşdirmə bayrağı açıq olan protokol obyekti «quraşdırılıb» kimi görünən şeydir.
İkinci siqnal əlaqə obyektindədir: etibarsız vəziyyət, hansı ki sistem bu tətbiqin heç bir konfiqurasiyası quraşdırılmadıqda bildirir. Tamamlanmış yükləmədən sonra etibarsız status və nil protokol birlikdə əsl yoxluqdur, zamanlama yarışı deyil.
Əlaqə dəyişiklikləri bildiriş kimi gəlir
load və save-ə ötürülən işləyicilər konfiqurasiyaya nə olduğunu bildirir, tunelin nə etdiyini deyil. Qoşulma anında onlardan birinin işə düşməsini gözləmək heç vaxt həll olunmayan yarışdır. Bunun əvəzinə status dəyişikliyi bildirişini izləyin və gəldiyi zaman əlaqə obyektinin cari dəyərini oxuyun.
Konfiqurasiya quraşdırıldıqdan sonra əlaqə vəziyyəti qısa ardıcıllıqla keçir: əlaqəsiz, qoşulur, qoşulub, yenidən təsdiqlənir, əlaqə kəsilir. «Qoşulub» tuneli təsvir edir, arxasındakı serveri deyil, buna görə trafikin axdığına dəlil deyil. On-demand həmçinin tətbiq dayandırılmış vəziyyətdə tuneli qaldıra bilər və o zaman bildiriş yeniləyəcək bir şeyiniz olmadan gəlir.
Məhdud proxy görüntüsü işarədir, hökm deyil
CFNetwork tətbiqə cari sistem proxy ayarlarını verə bilər və bu nəticənin içində interfeys adı ilə açarlanmış məhdud lüğət var. tun, utun, ppp, ipsec və ya tap ilə başlayan ad görmək tunelin mövcud olduğuna işarədir. Bu, tətbiqin görə bildiyinin görüntüsü olaraq qalır, paketlərin hara getdiyi barədə bəyanat deyil.
Provayderlər adlandırma ilə bağlı razılaşmır, buna görə itkin prefiks heç nə sübut etmir və mövcud interfeys heç bir trafik daşımadan da ola bilər. Əlçatanlıq daha zəifdir: özəl ünvana uğurlu sorğu yolun həmin an həmin sorğu üçün işlədiyini göstərir, VPN-in quraşdırıldığını deyil.
Simulyator Mac-dən borc alır, digər tətbiqlər isə görünməz qalır
Simulyatorun öz şəbəkə yığını yoxdur; etdiyi hər əlaqə Mac-ındır. Beləliklə, host Mac-da işləyən VPN simulyasiya olunan tətbiq üçün artıq qüvvədədir və simulyatorun öz ayarları heç nə göstərmir. Tunel simulyator işə düşdükdən sonra qalxıbsa, onu yenidən başlatmaq adətən tətbiqi sazlamaqdan sürətlidir. Qeyri-standart portda olan host həmin portu URL-də tələb edir və ya socat TCP-LISTEN:12345,fork TCP:host:12345 kimi yerli yönləndirmə tələb edir.
İctimai API-lər başqa tətbiqlərə və ya konfiqurasiya profillərinə aid VPN profillərini sadalamır. Bir tanınmış tətbiq üçün canOpenURL vasitəsilə URL sxemi yoxlaması portativ hiylədir və iOS 9-dan bəri sorğulanan sxem Info.plist faylınızda bəyan edilməlidir; onu buraxsaq, çağırış false qaytarır. OpenVPN Connect openvpn:// üzərində cavab verir, bu yaxşı nümunə və zəif ümumi aşkarlayıcıdır.
Üç müşahidəni birləşdirin və nə demək olduğunu deyin
Praktikada üç nəticəni üst-üstə yığın: yüklənmiş və aktivləşdirilmiş konfiqurasiya, etibarsız olmayan əlaqə vəziyyəti və yalnız tuneldən əlçatan ünvana sorğu. Onlardan hər biri tək başına yanıldır; birlikdə isə istifadəçinin güman etdiyini deyil, tətbiqin bilə bildiyini ifadə edir.
Nəticəni diaqnostikada bir boolean kimi deyil, üç sətir kimi yazın. İstifadəçi VPN-in söndürüldüyünü deyəndə, tətbiqiniz isə razılaşmırsa, üç sətir hansı müşahidənin ayrıldığını göstərir və bu, üzərində işləyə biləcəyiniz dəstək bileti ilə «məndə işləyir» ilə bitən bilet arasındakı fərqdir.