प्राधान्ये लोड होईपर्यंत NEVPNManager स्थिती अवैध आहे
loadFromPreferences पूर्ण होण्यापूर्वी स्थिती वाचणे किंवा जतन करणे जुने किंवा अयशस्वी निकाल देते। लोड क्रम, कीचेन संदर्भ आणि प्रवेश गट हे ठरवतात।
ॲप पुन्हा सुरू करा, मॅनेजरला कनेक्शन स्थिती विचारा, आणि सिस्टम मेनू स्पष्टपणे सक्रिय टनेल दाखवत असताना तो डिस्कनेक्टेड सांगतो। किंवा सेव्ह कॉल असे त्रुटी परत करतो जे काहीही स्पष्ट करत नाही, किंवा सामायिक गुप्तता नेमून दिल्यानंतर काही सेकंदातच ती गहाळ घोषित केली जाते। तीन लक्षणे, एक यंत्रणा: मॅनेजर सिस्टम स्टोअरवरील दृश्य आहे, आणि दृश्य कोणी लोड करेपर्यंत रिकामे वाचले जाते।
यापैकी काहीही डीबग करण्यापूर्वी तुम्ही कोणते API वापरावे ते ठरवा। सिस्टमचे IPsec किंवा IKEv2 टनेल अंगभूत मॅनेजरला योग्य आहे; सिस्टम अंमलात न आणणाऱ्या प्रोटोकॉलसाठी तुमच्या स्वतःच्या पॅकेट हाताळणीसह टनेल प्रदाता लागतो, आणि फील्डचे कोणतेही संयोजन हे बदलत नाही।
मॅनेजर स्टोअरवरील दृश्य आहे
मॅनेजर तयार करा किंवा मिळवा, त्याला त्याची प्राधान्ये लोड करायला सांगा, आणि स्थिती वाचण्यापूर्वी किंवा प्रोटोकॉल सेटिंग्ज बदलण्यापूर्वी पूर्णता हँडलर पूर्ण होऊ द्या। कार्य जतन केलेल्या कॉन्फिगरेशनची गणना करणे असेल तर एकच इन्स्टन्स दोन उद्देशांसाठी पुनर्वापर करण्याऐवजी सर्व प्रकारांचा कॉल वापरा। लोड येण्यापूर्वी स्थिती सामान्यतः अवैध असते, आणि अवैधला बंद मानणे हीच ती बग आहे ज्यामुळे ॲप पुन्हा सुरू केल्यानंतरच चुकीचे दिसते।
लेखनही तोच क्रम अनुसरते। ज्या मॅनेजरने कधीही काही लोड केले नाही त्यावर जतन करण्याचा प्रयत्न उपयुक्त संदेशाशिवाय अयशस्वी होऊ शकतो, कारण बदल लागू करण्यासाठी कोणतीही जतन केलेली ओळख नाही। लोड करा, बदला, जतन करा, नंतर स्थिती पुन्हा वाचा। सिस्टम ज्या ऑब्जेक्टशी जोडते ती जतन केलेली प्रोफाइल आहे, मेमरीत तुम्ही संपादित करत असलेली नाही।
स्थिती बदल तुम्ही पाहत असतानाच येतात
प्राधान्ये लोड झाल्यावर स्थिती डिस्कनेक्टेड, कनेक्ट होत आहे, कनेक्टेड, पुन्हा पुष्टी आणि डिस्कनेक्ट होत आहे यातून जाते। इंटरफेस एका वाचनाने सुरू करा, नंतर टाइमरवर पोलिंग करण्याऐवजी बदलाची सूचना ऐका। पोलिंग अग्रभागी काम करते आणि पार्श्वभूमीवर खोटे बोलते, आणि अशा प्रकारे ॲप्समध्ये कधीही न सुटणारा स्पिनर राहतो।
सूचना फक्त ॲप अग्रभागी असताना येतात। पार्श्वभूमीवर स्थिती ठेवणारी कोणतीही गोष्ट पुन्हा सुरू केल्यावर जुनी दिसेल, म्हणून सुरू करताना आणि ॲप पुन्हा अग्रभागी आल्यावर रीफ्रेश करा। जर टनेल प्रदात्याच्या मालकीचे असेल, तर ते संबंधित सत्र ऑब्जेक्टद्वारे चालवा; साधा कनेक्शन गुणधर्म प्रदात्याचे जीवनचक्र मॉडेल करत नाही।
गुप्तता संदर्भ आहेत, स्ट्रिंग नाहीत
सामायिक गुप्तता गहाळ असल्याचा अहवाल म्हणजे कोणीही ती नेमली नाही असे अभिप्रेत असणे दुर्मिळ आहे। प्रोटोकॉल ऑब्जेक्टला संदर्भ हवा: एक वापरकर्ता पासवर्डसाठी आणि एक IPsec पूर्व-सामायिक कीसाठी। nil देणे, किंवा चुकीच्या कीचेन नोंदीवरून काढलेला संदर्भ देणे, रिकाम्या स्लॉटसारखीच तक्रार देते। त्रुटी लक्षणाचे नाव घेते आणि कारण लपवते, म्हणून लोक तीच गुप्तता अनेक वेळा पुन्हा टाकतात।
प्रथम गुप्तता सामान्य पासवर्ड आयटम म्हणून लिहा, नंतर तिच्याकडे टिकाऊ संदर्भ परत वाचा। टिकाऊ संदर्भ मेमरीतील पॉइंटरच्या विपरीत पुन्हा सुरू केल्यावरही टिकतो, आणि प्रोफाइल जे सिरियलाइज करते ते तेच आहे। असे ऍक्सेसिबिलिटी वर्ग निवडा जे डिव्हाइस अनलॉक झाल्यावरही प्रवेश देतो, नाहीतर लॉक स्क्रीनवर पुन्हा जोडणे आवश्यक असलेले टनेल पूर्णपणे वैध गुप्ततेसहही प्रमाणीकरणात अयशस्वी होईल।
एक्स्टेंशनचे स्वतःचे कीचेन दृश्य आहे
नेटवर्क एक्स्टेंशन स्वतंत्र प्रक्रिया आहे, म्हणून ॲपचा डीफॉल्ट कीचेन प्रवेश तिथवर पोहोचत नाही। दोन्ही लक्ष्यांना त्यांच्या अधिकारांमध्ये तोच कीचेन प्रवेश गट द्या, आयटम एकदा त्या गटात जतन करा, आणि प्रत्येक प्रक्रियेला तो वाचू द्या। गटाशिवाय एक्स्टेंशनला काहीच सापडत नाही आणि ॲप पुनरुत्पादित करू शकत नाही अशी क्रेडेन्शियल अयशस्वीता कळवते।
जर प्रदाता त्याच्या प्रदाता कॉन्फिगरेशन ऑब्जेक्टद्वारे कॉन्फिगर होत असेल, तर गुप्तता ॲपमध्येही एम्बेड करू नका। दोन प्रती वेगळ्या होतात, आणि ते अंतर डुप्लिकेशनऐवजी खराब क्रेडेन्शियल म्हणून दिसते। दुसरी स्थिती कळवणाऱ्या विजेट किंवा दुसऱ्या प्रक्रियेचेही तेच स्पष्टीकरण: प्रत्येकाला गट लागतो, आणि प्रत्येकाला वाचण्यापूर्वी प्राधान्ये लोड करावी लागतात।
API प्रोटोकॉलशी जुळवा
अंगभूत मॅनेजर IPsec आणि IKEv2 प्रोटोकॉल ऑब्जेक्ट ठेवतो। अतिरिक्त फील्डद्वारे तो सामान्य SSL VPN क्लायंट होत नाही, आणि जुळत नसलेली प्रोफाइल स्वच्छ जतन होऊनही कधीही कनेक्ट होणार नाही। स्थिती तपासण्यापूर्वी तुम्ही कोणत्या श्रेणीत आहात ते ठरवा, कारण स्थिती बग आणि असमर्थित प्रोटोकॉल बाहेरून सारखेच दिसतात।
पुढील पुन्हा सुरुवातीसाठी चेकलिस्ट लहान आहे: प्राधान्ये लोड करा, स्थिती वाचा, बदल सदस्यता अग्रभागी ठेवा, सामायिक गटातून संदर्भ पुन्हा तयार करा, आणि प्रोटोकॉल ऑब्जेक्ट तुम्ही अंमलात आणलेल्या API शी जुळतो याची खात्री करा। ती यादी चालवायला एक मिनिट लागते; त्याबद्दल अंदाज लावायला संपूर्ण दुपार।