सही OpenVPN कनेक्शन बंद करें: फ़ोरग्राउंड, systemd या NM
टनल डिस्कनेक्ट करने वाला कमांड इस पर निर्भर करता है कि उसे किसने शुरू किया। सिग्नल भेजने से पहले फ़ोरग्राउंड, systemd, NetworkManager और OpenVPN 3 मालिकों की तुलना करें।
टर्मिनल विंडो बंद करना टनल बंद करने जैसा नहीं है, और किसी प्रोसेस को मारना किसी सेवा को रोकने जैसा नहीं है। Linux पर जो कमांड वास्तव में डिस्कनेक्ट करता है वह इस पर निर्भर करता है कि किस घटक ने कनेक्शन शुरू किया और इसलिए उसका जीवनचक्र रखता है। नीचे की तुलना उन चार व्यवस्थाओं को कवर करती है जिनसे आपको सबसे अधिक मिलने की संभावना है, और हर एक को ज़रूरी पहचानकर्ता को।
फ़ोरग्राउंड और डेमनाइज़्ड क्लाइंट
टर्मिनल में हाथ से शुरू किया गया क्लाइंट उसी टर्मिनल का होता है। Ctrl+C व्यवधान भेजता है, क्लाइंट अपना इंटरफ़ेस ढहा देता है, और टनल समाप्त हो जाती है। किसी और को सूचित करने की ज़रूरत नहीं है।
शेल रैपर से शुरू किया गया और बैकग्राउंड में छोड़ा गया क्लाइंट किसी विशेष का नहीं होता, और यही वह स्थिति है जब लोग killall की ओर बढ़ते हैं। पहले प्रोसेस खोजें, पुष्टि करें कि उसकी कमांड लाइन आपके इच्छित प्रोफ़ाइल का उल्लेख करती है, और फिर सामान्य समाप्ति सिग्नल भेजें। किसी सुपरवाइज़र के नीचे मारी गई निगरानी वाली प्रोसेस बस फिर से शुरू हो जाएगी, इसलिए सिग्नल चुनने से ज़्यादा मालिक की पहचान करना महत्वपूर्ण है। प्रोसेस समूह को सिग्नल तभी भेजें जब आप पुष्टि कर चुके हों कि कोई अन्य टनल उसे साझा नहीं करती।
SIGUSR1 डिस्कनेक्शन नहीं है; यह क्लाइंट से टनल फिर से शुरू करने के लिए कहता है।
systemd इंस्टेंस
जब कोई unit कनेक्शन रखता है, तो unit ही रोकने की वस्तु है। openvpn-client@office जैसे टेम्पलेट इंस्टेंस प्रोफ़ाइल का नाम रखते हैं, और इंस्टेंस के बजाय टेम्पलेट लक्ष्य रोकने से होस्ट पर हर क्लाइंट प्रभावित हो सकता है।
systemctl list-units 'openvpn-client@*'
systemctl stop [email protected]
जब आपको निश्चित न हो कि इंस्टेंस ने कौन-सी प्रोफ़ाइल लोड की, तो unit का ExecStart पढ़ें।
सक्षम किया गया unit अगले बूट पर वापस आएगा, जो अभी उसे रोकने से अलग निर्णय है। इसे केवल तब अक्षम करें जब आप तय कर लें कि कनेक्शन वापस नहीं आना चाहिए, और उस निर्णय को वहाँ दर्ज करें जहाँ अगले प्रशासक को वह मिले।
NetworkManager प्रोफ़ाइल
NetworkManager द्वारा प्रबंधित प्रोफ़ाइल कोई प्रोसेस नहीं है जिसे आप सिग्नल भेज सकें। प्रबंधक जीवनचक्र रखता है, और जिस वस्तु पर कार्य करना है वह सक्रिय कनेक्शन है, जो प्रदर्शित नाम के बजाय UUID से पहचाना जाता है। पहले सक्रिय सूची पढ़ने से यह भी दिखता है कि क्या आपकी अपेक्षा से अलग नाम के अंतर्गत दूसरी टनल चल रही है।
nmcli connection show --active
nmcli connection down uuid actual-uuid
प्रदर्शित नाम दोहराए जाते हैं, और प्रोफ़ाइल फ़ाइल का नाम उसका पहचानकर्ता नहीं है, इसलिए सूची से UUID कॉपी करें। यदि कनेक्शन तुरंत वापस आ जाए, तो कोई चीज़ उसे सक्रिय कर रही है: आधार कनेक्शन पर secondaries प्रविष्टि, कोई dispatcher स्क्रिप्ट, या ऑटोकनेक्ट फ़्लैग। प्रबंधक का कनेक्शन रोकना सही पहला कदम है, और पुनः सक्रियण अगला प्रश्न है। पुनः सक्रियण रोकने के लिए प्रोफ़ाइल न हटाएँ, क्योंकि इससे वे क्रेडेंशियल भी हट जाते हैं जिनकी कल आपको ज़रूरत पड़ सकती है।
प्रबंधक का कमांड संदर्भ बताता है कि down लक्ष्य कैसे चुना जाता है।
OpenVPN 3 सत्र
OpenVPN 3 Linux हर टनल के लिए प्रोसेस के बजाय सत्र मॉडल का उपयोग करता है। आप उन सत्रों का निरीक्षण करते हैं जिन्हें सेवा जानती है, फिर एक सत्र पथ पर कार्य करते हैं। पथ ही पहचानकर्ता है, और इसे कॉन्फ़िगरेशन नाम से बदला नहीं जा सकता।
openvpn3 sessions-list
openvpn3 session-manage --path /net/openvpn/v3/sessions/... --disconnect
हर सत्र को डिस्कनेक्ट करना अलग कार्रवाई है, और यह जानबूझकर होनी चाहिए।
एक ही होस्ट कई उपयोगकर्ताओं के सत्र रख सकता है, इसलिए कार्य करने से पहले सूची बनाएँ और जिस सत्र को आप समाप्त करने वाले हैं उसके मालिक की पुष्टि करें।
बाद में क्या सत्यापित करें
इनमें से किसी भी रोक के बाद तीन चीज़ें जाँचें: सक्रिय कनेक्शन सूची में अब टनल नहीं है, इंटरफ़ेस चला गया है, और किसी आंतरिक पते के लिए रूट खोज अब टनल डिवाइस नहीं चुनती। फिर तय करें कि अगले बूट पर क्या होगा।
ip -brief address
ip route get 10.8.0.1
हाथ से इंटरफ़ेस हटाना मालिक को नहीं रोकता, और यह सफ़ाई आधी-अधूरी छोड़ देता है।
अभी डिस्कनेक्ट करना, अगली स्वचालित शुरुआत रोकना, और बाद में गैर-VPN ट्रैफ़िक की अनुमति देना तीन अलग विकल्प हैं। हर एक को स्पष्ट रूप से करें।