कमांड तब काम करता है जब आप लॉगिन होते हैं, इसलिए आप उसे स्टार्टअप स्क्रिप्ट में डालकर घर चले जाते हैं। अगली सुबह मशीन ऑनलाइन होती है और टनल नहीं। मिथक यह है कि चलने वाला इनवोकेशन चलने वाली सेवा है। व्यवहार में अंतर आमतौर पर दो में से एक चीज़ होता है: प्रोफ़ाइल सिस्टम के बजाय आपके उपयोगकर्ता सत्र की होती है, या रहस्य कोई ऐसी चीज़ खोलती है जो आपके लॉगिन के बाद ही मौजूद होती है। दोनों मैन्युअल परीक्षण में बिल्कुल काम करते हैं और ठीक उसी पल विफल होते हैं जब कोई नहीं देख रहा होता।

लॉगिन इसे काम क्यों कराता है

ग्राफ़िकल लॉगिन एक सत्र बस और एक गुप्त सेवा एजेंट शुरू करता है, और यहीं कई डेस्कटॉप-केंद्रित क्लाइंट प्रोफ़ाइल का पासवर्ड या निजी कुंजी का पासफ़्रेज़ रखते हैं। लॉगिन के बाद आपके उपयोगकर्ता के रूप में चलने वाला सक्रियण उस एजेंट से रहस्य माँग सकता है और सफल हो सकता है। बूट-समय की यूनिट द्वारा चलाया गया वही सक्रियण कोई सत्र, बस या एजेंट नहीं रखता, इसलिए खोज विफल हो जाती है या ऐसे प्रॉम्प्ट पर अटक जाती है जिसे कोई नहीं देखता।

लॉगिन से पहले और बाद में वही प्रोफ़ाइल चलाएँ और आपको एक ही कॉन्फ़िगरेशन से दो अलग परिणाम मिलेंगे। यह क्रेडेंशियल पर निर्भरता का हस्ताक्षर है, टूटी टनल का नहीं, और यह समझाता है कि टर्मिनल में मैन्युअल परीक्षण दिखने से कम क्यों साबित करता है। टनल ठीक है; जो उसका रहस्य खोलता है वही गायब है।

तय करें कौन सा स्वामी टनल शुरू करता है

दो समर्थित पैटर्न हैं, और उन्हें मिलाना इसके विफल होने का दूसरा तरीका है। NetworkManager सिस्टम-स्कोप्ड कनेक्शन सक्रिय कर सकता है, जो तब उपयुक्त है जब मशीन पहले से अपना नेटवर्किंग वहीं केंद्रित करती है। वैकल्पिक रूप से, एक समर्पित systemd यूनिट सीधे VPN चलाती है और स्वयं इंटरफ़ेस की स्वामी होती है।

systemctl list-unit-files 'openvpn*'
systemctl list-unit-files 'wg-quick*'
nmcli connection show --active
systemctl enable --now wg-quick@wg0

एक ही कॉन्फ़िगरेशन पर दोनों स्वामियों को न चलाएँ। अगर NetworkManager इंटरफ़ेस प्रबंधित करता है और यूनिट भी उसे ऊपर लाती है, तो वे रूट और DNS पर लड़ेंगे, और परिणामी स्थिति इस पर निर्भर करेगी कि कौन अंत में पूरा हुआ।

रहस्य वहाँ रखें जहाँ सेवा उसे पढ़ सके

बैकग्राउंड सेवा किसी प्रॉम्प्ट का उत्तर नहीं दे सकती। प्रमाणपत्र पासफ़्रेज़, खाता पासवर्ड और संदर्भित प्रमाणीकरण फ़ाइलों—सभी को ऐसी संग्रहण व्यवस्था चाहिए जहाँ यूनिट बिना मनुष्य के पहुँच सके, जो सेवा चलाने वाले खाते की हो और बाकी सबके लिए अपठनीय हो।

लुभावना शॉर्टकट यह है कि फ़ाइल को तब तक विश्व-पठनीय बनाया जाए जब तक अनुमति त्रुटि गायब न हो जाए। यह स्टार्टअप विफलता को दीर्घकालिक क्रेडेंशियल एक्सपोज़र से बदल देता है, और यह ऐसा बदलाव है जिसे कोई दोबारा नहीं देखता। वही तंत्र इस्तेमाल करें जिस पर तैनाती पहले से भरोसा करती है: सीमित क्रेडेंशियल फ़ाइल, फ़ाइल अनुमतियों से सुरक्षित अनएन्क्रिप्टेड कुंजी, या अपने स्वयं के गुप्त भंडार वाला सिस्टम-स्कोप्ड कनेक्शन।

उस घटना को जाँचें जो वास्तव में होती है

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

systemctl is-enabled wg-quick@wg0
journalctl -u wg-quick@wg0 -b --no-pager
systemctl status systemd-networkd-wait-online --no-pager

क्रम भी क्रेडेंशियल जितना ही महत्वपूर्ण है. जो यूनिट अंतर्निहित अपलिंक के कॉन्फ़िगर होने से पहले शुरू होती है वह हार मान लेगी, और कुछ वितरण इस बात में भिन्न हैं कि वे कनेक्टिविटी का इंतज़ार करते हैं या नहीं। अगर यूनिट बूट पर विफलता बताती है लेकिन तीस सेकंड बाद हाथ से शुरू करने पर सफल होती है, तो आपने क्रेडेंशियल की नहीं, क्रम की समस्या पाई है।

केवल इंटरफ़ेस नहीं, रूट और DNS जाँचें

मौजूद इंटरफ़ेस काम करती टनल नहीं है। बिना निगरानी वाली शुरुआत के बाद, नाम जाँचने से पहले रूट, रिज़ॉल्वर की स्थिति और पते से एक गंतव्य जाँचें। फिर वह अनुप्रयोग जाँचें जिसके लिए टनल मौजूद है।

ip -4 route show
resolvectl status
ping -c 3 10.61.0.1
curl -sS --max-time 5 https://internal.example/ -o /dev/null -w '%{http_code}\n'

अगर पता काम करता है और नाम नहीं, तो बची हुई समस्या DNS नीति है, टनल नहीं। लिख लें कि कौन सा स्वामी सेवा शुरू करता है और रहस्य कहाँ रहता है, क्योंकि इस मशीन को दोबारा रीबूट करने वाले अगले व्यक्ति को दोनों तथ्य चाहिए होंगे।

संबंधित लेख