एक उत्पादन प्रबन्धकले कम्पनीको VPN अन गर्ने बटन माग्छन्, र अनुरोध तुच्छ सुनिन्छ। iOS मा यो सानो सुविधा होइन; यो सार्वजनिक सम्झौताबाहिर छ, र हरेक बाटो या त समीक्षामा असफल हुन्छ या अर्को रिलिजमा टुट्छ। अनुरोधलाई प्लेटफर्मले साँच्चै अनुमति दिने कुराबाट लैजानुहोस्, र डिजाइन धेरैजसो आफै लेखिन्छ। एपले VPN कन्फिगरेसन राख्न र सुरु गर्न सक्छ। एपले सिस्टम स्विचसम्म पुग्न सक्दैन, आफैले नबनाएको प्रोफाइलको अवस्था पढ्न सक्दैन, र प्रयोगकर्तालाई उसको इच्छाविरुद्ध जोडिएको राख्न सक्दैन।

प्रयोगकर्ताले भन्न खोजेका तीन कुराबाट सुरु गर्नुहोस्

API अलग गर्नुअघि अर्थ अलग गर्नुहोस्। कहिले प्रयोगकर्ता तपाईंको एपको टनेल जोडिएको चाहन्छ, कहिले अरू कसैले इन्स्टल गरेको प्रोफाइलका लागि सेटिङ्सको स्विच अन गर्न चाहन्छ, र कहिले टनेलबिना फोनमा ब्राउज गर्न नसकियोस् भन्ने चाहन्छ। यी तीन फरक संयन्त्रसँग मेल खान्छन्, र साधारण एपका लागि पहिलो मात्र खुला छ।

दोस्रो अर्थले नै Stack Overflow का प्रश्नहरू जन्माउँछ, र यसको कुनै समर्थित उत्तर छैन। सेटिङ्सको टगल प्रयोगकर्ताको हो, र व्यवस्थापित यन्त्रहरूमा प्रोफाइलको। कुनै सार्वजनिक API ले VPN कन्फिगरेसनहरू सूचीबद्ध गर्दैन, सिस्टम टनेल अन छ कि भनी जानकारी दिँदैन, वा त्यसलाई बदल्दैन।

एपले साँच्चै के बनाउन सक्छ

NetworkExtension ले एपलाई NEVPNManager मार्फत आफ्नै कन्फिगरेसन दिन्छ। Personal VPN अधिकार र प्रयोगकर्ताको सहमतिसँग, एपले सेटिङ्समा आफ्नै नाममा देखिने कन्फिगरेसन सुरक्षित गर्छ, र त्यो एउटै जडान सुरु वा रोक्न सक्छ। यो वास्तविक, समीक्षायोग्य क्षमता हो, र यही सम्पूर्ण दायरा हो: प्रबन्धकले आफैले बनाएको मात्र पढ्छ र लेख्छ।

अधिकार स्वचालित होइन। तपाईं यो Apple सँग माग्नुहुन्छ र एपलाई टनेल किन चाहिन्छ भनी औचित्य दिनुहुन्छ, र जसको एकमात्र लक्ष्य अरूको प्रोफाइल अन गर्नु हो त्यस्तो ग्राहकसँग राम्रो उत्तर हुँदैन। प्याकेट टनेल प्रदायकहरूले त्यही नियम फरक कक्षसँग पछ्याउँछन्: NETunnelProviderManager एपले आफै इन्स्टल गरेका प्रदायक-आधारित कन्फिगरेसनहरू राख्छ। दुवैमध्ये कुनै पनि बाटो MDM ले दिएको प्रोफाइलसम्म पुग्दैन।

सहमति सुरक्षित गर्ने समयमा पनि लागू हुन्छ। कन्फिगरेसन लेख्दा प्रयोगकर्तालाई सोधिन्छ, र यो प्रश्न सुविधाका लागि एपले दबाउन सक्ने कुरा होइन।

अवस्था पढ्नु पनि त्यही पर्खालमा ठोकिन्छ

स्थिति नियन्त्रणभन्दा मैत्रीपूर्ण देखिन्छ र उत्तिकै बन्द छ। NEVPNStatus एपको आफ्नै कन्फिगरेसनका लागि अवैध, विच्छेदित, जोडिँदै, जोडिएको, पुनः पुष्टि गर्दै वा विच्छेद गर्दै भनी जानकारी दिन्छ, र हरेक परिवर्तनमा सूचना निस्कन्छ। यसले व्यवस्थापन प्रोफाइलले इन्स्टल गरेको टनेलबारे केही भन्दैन, र हेल्प डेस्कले साँच्चै देख्न चाहने अवस्था त्यही हो।

नेटवर्क मार्ग अनुगमन र इन्टरफेस परिवर्तनहरू डिजाइन समीक्षामा विकल्पका रूपमा प्रस्ताव गरिन्छ। तिनीहरूले एपको ट्राफिक जाने मार्ग वर्णन गर्छन्, जो VPN अवस्थासँग असम्बन्धित कारणले बदलिन्छ, र तिनीहरूलाई VPN रिडआउटका रूपमा प्रयोग गर्दा दुवै दिशामा झुट बोल्ने UI दिन्छ।

On Demand र Always On नै वास्तविक लिभर हुन्

समर्थित लिभरहरू एपमा होइन, प्रोफाइलमा बस्छन्। On Demand नियमहरूले सिस्टमलाई कहिले जोडिने भनी बताउँछन्: कार्यहरूसहितका सर्तहरूको क्रमबद्ध सूची, जसको मूल्याङ्कन तपाईंको कोडले होइन, अपरेटिङ सिस्टमले गर्छ। कुनै पनि इन्टरफेसमा जोडिने नियमले कुनै एपलाई नियन्त्रण नदिई सधैं-जोडिएको अनुभूति सिर्जना गर्छ।

Always On VPN कार्यान्वयनको संयन्त्र हो, र यो निगरानीसँग बाँधिएको छ। निगरानीमा रहेको यन्त्रमा MDM ले टनेल अन राख्ने प्रोफाइल इन्स्टल गर्छ; निगरानी नभएको व्यक्तिगत फोनमा तीही कुञ्जीहरूले त्यही व्यवहार दिँदैनन्। त्यो असमानता जानाजानको हो, र पेलोड कुञ्जीहरूको कुनै पनि संयोजनले त्यो हटाउँदैन। जब आवश्यकता साँच्चै VPN अन हुनुपर्ने हो, तब आवश्यकता वास्तवमा यन्त्र व्यवस्थापित हुनुपर्ने हो।

दुईबीच कमजोर भतिजा बस्छ: प्रयोगकर्ताले विच्छेद गरेपछि फेरि जोडिने नियम। नियमको अर्को पटक मूल्याङ्कन हुँदा यो फेरि जोडिन्छ, जो तुरुन्तै हुनुसरह होइन, र जानाजान विच्छेद गर्ने प्रयोगकर्ताले फरक महसुस गर्नेछ। ताल्चा दिने वाचा गर्नुको सट्टा त्यही खाली ठाउँको वरिपरि इन्टरफेस डिजाइन गर्नुहोस्।

समर्थित मार्ग पठाउनुहोस्

कुनै पनि कोड हुनुअघि चार प्रश्नले संयन्त्र तय गर्छन्: यन्त्र कसको हो, यो निगरानीमा छ कि छैन, कुन क्लाइन्टले टनेल अन्त्य गर्छ, र प्रोफाइल कहाँबाट आउँछ। यीमध्ये केही अज्ञात भए, सुविधा अनुरोध अनुमानका लागि तयार छैन।

सिस्टम VPN मा हात हाल्ने निजी API डेमो पास गर्छ र समीक्षामा असफल हुन्छ, र अर्को बाटोबाट पठाइयो भने अर्को iOS रिलिजमा टुट्छ। एउटा स्विचका लागि त्यो साटासाटको कुनै पनि संस्करण योग्य छैन।

व्यवस्थापन टेलिमेट्री छुट्टै च्यानल हो: यसले प्रोफाइल इन्स्टल छ र यन्त्र अनुरूप छ कि छैन भनी जानकारी दिन्छ, जो प्रतिवेदन हो, प्रति-एप नियन्त्रण सतह होइन। हरेक अपडेटपछि वास्तविक यन्त्रमा प्रवाह परीक्षण गर्नुहोस्, किनभने समर्थित व्यवहार OS मा बस्छ र OS चल्छ।

सम्बन्धित लेखहरू