स्क्रीन अंधेरी होने पर VPN बंद हो जाता है: लॉक, ब्लैंक या सस्पेंड?
लॉक किया गया सत्र, अंधेरी स्क्रीन और सस्पेंड हुआ मशीन तीन अलग घटनाएँ हैं। VPN के कीपअलाइव को दोष देने से पहले इन्हें journalctl से जोड़कर देखें।
जब कोई कहता है कि स्क्रीन अंधेरी होते ही VPN मर गया, तो पहला उपयोगी सवाल यह है कि तीन में से कौन सी घटना वास्तव में हुई: सत्र लॉक हुआ, पैनल बंद हुआ, या पूरा मशीन सो गया। ये अलग-अलग टाइमर पर अलग-अलग तंत्र हैं, और इनमें से केवल एक ही किसी प्रक्रिया को शेड्यूल होने से पूरी तरह रोक सकता है। नीचे दी गई जाँचें क्रम से करें। जिस पहली जाँच से सवाल का जवाब मिले, वहीं रुकें, क्योंकि उसके बाद की हर जाँच किसी और चीज़ का जवाब देती है।
पहली जाँच: लॉक को ब्लैंक और नींद से अलग करें
लॉक बदलता है कि सत्र किसे इस्तेमाल करने की अनुमति है; कंपोज़िटर चित्र बनाता रहता है, नेटवर्क स्टैक चलता रहता है और VPN क्लाइंट को कुछ पता नहीं चलता। स्क्रीन ब्लैंक होने पर निष्क्रियता के बाद पैनल बंद हो जाता है और मशीन पूरी तरह जागती रहती है। सस्पेंड प्रोसेसर रोक देता है, यानी उपयोगकर्ता-स्थान की कोई प्रक्रिया शेड्यूल नहीं होती, इसलिए अंतराल कितना भी छोटा रखें, कोई कीपअलाइव नहीं चल सकता।
| Event | What it stops | Can it kill the tunnel? |
|---|---|---|
| Session lock | Input to your session | No |
| Display blank | The panel | No |
| Suspend to RAM | CPU scheduling, hence every process | Yes, and silently |
| Hibernate | Everything, with state written to disk | Yes |
यही तालिका कारण है कि «स्क्रीन अंधेरी हुई» कोई निदान नहीं है। पाँच मिनट पर ब्लैंक और तीस मिनट पर सस्पेंड पर सेट डेस्कटॉप छठे मिनट पर अंधेरी स्क्रीन दिखाएगा, जबकि टनल पूरी तरह स्वस्थ है। तीसवें मिनट की विफलता दूसरी घटना और दूसरा उपाय है, और कमरे के दूसरी ओर से दोनों एक जैसे दिखते हैं।
दूसरी जाँच: पावर और नेटवर्क की घटनाओं को एक समयरेखा पर रखें
पूरे बूट के बजाय सीमित अवधि का जर्नल पढ़ें, और लॉगिन प्रबंधक तथा कनेक्शन के मालिक दोनों को शामिल करें:
journalctl -b -u systemd-logind -u NetworkManager --since "45 minutes ago"
systemd-inhibit --list
पहला आदेश नींद के अनुरोध, फिर से जागना और उनके बाद के नेटवर्क बदलाव दिखाता है। दूसरा दिखाता है कि अभी कौन सी चीज़ एक अवरोधक ताला पकड़े हुए है, जो आपको बताता है कि क्या कोई चीज़ जानबूझकर नींद रोक रही है और वह कौन सा प्रोग्राम है। अगर आपके कनेक्शन का मालिक NetworkManager नहीं है तो यूनिट के नाम बदलें, और याद रखें कि किसी दूसरे उपयोगकर्ता की यूनिट या सिस्टम जर्नल पढ़ना स्थानीय नीति पर निर्भर है।
गायब पंक्ति नकारात्मक परिणाम नहीं है। अगर चुनी गई यूनिट का जर्नल आपके खाते को दिखता नहीं है, तो सस्पेंड रिकॉर्ड का न होना कुछ साबित नहीं करता, और खाली फ़िल्टर से «यह कभी सोया ही नहीं» निकालना वही रास्ता है जिस पर लोग एक हफ़्ता कीपअलाइव गड़बड़ाते रहते हैं।
तीसरी जाँच: अगर यह सो गया, तो तय करें कि क्या यह जानबूझकर था
समयरेखा पर नींद का बदलाव आते ही सवाल «VPN क्यों टूटा» से बदलकर «मशीन को सोना चाहिए था या नहीं» हो जाता है। लैपटॉप पर जवाब अक्सर हाँ होता है, और टनल का टूटना अपेक्षित व्यवहार है जिससे क्लाइंट को जागने पर उबरना चाहिए। जिस वर्कस्टेशन को पहुँच में रहना चाहिए, वहाँ नींद की नीति ही बदलने वाली चीज़ है। यह तय करने में कि आप इन दो मशीनों में से किसे देख रहे हैं, एक सवाल लगता है, और यह वह सवाल नहीं है जिसका जवाब जर्नल आपकी जगह दे सके।
इसे लॉग इन किए गए सत्र के नियंत्रणों से बदलें, या अगर आवश्यकता पूरे मशीन की है तो व्यवस्थापक-समर्थित तंत्र से बदलें। दूसरे खाते से लॉग इन रहते हुए डिस्प्ले प्रबंधक की सेटिंग संपादित करना वही कार्रवाई नहीं है और अगले सत्र के शुरू होने तक काम करता दिखेगा। पावर प्रबंधन पूरी तरह बंद करना एक व्यापक पहली प्रतिक्रिया है जो बैटरी की उम्र खाती है और असली नीति वाला सवाल छिपा देती है।
चौथी जाँच: अगर यह जागता रहा, तो नेटवर्क और क्लाइंट देखें
टनल खो चुके जागते मशीन की तीन में से एक कहानी होती है: एक्सेस नेटवर्क गिर गया, VPN क्लाइंट रुका या फिर शुरू हुआ, या सर्वर की ओर ने जुड़ाव को समाप्त होने दिया जबकि क्लाइंट अभी भी जुड़ा होने पर विश्वास करता रहा। अंतर्निहित लिंक घटना के टाइमस्टैम्प की तुलना टनल घटना से करें, और इस बारे में सटीक रहें कि कौन पहले आया।
फिर मूल सत्र से अलग रूप से रिकवरी का रास्ता जाँचें। बहाल टनल से नया अनुरोध सफल हो सकता है जबकि टूटने से पहले खुला लंबे समय का एप्लिकेशन सत्र टूटा ही रहता है, क्योंकि एप्लिकेशन एक पुराना सॉकेट या कैश किया पता पकड़े रहता है। यह एप्लिकेशन की समस्या है, टनल के वापस न आने का सबूत नहीं।
उपयोगी रिपोर्ट में क्या होता है
क्रम को टाइमस्टैम्प और मालिकों के साथ लिखें: सत्र कब लॉक हुआ, स्क्रीन कब अंधेरी हुई, नींद का अनुरोध दर्ज हुआ या नहीं, लिंक कब गिरा और लौटा, टनल ने कब स्थिति बदली और एप्लिकेशन ने वास्तव में क्या किया। हर मद का एक मालिक है, इसलिए हर मद Linux के बारे में सामान्य शिकायत बनने के बजाय सही व्यक्ति को दिया जा सकता है।
अगर इनमें से कोई पंक्ति गायब है, तो वह मापने वाली अगली चीज़ है, बदलने वाली अगली चीज़ नहीं। खाली जगह वाली समयरेखा अनुमान पर किए गए सेटिंग बदलाव से अधिक जानकारी देती है।