OpenVPN कहता है कि इनिशियलाइज़ेशन पूरा हुआ: प्रॉम्प्ट वापस क्यों नहीं आता
लॉग की आखिरी पंक्ति प्रोग्राम का नहीं, स्टार्टअप का अंत बताती है। फ़ोरग्राउंड डिबगिंग, सर्विस यूनिट और डेमन मोड में से चुनें।
आखिरी लॉग पंक्ति के बाद टर्मिनल के शांत होने पर कुछ भी अटका हुआ नहीं है। फ़ोरग्राउंड क्लाइंट के लिए यही अपेक्षित रूप है: उसने स्टार्टअप पूरा कर लिया है और अब वहीं बैठकर ट्रैफ़िक ढो रहा है। शेल प्रॉम्प्ट वैसा सफलता का संकेत नहीं है जैसा वह दिखता है।
संदेश को स्टार्टअप और स्थिर स्थिति के बीच की सीमा मानें, क्योंकि वह ठीक यही दर्शाता है।
संदेश प्रक्रिया का नहीं, स्टार्टअप का अंत दर्शाता है
OpenVPN वह पंक्ति डिवाइस खोलने, इंटरफ़ेस कॉन्फ़िगर करने, रूट इंस्टॉल करने और साथी के साथ TLS का आदान-प्रदान पूरा करने के बाद छापता है। इसके बाद प्रक्रिया चलती रहती है, क्योंकि उसका काम टनल को खुला रखना और पैकेट आगे भेजना है। फ़ोरग्राउंड प्रोग्राम वह काम करते हुए प्रॉम्प्ट पर वापस नहीं लौटता। इसके बाद शांत आउटपुट सामान्य है, क्योंकि क्लाइंट तभी बोलता है जब कुछ बदलता है।
अगर पंक्ति दिखे और कनेक्शन बाद में मर जाए, तो वह अलग घटना है, और लॉग बाद में यही बताएगा।
Ctrl+C एक निर्णय है, समाधान नहीं
Ctrl+C दबाने से एक इंटरप्ट जाता है, जिसे क्लाइंट बंद होने का अनुरोध मानता है। प्रॉम्प्ट वापस आ जाता है, टनल चली जाती है, और उसका इस्तेमाल करने वाला हर सत्र खत्म हो जाता है। यह प्रगति जैसा दिखता है और असल में उल्टा है। अगर लक्ष्य लगातार बना रहने वाला कनेक्शन है, तो जवाब यह है कि प्रक्रिया को ऐसी जगह ले जाएँ जहाँ वह आपके टर्मिनल के बिना चलती रहे, उसे रोकना नहीं।
डिबग करते समय उसे फ़ोरग्राउंड में छोड़ना सही विकल्प है, क्योंकि बाद की त्रुटियाँ उसी विंडो में दिखती रहती हैं। एक शांत मिनट किसी भी दिशा में कुछ साबित नहीं करता; आउटपुट देखने के बजाय टनल से होकर किसी संसाधन को जाँचें।
संदेश क्या साबित नहीं करता
पूर्णता क्लाइंट की अपनी सेटिंग के बारे में एक स्थानीय कथन है। यह नहीं कहता कि दूसरा पक्ष जवाब देता है, कि इंस्टॉल किए गए रूट आपकी ज़रूरत से मेल खाते हैं, या कि टनल से होकर नाम समाधान काम करता है। स्प्लिट टनल प्रोफ़ाइल पूरी तरह इनिशियलाइज़ हो सकती है जबकि कंपनी का शेयर पहुँच से बाहर रहे, क्योंकि रूट या DNS नीति ने उसे कभी कवर नहीं किया। सर्वर पक्ष के इंस्टेंस क्लाइंट स्वीकारने के लिए तैयार होने पर मिलती-जुलती पंक्ति छापते हैं, जो किसी भी क्लाइंट के जुड़े होने के बराबर नहीं है।
‘सर्वर शुरू हुआ’ और ‘लैपटॉप शेयर खोल सकता है’ दो अलग जगहों की टिप्पणियाँ हैं, और इन्हें मिलाने से आप गलत होस्ट को डिबग करने लगते हैं।
टर्मिनल के बिना चलाना
स्थायी परिनियोजन के लिए वह सर्विस व्यवस्था इस्तेमाल करें जिसे प्लेटफ़ॉर्म समर्थन देता है। systemd होस्ट पर वह openvpn-client@office इंस्टेंस है जिसमें प्रोफ़ाइल /etc/openvpn/client में है, जिसे रीबूट के बाद भी टिके रहने के लिए शुरू और सक्षम किया गया है। Community OpenVPN --log या --log-append के साथ --daemon भी देता है, जो प्रक्रिया को अलग करता है और आउटपुट फ़ाइल में भेजता है। दोनों तरीके प्रक्रिया के चलने का ढंग बदलते हैं; कोई भी रूट ठीक नहीं करता या दूर के एप्लिकेशन को स्वस्थ नहीं बनाता।
जाँचें कि आप ऐसे इंस्टेंस के बगल में दूसरा शुरू नहीं कर रहे जिसे कोई सर्विस पहले से संभाल रही है। एक ही प्रोफ़ाइल का दावा करने वाले दो क्लाइंट उलझाने वाले लॉग और एक ऐसी टनल बनाते हैं जो आपने नहीं चाही थी।
काम से मेल खाने वाली व्यवस्था चुनें
निदान के लिए फ़ोरग्राउंड, सत्र से ज़्यादा टिकने वाली हर चीज़ के लिए सर्विस, और जब सहारा लेने के लिए कोई सर्विस मैनेजर न हो तो डेमन मोड। ये तीन सामान्य मामलों को कवर करते हैं, और हर एक के होने का साफ़ कारण है। किसी एक को गलती से चुनना ही ‘विंडो बंद होने तक काम करता है’ वाली रिपोर्ट बनाता है।
जब टनल को रुकना हो, तो बाद में पुष्टि करें कि वह रीबूट के बाद वापस आती है और उसके लॉग वहाँ पहुँचते हैं जहाँ आप देखेंगे। इनिशियलाइज़ेशन की पंक्ति उन्हीं लॉग में भी दिखती है, और तब किसी को उसके लिए टर्मिनल पर नज़र नहीं रखनी पड़ती।