गाइड
Linux पर VPN कैसे सेट अप करें
प्रदाता का अपने रिपॉज़िटरी से मिलने वाला क्लाइंट, सिस्टम के अपने टूल्स में कॉन्फ़िगरेशन फ़ाइल का विकल्प, DNS का वह विवरण जो Linux पर कहीं और से अधिक लीक होता है, और टर्मिनल से की जाने वाली जाँचें। Ubuntu 26.04 LTS और NetworkManager को ध्यान में रखकर लिखा गया।
शुरू करने से पहले
यह गाइड आपके लिए किसी एक का चुनाव नहीं करती
नीचे दिए गए सभी चरण आप चाहे जिस प्रदाता का इस्तेमाल करें, एक जैसे ही हैं, इसलिए यहाँ किसी का नाम नहीं दिया गया है। चुनाव करना अलग काम है और यह रजिस्टर में किया जाता है, जहाँ चुनाव डाउनलोड पेज के बजाय प्रकाशित स्कोर के आधार पर होता है।
क्लाइंट प्रदाता की अपनी रिपॉज़िटरी से, प्रदाता के अपने निर्देशों में दी गई साइनिंग कुंजी के साथ इंस्टॉल करें। किसी फ़ोरम या ब्लॉग से मिली एक-पंक्ति वाली इंस्टॉल कमांड को कभी टर्मिनल में पेस्ट न करें: कमांड root के रूप में चलती है और आपको पता ही नहीं होता कि उसने क्या डाउनलोड किया। साइन की गई रिपॉज़िटरी के पैकेज की जाँच की जा सकती है; शेल में पाइप की गई स्क्रिप्ट की नहीं।
क्लाइंट इंस्टॉल करें
Linux पर दो रास्ते हैं और दोनों उचित हैं। पहला है प्रदाता का अपना क्लाइंट; इसमें kill switch, सर्वर चुनने का विकल्प और DNS प्रबंधन पहले से मिलता है। दूसरा है सिस्टम के अपने टूल्स में कॉन्फ़िगरेशन फ़ाइल का इस्तेमाल, और इस गाइड के अंत में बताया गया है कि इसकी कीमत क्या है।
- प्रदाता की वेबसाइट पर साइन इन करें और अकाउंट क्षेत्र से उसके Linux निर्देश खोलें। उनमें रिपॉज़िटरी, कुंजी और पैकेज दिए होंगे; उन्हीं का पालन करें, और किसी अन्य चीज़ का नहीं।
- रिपॉज़िटरी और उसकी कुंजी जोड़ें, फिर पैकेज इंस्टॉल करें — वितरण के पैकेज मैनेजर से। कुंजी ही पैकेज मैनेजर को छेड़छाड़ किए गए पैकेज को अस्वीकार करने देती है, इसलिए बिना कुंजी के जोड़ी गई रिपॉज़िटरी ऐसी रिपॉज़िटरी है जिस पर आपने भरोसा कर लिया है।
- क्लाइंट की सेवा चालू करें, ताकि वह बूट के समय शुरू हो। क्लाइंट आम तौर पर root के रूप में चलने वाला एक daemon और उससे बात करने वाला डेस्कटॉप ऐप होता है; tunnel daemon के नियंत्रण में रहता है, और बूट से लागू रहने वाले kill switch के लिए daemon का बूट से चलना ज़रूरी है।
- क्लाइंट में साइन इन करें — ऐप से, या अकाउंट क्षेत्र द्वारा दिए गए token के साथ कमांड लाइन से — और डिवाइस का ऐसा नाम रखें जिससे आपकी पहचान न हो।
- अभी कनेक्ट न करें। पहले सेटिंग्स खोलें। नीचे दी गई तीन में से दो सेटिंग्स अधिकांश क्लाइंट में डिफ़ॉल्ट रूप से बंद होती हैं।
जाँचने लायक तीन सेटिंग्स
क्लाइंट के मेनू अलग हो सकते हैं, सेटिंग्स नहीं। इन तीनों में से हर एक का नाम अपरिचित होने पर शब्दावली में उसका विवरण मिलता है।
Kill switch
Tunnel के बंद होने पर यह सारा ट्रैफ़िक रोक देता है, बजाय इसके कि कनेक्शन को चुपचाप सामान्य नेटवर्क पर वापस जाने दे। Linux पर यह फ़ायरवॉल नियमों का एक सेट होता है जिसे क्लाइंट लिखता है: tunnel इंटरफ़ेस और tunnel के अपने endpoint को छोड़कर सब कुछ रोक दिया जाता है। इसे चालू करें, और जहाँ क्लाइंट यह विकल्प दे वहाँ हमेशा-चालू या lockdown रूप चुनें, ताकि नियम केवल कनेक्ट रहने के दौरान नहीं बल्कि बूट से ही लागू रहें। यह switch किस काम आता है, यह इसके अपने पेज पर बताया गया है।
Tunnel के अंदर DNS
नामों की lookup मशीन से tunnel के बाहर जा सकती है, भले ही बाकी सब कुछ उसके अंदर हो, और Linux पर यही सबसे आम leak है, क्योंकि resolver एक बदलने वाला घटक है। Ubuntu पर यह घटक systemd-resolved है: हर इंटरफ़ेस के अपने resolvers होते हैं, और DNS के लिए default route वाला resolver उन सभी सवालों के उत्तर देता है जो किसी अधिक विशिष्ट domain से मेल नहीं खाते। क्लाइंट को tunnel इंटरफ़ेस के ज़रिए उस default को प्रदाता के resolver की ओर भेजना चाहिए। क्लाइंट का DNS प्रदाता के अपने resolver पर सेट करें, किसी तीसरे पक्ष के resolver पर नहीं; केवल lookups देखने वाला दूसरा पक्ष एक अतिरिक्त पक्ष है। Leak कैसे होता है, यह DNS leaks पेज पर बताया गया है।
Protocol
किसी चीज़ के खराब होने तक इसे आधुनिक डिफ़ॉल्ट पर ही रहने दें — protocol पेज बताता है कि कौन-से protocol वर्तमान हैं और कौन-से पुराने। यदि कनेक्शन की समस्या ठीक करने के लिए क्लाइंट कोई पुराना विकल्प देता है, तो यह ऐसा समझौता है जिसे जानबूझकर करना और फिर वापस बदलना चाहिए: रजिस्टर प्रदाता द्वारा अब भी दिए जाने वाले सबसे कमज़ोर protocol को चिह्नित करता है, और उसे हाथ से चुनना अपने लिए वही चिह्न चुनना है।
पुष्टि करें कि यह वास्तव में काम कर रहा है
कनेक्ट करें, फिर अनुमान लगाने के बजाय जाँच करें। टर्मिनल से इस क्रम में तीन जाँचें करें:
- आपका पता बदल गया है। किसी भी “मेरा IP क्या है” सेवा पर
curlचलाएँ, या उसे ब्राउज़र में खोलें, और पुष्टि करें कि देश आपके चुने हुए एग्ज़िट से मेल खाता है। किसी सार्वजनिक पते परip route getको Wi-Fi या Ethernet इंटरफ़ेस के बजाय tunnel इंटरफ़ेस का नाम दिखाना चाहिए। - Lookups tunnel के अंदर हैं।
resolvectl status: tunnel इंटरफ़ेस पर प्रदाता का resolver और DNS का default route होना चाहिए; भौतिक इंटरफ़ेस का resolver इस्तेमाल नहीं होना चाहिए। ब्राउज़र में DNS leak test दूसरी राय देता है, और आपके इंटरनेट प्रदाता से संबंधित कोई भी चीज़ दिखने का अर्थ है कि DNS सेटिंग लागू नहीं हुई। - Kill switch वही करता है जो वह कहता है। डाउनलोड चल रहा हो तो
systemctl stopसे क्लाइंट की सेवा रोकें, याip link set … downसे tunnel इंटरफ़ेस बंद करें, ताकि क्लाइंट से ऐसा करने को कहे बिना tunnel गिर जाए। ट्रांसफ़र तुरंत रुक जाना चाहिए। यदि वह चलता रहता है, तो switch केवल दिखावटी है।
जाँचों का विस्तृत क्रम और हर जाँच क्या दिखा सकती है तथा क्या नहीं, यह इसके अपने गाइड में है।
इन जाँचों से क्या साबित होता है
+आपका ट्रैफ़िक आपके चुने हुए देश के एग्ज़िट सर्वर से बाहर जा रहा है
+आपकी lookups का उत्तर देने वाला resolver tunnel के अंदर प्रदाता का है
+Tunnel गिरने पर कनेक्शन चुपचाप वापस जाने के बजाय बंद होकर विफल होता है
इनसे क्या साबित नहीं होता
−प्रदाता क्या रखता है, इसके बारे में ये कुछ नहीं बताते — यह दस्तावेज़ों से जुड़ा प्रश्न है, जिसका उत्तर प्रतिधारण पेजों पर दिया गया है
−ये आपको गुमनाम नहीं बनाते: आपका ब्राउज़र और आपके logins वैसे ही रहते हैं, देखें VPN आपको किससे सुरक्षित नहीं करता
−आज सफल हुई जाँच अगले पैकेज अपडेट या अगले kernel के बारे में कोई वादा नहीं है
कॉन्फ़िगरेशन-फ़ाइल का रास्ता और इसकी कीमत
अधिकांश प्रदाता अकाउंट क्षेत्र से दो सामान्य protocol के लिए कॉन्फ़िगरेशन फ़ाइलें प्रकाशित करते हैं। WireGuard फ़ाइल connection editor से या nmcli connection import के साथ NetworkManager में import होती है, और wg-quick के अंतर्गत भी उतनी ही अच्छी तरह चलती है; OpenVPN फ़ाइल OpenVPN plugin के साथ इसी तरह import होती है। आपको tunnel, सिस्टम का अपना इंटरफ़ेस toggle और फ़ाइल में प्रदाता द्वारा रखी गई चीज़ों के अलावा कुछ नहीं मिलता।
आप क्लाइंट की बाकी सुविधाएँ खो देते हैं। कोई kill switch नहीं होता, जब तक कि आप फ़ायरवॉल नियम खुद न लिखें; NetworkManager में import की गई ऐसी फ़ाइल जो बंद हो जाए, ट्रैफ़िक को सीधे सामान्य नेटवर्क पर वापस भेज देती है। कोई DNS प्रबंधन नहीं होता, सिवाय फ़ाइल की DNS लाइन के, और ऐसी लाइन के बिना फ़ाइल पहली troubleshooting जाँच में मिलने वाला leak है। कोई server picker नहीं होता: हर फ़ाइल एक एग्ज़िट होती है और एग्ज़िट बदलने का अर्थ दूसरी फ़ाइल लेना है। फ़ाइलें अकाउंट क्षेत्र से बनाएँ और उन्हें निजी रखें: WireGuard फ़ाइल में वह private key होती है जो प्रदाता के लिए आपकी पहचान है।
यह रास्ता सर्वर, headless मशीन या ऐसे वितरण के लिए सही है जिसे क्लाइंट support नहीं करता। लैपटॉप पर क्लाइंट को प्राथमिकता दें; वह switch ऐसी चीज़ है जो कॉन्फ़िगरेशन फ़ाइल नहीं दे सकती।
जब यह काम न करे
Tunnel चालू है, लेकिन DNS अब भी मेरे इंटरनेट प्रदाता के पास जा रहा है
यह Linux का सामान्य leak है। DNS सेट न करने वाली कॉन्फ़िगरेशन फ़ाइल systemd-resolved को tunnel के बाहर, नेटवर्क द्वारा दिए गए resolver का इस्तेमाल करने देती है। resolvectl status चलाएँ: tunnel इंटरफ़ेस में प्रदाता का resolver दिखना चाहिए और DNS का default route होना चाहिए, जिसे plus sign से चिह्नित किया जाता है।
कॉन्फ़िगरेशन में DNS लाइन जोड़ें, या NetworkManager में कनेक्शन का DNS सेट करें और फिर से कनेक्ट करें। प्रदाता का अपना क्लाइंट यह काम खुद करता है, और उसे प्राथमिकता देने का यह एक कारण है।
Tunnel गिरते ही सब कुछ बंद हो जाता है, और यह परेशान करने वाला है
यह kill switch के ठीक से काम करने का संकेत है: गिरा हुआ tunnel सामान्य नेटवर्क पर चुपचाप लौटने के बजाय मृत कनेक्शन बन जाता है। Switch बंद करने के बजाय फिर से कनेक्ट करें।
यदि एक नेटवर्क पर यह अक्सर गिरता है और अन्य जगहों पर शायद ही कभी, तो protocol एक बार बदलकर नज़दीकी एग्ज़िट आज़माएँ। यदि उस नेटवर्क पर कोई भी protocol टिकता नहीं है, तो नेटवर्क VPN ट्रैफ़िक को रोक रहा है और यह गाइड यहीं समाप्त होती है।
क्लाइंट हर बार sudo या पासवर्ड माँगता है
नेटवर्क इंटरफ़ेस बनाना विशेषाधिकार वाला काम है, और जो क्लाइंट background service इंस्टॉल नहीं करता उसे हर बार पूछना पड़ता है। अधिकांश क्लाइंट एक ऐसी service इंस्टॉल करते हैं — root के रूप में चलने वाला daemon और उससे बात करने वाला डेस्कटॉप ऐप — इसलिए बार-बार आने वाला prompt बताता है कि service चल नहीं रही या सक्षम नहीं है।
systemctl status और प्रदाता के निर्देशों में दिए गए service नाम से जाँच करें, और इसे सक्षम करें ताकि यह बूट के समय शुरू हो।
टेस्ट पेज पर IPv6 पते दिखाई दे रहे हैं
Tunnel IPv4 ले जा रहा है, जबकि मशीन के पास इसके बाहर अब भी IPv6 route है, इसलिए IPv6 को प्राथमिकता देने वाली चीज़ें VPN के बाहर चली जाती हैं। जो प्रदाता IPv6 को tunnel नहीं करते, उन्हें इंटरफ़ेस पर इसे बंद करना चाहिए; बेहतर क्लाइंट ऐसा करते हैं।
यदि आपने connection किसी फ़ाइल से बनाया है, तो NetworkManager में कनेक्शन पर IPv6 बंद करें या sysctl से इसे बंद करें और फिर से जाँच करें। जो tunnel दूसरा address family खुला छोड़ देता है, वह आधा tunnel है।
वही चरण, दूसरी मशीनें
बाकी प्लेटफ़ॉर्म
हर प्लेटफ़ॉर्म की अपनी अलग गाइड होती है, न कि इसी पर एक टैब। इंस्टॉलर खुलते ही चरण अलग हो जाते हैं, और एक साथ तीन प्लेटफ़ॉर्म का जवाब देने वाला पेज किसी का भी ठीक से जवाब नहीं देता।