OpenVPN Windows पर लॉगिन पर शुरू होता है लेकिन बूट पर नहीं?
स्टार्टअप शॉर्टकट एक डेस्कटॉप ऐप चलाता है, स्वचालित सेवा नहीं। फ़ाइलें खिसकाने से पहले जाँचें कि सेवा कौन-सा प्रोफ़ाइल स्रोत पढ़ती है।
जो टनल किसी के साइन इन करने के बाद ही दिखती हैं, वे आम तौर पर उसी व्यक्ति के सत्र से शुरू होती हैं, स्वचालित सेवा से नहीं। आम दोषी स्टार्टअप शॉर्टकट होता है जो openvpn-gui.exe को चलाता है, और यह टूटी हुई इंस्टॉलेशन नहीं है। शॉर्टकट उपयोगकर्ता सत्र के भीतर एक डेस्कटॉप ऐप्लिकेशन शुरू करता है, उस उपयोगकर्ता के प्रोफ़ाइल, उसके प्रमाणपत्र भंडार और किसी संकेत का उत्तर देने की क्षमता के साथ। इनमें से कुछ भी कनेक्शन को साइन इन किए व्यक्ति से स्वतंत्र नहीं बनाता, और लॉगिन से पहले वाली टनल को ठीक यही चाहिए।
इस लक्षण के आम तौर पर तीन कारण होते हैं
तीन पैटर्न बाहर से एक जैसे दिखते हैं और उनके अलग-अलग उपाय हैं। पहला यह है कि निष्पादन का स्वामी सेवा नहीं बल्कि उपयोगकर्ता सत्र है, जो स्टार्टअप शॉर्टकट का मामला है। दूसरा ऐसा प्रोफ़ाइल है जो वहाँ रहता है जहाँ सेवा नहीं देखती, इसलिए सेवा शुरू होती है, कुछ नहीं पाती और साफ़-सुथरे ढंग से बंद हो जाती है। तीसरा ऐसा प्रोफ़ाइल है जिसे सेवा ढूँढ़कर शुरू करती है, लेकिन जिसके क्रेडेंशियल ऐसी अंतःक्रिया माँगते हैं जो कोई सेवा दे नहीं सकती।
यह पहचानना कि कौन-सा मामला लागू है, दो पठन माँगता है: सेवा क्या चलाने के लिए कॉन्फ़िगर है, और कौन-सी फ़ाइलें वह देख सकती है। दोनों एक-एक कमांड हैं, और कोई भी चल रहे कनेक्शन को बाधित नहीं करता।
स्वचालित सेवा वास्तव में क्या पढ़ती है
Community की स्वचालित सेवा एक रैपर है जो अपनी कॉन्फ़िगर की गई ऑटो-स्टार्ट निर्देशिका, आम तौर पर इंस्टॉलेशन के अंतर्गत config-auto, को स्कैन करती है और मिले हुए हर मेल खाते प्रोफ़ाइल के लिए एक OpenVPN प्रक्रिया शुरू करती है। उपयोगकर्ता के GUI मेनू में दिखने वाला प्रोफ़ाइल इसके बजाय उस उपयोगकर्ता के रोमिंग प्रोफ़ाइल के अंतर्गत, ऐसी निर्देशिका में रहता है जिसे सेवा खाता नहीं पढ़ता। Windows सेवा गाइड उस खोज का वर्णन करती है, और कुछ भी कॉपी करने से पहले उसे पढ़ना उचित है, क्योंकि लक्ष्य निर्देशिका इंस्टॉलेशन का गुण है, कोई निश्चित परंपरा नहीं। इसलिए GUI के फ़ोल्डर में फ़ाइल कॉपी करने से सेवा के लिए कुछ नहीं बदलता, और config नाम के हर फ़ोल्डर में कॉपी करने से समाधान के बजाय प्रतियाँ बनती हैं।
Get-Service OpenVPNService | Select-Object Status, StartType
Get-CimInstance Win32_Service | Where-Object Name -eq 'OpenVPNService' | Select-Object PathName, StartName
gci 'C:\Program Files\OpenVPN\config-auto'
अंतिम कमांड बताती है कि रैपर वास्तव में क्या देखेगा, और यह पुष्टि करने का सबसे तेज़ तरीका है कि प्रोफ़ाइल गलत जगह पर है। दूसरी पंक्ति वह खाता भी दिखाती है जिसके अंतर्गत सेवा चलती है, और वही खाता तय करता है कि कौन-से फ़ाइल पथ और प्रमाणपत्र भंडार पहुँच योग्य हैं।
डेस्कटॉप लॉगिन क्यों काम करता है और बूट स्टार्ट क्यों नहीं
डेस्कटॉप पर सफलता इनपुट पर निर्भरता को लंबे समय तक छिपा सकती है। GUI किसी कुंजी का पासफ़्रेज़, खाता पासवर्ड या दूसरा कारक संवाद में ले सकता है, क्योंकि वह दृश्यमान डेस्कटॉप वाले इंटरैक्टिव सत्र में चलता है। सेवा बिना डेस्कटॉप वाले सत्र में चलती है, इसलिए इनपुट के अनुरोध के प्रकट होने की कोई जगह नहीं होती, और कनेक्शन ऐसे समय-समाप्ति के बाद विफल हो जाता है जो क्रेडेंशियल समस्या जैसा बिल्कुल नहीं दिखता।
फ़ाइल पहुँच उसी नियम का पालन करती है। उपयोगकर्ता के प्रोफ़ाइल के अंतर्गत संग्रहीत निजी कुंजी, या उपयोगकर्ता के व्यक्तिगत भंडार में प्रमाणपत्र, मशीन के रूप में चलने वाली सेवा के लिए उपलब्ध नहीं होता। यह मानने के बजाय कि एक ही प्रोफ़ाइल फ़ाइल का अर्थ एक ही वातावरण है, पूर्ण पथ, अनुमतियाँ और प्रत्येक पक्ष द्वारा किए गए प्रमाणपत्र चयन की तुलना करें।
उपयोगकर्ता लॉग इन हो या न हो, चलने के लिए सेट किया गया निर्धारित कार्य भी ऐसी ही बाधा विरासत में पाता है। वह GUI की निष्पादन योग्य फ़ाइल सफलतापूर्वक शुरू कर सकता है और फिर भी ऐसी प्रक्रिया बना सकता है जो कभी क्रेडेंशियल नहीं पाती, इसलिए कार्य प्रबंधक में प्रक्रिया का होना काम करती टनल का प्रमाण नहीं है।
एक स्वामी चुनें और वास्तविक जीवनचक्र जाँचें
साइन इन किए व्यक्ति के कनेक्शन के लिए GUI के समर्थित ऑटोस्टार्ट व्यवहार का उपयोग करें और सेवा को बाहर रखें। ऐसी टनल के लिए जो किसी के साइन इन करने से पहले मौजूद होनी चाहिए, सेवा कॉन्फ़िगर करें, प्रोफ़ाइल वहाँ रखें जहाँ रैपर उसे पढ़ता है, और समर्थित अनअटेंडेड क्रेडेंशियल तंत्र अपनाएँ, जैसे इंटरैक्टिव पासफ़्रेज़ के बिना कुंजी या दस्तावेज़ित क्रेडेंशियल फ़ाइल।
Get-Content 'C:\Program Files\OpenVPN\log\openvpn.log' -Tail 40
Get-WinEvent -LogName Application -MaxEvents 20 | Where-Object ProviderName -like '*OpenVPN*'
उस जीवनचक्र की जाँच करें जो मायने रखता है: बिना किसी के साइन इन किए रीबूट, फिर नेटवर्क बदलने के बाद पुनः कनेक्ट। कनेक्शन के लिए एक ही स्वामी रखें, क्योंकि दो प्रतिस्पर्धी स्टार्टअप तंत्र आम तौर पर दो इंस्टेंस बनाते हैं जो एक ही रूट और एक ही सर्वर सत्र के लिए लड़ते हैं, और यह किसी भी एक तंत्र की तुलना में निदान करना कठिन है।