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

कुछ भी लिखने से पहले तय करें कि कौन सा मालिक ज़िम्मेदार है।

तीन मालिक, एक गायब प्रीफ़िक्स

प्रीफ़िक्स इसलिए अनुपस्थित हो सकता है कि किसी ने उसे दिया नहीं, कि प्रोफ़ाइल ने उसे अस्वीकार कर दिया, या कि वह कहीं ऐसी जगह स्थापित हुआ जहाँ आप नहीं देखते। ये अलग-अलग खराबियाँ हैं और इनके अलग-अलग उपाय हैं।

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

चौथा मालिक आप हैं, बाद में: एक स्क्रिप्ट जो कनेक्ट होने पर रूट जोड़ती है पर डिस्कनेक्ट होने पर उसे हटाती नहीं। इससे ऐसा प्रीफ़िक्स बनता है जो टनल से ज़्यादा जीता है, मृत इंटरफ़ेस की ओर इशारा करता है, और मशीन को डीबग करने वाले अगले व्यक्ति को उलझा देता है।

कुछ भी जोड़ने से पहले प्रोफ़ाइल पढ़ें

सहेजे गए कनेक्शन के अपने गुणों से शुरू करें। रहस्य उँडेले बिना उन्हें पढ़ें, और अगर प्रोफ़ाइल का नाम अस्पष्ट है तो UUID इस्तेमाल करें।

nmcli -f vpn.service-type,ipv4.never-default,ipv4.ignore-auto-routes,ipv4.route-table,ipv4.routes connection show office

vpn.service-type आपको बताता है कौन सा बैकएंड कनेक्शन का मालिक है, और यह ज़रूरी है क्योंकि प्लगइन डेटा बैकएंड-विशिष्ट होता है। एक प्लगइन जो कुंजी स्वीकार करता है वह दूसरे के लिए समर्थित अनुदेश नहीं है, इसलिए किसी दूसरे क्लाइंट के दस्तावेज़ से कॉपी किया गया अंश किसी चीज़ का प्रमाण नहीं है।

ipv4.ignore-auto-routes और ipv4.never-default अलग-अलग सवालों के जवाब देते हैं। पहला ऐसे रूट अस्वीकार कर सकता है जो कनेक्शन अन्यथा अपने आप लेता, और दूसरा नियंत्रित करता है कि प्रोफ़ाइल डिफ़ॉल्ट रूट बन सकता है या नहीं। जो प्रोफ़ाइल अपने आप बनने वाले रूट को नज़रअंदाज़ करता है और किसी और चीज़ पर निर्भर नहीं है वह साफ़-सुथरे ढंग से जुड़ेगा और लगभग कुछ भी स्थापित नहीं करेगा।

ip -4 rule show
ip -4 route show table all

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

स्क्रिप्ट क्या ठीक नहीं कर सकती

सहायक स्क्रिप्ट जोड़ने से NetworkManager के vpn.data को चलाने के लिए एक प्रोग्राम मिलता है। यह एक वास्तविक तंत्र है, और इनमें से ज़्यादातर मामलों के लिए यह गलत है, क्योंकि स्क्रिप्ट को नियंत्रण तब मिलता है जब प्रोफ़ाइल की अपनी नीति पहले ही तय कर चुकी होती है कि क्या स्वीकार करना है।

OpenVPN का script-security दूसरा बार-बार होने वाला भ्रम है। यह OpenVPN की सेटिंग है जो तय करती है कि क्लाइंट कौन सी स्क्रिप्ट चला सकता है और उनके परिवेश में क्या रख सकता है; स्तर 3 परिवेश के ज़रिए क्रेडेंशियल भेजने की अनुमति देता है, जो रूटिंग सुधार नहीं बल्कि रहस्यों के प्रबंधन का फ़ैसला है। इसे ऐसी प्रोफ़ाइल में चिपकाना जिसका बैकएंड OpenVPN नहीं है, या जब किसी स्क्रिप्ट को इसकी ज़रूरत न हो तब इसे बढ़ाना, रूट जोड़े बिना जोखिम जोड़ता है।

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

फ़ैसला, क्रम में

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

केवल तभी जब पहला जवाब हाँ हो, दूसरा हाँ हो और तीसरा सही हो, एक पूरक स्क्रिप्ट उचित ठहरती है, और तब भी आपको पूछना चाहिए कि क्या बैकएंड रूट को मूल रूप से समर्थन देता है। VPN सेटिंग्स संदर्भ service-type और प्लगइन-विशिष्ट डेटा शब्दकोश का दस्तावेज़ीकरण करता है, और कुंजी के अस्तित्व को मानने से पहले वहीं से शुरू करना चाहिए।

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

संबंधित लेख