SSD Nodes Learn Hosting plans →
गाइड Matt Connorलेखक: Matt Connor · अपडेट किया गया: 2026-10-30

WireGuard या OpenVPN: self-hosting के लिए कौन बेहतर है?

अधिकांश self-hosters के लिए WireGuard तेज़, छोटा और audit में आसान है। जानें 4 मामले जब OpenVPN बेहतर है, जैसे TCP 443, CA और Layer 2 bridging।

संक्षिप्त उत्तर

अपने VPS पर VPN server चलाने वाले एक व्यक्ति के लिए WireGuard और OpenVPN के बीच मुकाबला बराबरी का नहीं है: WireGuard चुनें। इसका codebase छोटा है, यह Linux kernel के अंदर चलता है, यह एक सेकंड के छोटे से अंश में connect हो जाता है, और एक काम करने वाला client config लगभग दस पंक्तियों का होता है। OpenVPN के चार वास्तविक उपयोग हैं। यदि इनमें से कोई भी आपकी आवश्यकता नहीं है, तो आपको OpenVPN की जरूरत नहीं है।

वे चार उपयोग हैं: ऐसे network से बाहर निकलना जो केवल TCP port 443 की अनुमति देता है, किसी मौजूदा certificate authority से जुड़ना, password या second factor से नामित users को authenticate करना, और Layer 2 पर bridging करना। नीचे इस recommendation के पीछे के प्रमाण दिए गए हैं। साथ ही, यह भी बताया गया है कि इनमें से प्रत्येक exception आपके लिए कब लागू होता है।

WireGuard self-hosters के लिए क्यों बेहतर है

इसका कोडबेस इतना छोटा है कि इसे पढ़ा जा सकता है। WireGuard प्रोजेक्ट का प्रोटोकॉल इम्प्लीमेंटेशन लगभग 4,000 लाइनों का है। OpenVPN का कोडबेस छह अंकों में है, यदि आप उस OpenSSL लाइब्रेरी को भी गिनें जिस पर यह हर क्रिप्टोग्राफिक ऑपरेशन के लिए निर्भर है। आकार मायने रखता है क्योंकि हर लाइन एक attack surface है, और न तो आप और न ही आपका कोई reviewer 100,000 लाइनें पढ़ पाएगा। आप 4,000 लाइनें पढ़ सकते हैं।

यह kernel में चलता है। WireGuard 5.6 वर्ज़न से ही mainline Linux का हिस्सा है, इसलिए Ubuntu 24.04 और Debian 13 इसे बिना किसी compilation के साथ देते हैं। पैकेट्स वहीं encrypt होते हैं जहाँ वे पहले से मौजूद हैं, यानी kernel space में। इसमें डेटा को userspace प्रोसेस में कॉपी करने और वापस भेजने की आवश्यकता नहीं होती। इसे सबसे पहले यहाँ चेक करें:

sudo modprobe wireguard && echo ok

एक KVM VPS पर यह ok प्रिंट करता है। कंटेनर वर्चुअलाइजेशन पर जो host kernel साझा करता है, जैसे कि OpenVZ या LXC, यह Operation not supported के साथ विफल हो जाता है, क्योंकि आप उस kernel में मॉड्यूल लोड नहीं कर सकते जो आपका नहीं है।

इसमें negotiate करने के लिए कुछ नहीं है। WireGuard में एक फिक्स्ड cipher suite है: डेटा के लिए ChaCha20-Poly1305, और Curve25519 keys के साथ। इसमें कोई ऐसा वर्ज़न नहीं है जिसे downgrade किया जा सके और न ही कोई ऐसा विकल्प है जिसे आप गलत चुन सकें। OpenVPN हर क्लाइंट के साथ cipher और TLS (transport layer security) वर्ज़न को negotiate करता है। यह लचीलापन तो है, लेकिन यहीं पर गलत configuration की संभावना भी रहती है। यदि कोई सर्वर data-ciphers AES-256-GCM:AES-128-CBC के साथ छोड़ दिया जाए, तो वह खुशी-खुशी उस क्लाइंट के लिए CBC cipher पर वापस चला जाएगा जो इससे बेहतर कुछ ऑफर नहीं करता, और लॉग इस कमजोर cipher को समस्या के रूप में फ्लैग नहीं करता। जहाँ डेटा चैनल ऑफलोड उपलब्ध होता है, OpenVPN एक नोट प्रिंट करता है कि CBC एंट्री ने ऑफलोड बंद कर दिया है, जो गति के बारे में एक चेतावनी है, सुरक्षा के बारे में नहीं।

पोर्ट कोई जवाब नहीं देता। एक WireGuard पैकेट जो अपना message authentication चेक पास नहीं कर पाता, उसे बिना किसी जवाब के ड्रॉप कर दिया जाता है। इसलिए nmap -sU -p 51820 एक WireGuard सर्वर और उस पोर्ट के बीच अंतर नहीं बता सकता जिसे आपका firewall चुपचाप ड्रॉप करता है: दोनों ही मामलों में open|filtered परिणाम मिलता है। केवल एक unfiltered पोर्ट जिस पर कुछ भी listen नहीं कर रहा, वह खुद को उजागर कर देता है, क्योंकि kernel ICMP port unreachable के साथ जवाब देता है और nmap इसे closed के रूप में रिपोर्ट करता है। TCP मोड में एक OpenVPN सर्वर यह तय करने से पहले कि आप स्वागत योग्य नहीं हैं, TCP handshake पूरा करता है, जो एक स्कैनर को यह साबित करने के लिए पर्याप्त है कि वहाँ कुछ चल रहा है। UDP पर OpenVPN, tls-crypt के साथ लगभग उतना ही शांत रहता है, इसलिए यह तर्क OpenVPN के खिलाफ नहीं, बल्कि OpenVPN को TCP पर चलाने के खिलाफ है।

Roaming मुफ्त है। एक WireGuard peer की पहचान उसके public key से होती है, न कि उसके एड्रेस से। आपका लैपटॉप घर से मोबाइल हॉटस्पॉट पर जाता है, नए एड्रेस से एक handshake भेजता है, और सर्वर उस endpoint को अपडेट कर देता है जिस पर वह जवाब देता है। कुछ भी reconnect नहीं होता क्योंकि कुछ भी कभी connected था ही नहीं। OpenVPN, float के साथ कुछ ऐसा ही कर सकता है, लेकिन क्लाइंट आमतौर पर एक पूर्ण TLS session को तोड़ता है और फिर से बनाता है। यही कारण है कि OpenVPN पर लैपटॉप का ढक्कन खोलने के बाद का पॉज़ महसूस होता है, जबकि WireGuard पर ऐसा नहीं होता।

2026 में गति: अंतर केवल kernel offload से कम होता है

वर्षों तक गति के मामले में यह तर्क दिया जाता था कि OpenVPN हर packet को userspace में copy करता है, उसे वहाँ encrypt करता है और वापस भेजता है, जबकि WireGuard कभी kernel से बाहर नहीं निकलता। एक standard Ubuntu 24.04 सर्वर पर स्थिति अभी भी यही है और WireGuard काफी तेज है। 2026 में जो बदलाव आया है वह यह है कि OpenVPN अब अपने data path को kernel में ले जा सकता है, बशर्ते kernel और OpenVPN version दोनों इसका समर्थन करते हों। जो तुलना इस तथ्य को नजरअंदाज करती है, वह पुरानी हो चुकी है।

OpenVPN 2.7 को फरवरी 2026 में upstream ovpn kernel module के समर्थन के साथ release किया गया था, जिसे Linux 6.16 में merge किया गया था। यह DCO (data channel offload) है: control channel userspace में रहता है और bulk data path kernel में चला जाता है, जो लगभग वही है जो WireGuard हमेशा से करता आया है। यदि kernel और OpenVPN का version नया है, तो throughput लगभग समान स्तर पर होता है। जाँचें कि आपके पास वास्तव में क्या है:

uname -r
openvpn --version | head -n 1
modinfo ovpn 2>/dev/null | head -n 3

अक्टूबर 2026 तक, standard Ubuntu 24.04 LTS में OpenVPN 2.6 मिलता है, 2.7 नहीं, और ovpn module के लिए 2.7 की आवश्यकता होती है। उस release पर आपको offload केवल पुराने openvpn-dco-dkms package के माध्यम से मिलता है, जो आपके चल रहे kernel के विरुद्ध एक out-of-tree module बनाता है और इसलिए हर kernel upgrade पर इसे फिर से build करना पड़ता है। यह एक अतिरिक्त जटिलता है जो WireGuard में नहीं होती। Ubuntu 26.04 LTS में OpenVPN 2.7.0 और Linux 7.0 kernel मिलता है, जो ovpn के लिए पर्याप्त नए हैं, इसलिए उस release पर ऊपर दी गई modinfo line ही जाँचने योग्य है।

DCO को अपना आधार बनाने से पहले उसकी बारीकियों को समझें। यह केवल Layer 3 tunnels का समर्थन करता है, यह केवल AEAD ciphers (authenticated encryption with associated data: AES-GCM या ChaCha20-Poly1305) स्वीकार करता है, यह compression का समर्थन नहीं करता है और सर्वर पर यह केवल topology subnet के साथ काम करता है। इनमें से प्रत्येक प्रतिबंध उस लचीलेपन को कम करता है जो मूल रूप से OpenVPN की मुख्य विशेषता थी। Fast OpenVPN वही है जिसे WireGuard की तरह configure किया गया हो।

किसी के द्वारा प्रकाशित throughput के आंकड़ों पर भरोसा न करें, इस पृष्ठ पर दिए गए आंकड़ों पर भी नहीं। VPS पर गति की सीमा आमतौर पर CPU या network की क्षमता होती है, न कि protocol। tunnel के माध्यम से और फिर उसके बाहर iperf3 चलाकर स्वयं मापें और दोनों की तुलना करें।

जहाँ OpenVPN आज भी उपयोगी है

आपको TCP port 443 के माध्यम से बाहर निकलने की आवश्यकता है। WireGuard केवल UDP पर काम करता है, और जानबूझकर इसमें कोई TCP मोड नहीं जोड़ा गया है। एक होटल नेटवर्क जो केवल पोर्ट नंबर के आधार पर फिल्टर करता है, वह आमतौर पर proto tcp-server और port 443 के साथ कॉन्फ़िगर किए गए OpenVPN को जाने देता है। इसे छिपाने का तरीका न समझें: TCP पर OpenVPN सामान्य TLS सत्र के बजाय अपने स्वयं के पैकेट फ्रेमिंग का उपयोग करता है। इसलिए, एक कॉर्पोरेट फायरवॉल या प्रॉक्सी जो HTTPS का निरीक्षण या उसे टर्मिनेट करता है, वह अभी भी इसे पहचान कर ब्लॉक कर सकता है। उसी नेटवर्क को पार करने के लिए WireGuard को wstunnel या udp2raw जैसे रैपर की आवश्यकता होती है, जो कि चलाने और पैच करने के लिए एक अतिरिक्त प्रक्रिया है। इस टकराव पर ध्यान दें: यदि उस IP पते पर कोई वेब सर्वर पहले से ही TCP 443 का उपयोग कर रहा है, तो दोनों में से किसी एक को अपना पोर्ट बदलना होगा।

आप पहले से ही एक certificate authority चला रहे हैं। OpenVPN X.509 प्रमाणपत्रों के साथ प्रमाणित करता है, इसलिए यह उस PKI (public key infrastructure) में आसानी से फिट हो जाता है जिसे आप पहले से संचालित कर रहे हैं। प्रमाणपत्र अपने आप समाप्त हो जाते हैं, और आप उन्हें एक certificate revocation list में जोड़कर रद्द कर सकते हैं जिसे सर्वर crl-verify के माध्यम से पढ़ता है। WireGuard में कोई प्रमाणपत्र, समाप्ति तिथि या revocation list नहीं होती है। किसी peer को हटाने का मतलब है सर्वर कॉन्फ़िगरेशन को संपादित करना और उसे पुनः लोड करना। दस peers के लिए यह ठीक है। चार सौ peers और ऑडिट की आवश्यकता होने पर, प्रमाणपत्र मॉडल आपके लिए वास्तविक कार्य करता है।

आपको केवल keys नहीं, बल्कि नामित उपयोगकर्ताओं (named users) की आवश्यकता है। OpenVPN auth-user-pass-verify या openvpn-plugin-auth-pam.so जैसे प्लगइन के साथ प्रमाणीकरण को बाहरी सिस्टम को सौंप सकता है, जिसके माध्यम से LDAP या one-time-password जैसे second factor जोड़े जाते हैं। WireGuard में उपयोगकर्ता की कोई अवधारणा ही नहीं है। एक key या तो कॉन्फ़िगरेशन में होती है या नहीं। यदि आपकी आवश्यकता यह है कि "Sara को अपने फोन से एक कोड दर्ज करना चाहिए", तो WireGuard इसे अपने आप पूरा नहीं कर सकता।

आपको Layer 2, या किसी पुराने सिस्टम के लिए क्लाइंट की आवश्यकता है। dev tap के साथ OpenVPN ईथरनेट फ्रेम को ब्रिज करता है, जो ब्रॉडकास्ट प्रोटोकॉल और पुराने LAN गेम्स के लिए महत्वपूर्ण है। WireGuard केवल Layer 3 पर काम करता है और हमेशा ऐसा ही रहेगा। OpenVPN के क्लाइंट ऐसे हार्डवेयर और ऑपरेटिंग सिस्टम पर भी उपलब्ध हैं जिनमें कभी WireGuard ऐप नहीं आएगा। ये दोनों कारण धीरे-धीरे कम हो रहे हैं, और dev tap, DCO के साथ असंगत है, इसलिए ब्रिज का उपयोग करते समय आपको धीमी गति का सामना करना पड़ता है।

ये दोनों सेटअप वास्तव में आपसे क्या लागत लेते हैं

WireGuard identity एक command है। Parentheses महत्वपूर्ण हैं, क्योंकि key बनने से पहले वे file mode सेट करते हैं:

(umask 077; wg genkey > private.key)
wg pubkey < private.key > public.key

OpenVPN का समकक्ष एक certificate authority है, जिसका स्वामित्व VPN के मौजूद रहने तक आपके पास रहता है:

sudo apt install -y easy-rsa
make-cadir ~/openvpn-ca
cd ~/openvpn-ca
./easyrsa init-pki
./easyrsa build-ca
./easyrsa gen-req server nopass
./easyrsa sign-req server server

इनमें से कोई भी list अनुचित नहीं है। CA आपको expiry और revocation की सुविधा देता है। इसके बदले आपको एक private key को वर्षों तक सुरक्षित रखना पड़ता है, renewal याद रखना पड़ता है, और key खोने पर rebuild करना पड़ता है। यदि आप CA की सुविधाओं का उपयोग नहीं कर रहे हैं, तो आप बिना लाभ के इसकी लागत चुका रहे हैं। Forwarding, NAT (network address translation) और handshake failures सहित पूरी WireGuard प्रक्रिया, जो आपका एक दोपहर का समय नष्ट कर सकती है, अपने VPS पर WireGuard VPN को self-host करने की guide में है।

प्रत्येक प्रोटोकॉल आपके फ़ायरवॉल से क्या मांगता है

WireGuard को केवल एक inbound rule चाहिए। यह ListenPort में दिए गए port के लिए UDP पर होना चाहिए:

sudo ufw allow 51820/udp
sudo ufw status verbose

OpenVPN को default रूप से UDP 1194 चाहिए। यदि आपने वह विकल्प चुना है, तो TCP 443 चाहिए। इसके बाद दोनों के लिए IP forwarding चालू करना और source NAT rule जोड़ना आवश्यक है। ऐसा इसलिए है क्योंकि Linux box उन packets को drop कर देता है जो उसके लिए addressed नहीं होते। दोनों protocols के लिए यह भाग समान है। अधिकतर "the tunnel connects but there is no internet" reports इसी समस्या के कारण आती हैं। यदि ufw आपके लिए नया है, तो VPS पर ufw firewall की मूल बातें से शुरू करें। यह भी याद रखें कि अधिकांश providers अपने control panel में दूसरा network firewall चलाते हैं। यदि packet server तक पहुंचता ही नहीं है, तो server पर जोड़ा गया rule कोई प्रभाव नहीं डालता। port क्या है और Linux उस पर कैसे listen करता है समझने से दोनों checks जल्दी पूरे किए जा सकते हैं।

एक अनुच्छेद में कैसे चुनें

WireGuard चलाएँ, जब तक आप उस विशिष्ट सुविधा का नाम न बता सकें जो यह आपके लिए उपलब्ध नहीं करा सकता। यदि प्रतिबंधित नेटवर्क से बाहर निकलने के लिए आपको TCP 443 चाहिए, तो वहाँ OpenVPN चलाएँ और दोनों चलाने पर विचार करें: वे अलग-अलग पोर्ट का उपयोग करते हैं और एक ही सर्वर पर बिना किसी टकराव के साथ चल सकते हैं। यदि आपको प्रति-उपयोगकर्ता account या second factor चाहिए, तो इसके लिए WireGuard को बाध्य न करें। इसके बजाय, इसके ऊपर identity layer रखें। Self-hosted Headscale control server अंदर से WireGuard का उपयोग करता है और account model, key distribution तथा device approval जोड़ता है, जिन्हें plain WireGuard में आपको स्वयं संभालना पड़ता है।

OpenVPN से बिना आउटेज के माइग्रेट करना

कोई रूपांतरण नहीं होता। OpenVPN का PKI, WireGuard keys में परिवर्तित नहीं होता, क्योंकि WireGuard में परिवर्तित करने के लिए certificates नहीं होते। हर client को नया key pair मिलता है, जिसे server की तरह ही generate किया जाता है।

स्विच करने के बजाय समानांतर रूप से माइग्रेट करें। WireGuard का UDP 51820 और OpenVPN का 1194 एक ही box पर एक साथ चलते हैं। इसलिए wg0 को शुरू करें, sudo wg show से हाल के latest handshake की listing दिखाकर इसकी पुष्टि करें, फिर clients को एक-एक करके स्थानांतरित करें। जब OpenVPN peer list में बदलाव होना बंद हो जाए, तो sudo systemctl disable --now openvpn-server@server से service रोक दें। CA files तब तक रखें, जब तक आप आश्वस्त न हो जाएँ, क्योंकि आपके द्वारा delete किए गए CA पर revoked client को फिर से बनाना संभव नहीं है।

एक चीज़ वास्तव में साथ नहीं आती: आपके username और password accounts, तथा उनसे संबंधित revocation trail। पुराने server को बंद करने से पहले तय करें कि यह जानकारी कहाँ रखी जाएगी, उसके बाद नहीं।

FAQ

क्या WireGuard, OpenVPN से तेज है?

एक स्टॉक Ubuntu 24.04 सर्वर पर, हाँ, और काफी बड़े अंतर से, क्योंकि WireGuard कर्नल में एन्क्रिप्शन करता है जबकि OpenVPN 2.6 हर पैकेट को userspace प्रोसेस के माध्यम से भेजता है। OpenVPN 2.7 और Linux 6.16 के ovpn कर्नल मॉड्यूल के साथ, डेटा पाथ भी कर्नल में होता है और दोनों एक ही श्रेणी में आ जाते हैं। किसी ब्लॉग के आंकड़ों पर भरोसा करने के बजाय iperf3 का उपयोग करके टनल के माध्यम से स्वयं मापें, क्योंकि VPS पर सीमा आमतौर पर आपकी CPU या बैंडविड्थ की उपलब्धता होती है।

क्या WireGuard को TCP पोर्ट 443 पर चलाया जा सकता है?

अपने आप में नहीं। WireGuard डिज़ाइन के अनुसार केवल UDP है, और किसी TCP मोड की योजना नहीं है। ऐसे नेटवर्क को पार करने के लिए जो केवल TCP 443 की अनुमति देता है, आपको इसे wstunnel या udp2raw जैसी टनल में रैप करना होगा, जो दोनों सिरों पर चलाने और पैच करने के लिए एक अतिरिक्त प्रोसेस जोड़ता है। यदि वह प्रतिबंध आपका सामान्य कार्य वातावरण है, तो केवल पोर्ट के आधार पर फिल्टर करने वाले नेटवर्क पर proto tcp-server और port 443 के साथ OpenVPN एक सरल उत्तर है, हालांकि HTTPS का निरीक्षण करने वाला प्रॉक्सी अभी भी इसे पहचान कर ब्लॉक कर सकता है।

क्या OpenVPN अब असुरक्षित है?

नहीं। AES-256-GCM जैसे AEAD सिफर और tls-crypt सक्षम के साथ एक वर्तमान OpenVPN एक सुरक्षित VPN है। WireGuard का पक्ष किसी और चीज पर टिका है: OpenVPN में बहुत अधिक कोड और बहुत अधिक विकल्प होते हैं, इसलिए यह एक थके हुए एडमिनिस्ट्रेटर को इसे गलत तरीके से कॉन्फ़िगर करने के कई और तरीके प्रदान करता है। कम विकल्पों का मतलब है कम गलतियाँ।

VPS पर पर्सनल VPN के लिए मुझे किसे चुनना चाहिए?

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

क्या यह लेख उपयोगी था?