SSD Nodes Learn 8GB RAM — $66/साल
गाइड Matt Connorलेखक: Matt Connor · अपडेट किया गया: 2026-08-01

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 आपके लिए कब लागू होता है।

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

कोडबेस इतना छोटा है कि इसे पढ़ा जा सकता है। WireGuard प्रोजेक्ट के प्रोटोकॉल कार्यान्वयन में लगभग 4,000 lines of code हैं। OpenVPN का आकार OpenSSL library को शामिल करने पर छह अंकों तक पहुंच जाता है, जिस पर यह हर cryptographic operation के लिए निर्भर करता है। आकार महत्वपूर्ण है, क्योंकि हर line attack surface होती है। आप या आपका reviewer 100,000 lines नहीं पढ़ने वाले। 4,000 lines पढ़ना संभव है।

यह kernel में चलता है। WireGuard Linux के mainline में 5.6 से शामिल है। इसलिए Ubuntu 24.04 और Debian 13 में इसे compile करने की आवश्यकता नहीं होती। Packets को वहीं encrypt किया जाता है जहां वे पहले से मौजूद होते हैं, यानी kernel space में। उन्हें userspace process में भेजकर वापस लाने की आवश्यकता नहीं होती। किसी अन्य जांच से पहले यह जांचें:

sudo modprobe wireguard && echo ok

KVM VPS पर इसका output ok होता है। OpenVZ या LXC जैसे container virtualisation में, जो host kernel साझा करते हैं, यह Operation not supported के साथ fail होता है, क्योंकि जिस kernel का स्वामित्व आपका नहीं है उसमें module load नहीं किया जा सकता।

इसमें negotiate करने के लिए कुछ नहीं होता। WireGuard में एक fixed cipher suite है: data के लिए ChaCha20-Poly1305 और keys के लिए Curve25519। ऐसा कोई version नहीं है जिसे downgrade किया जा सके। गलत option चुनने की भी कोई संभावना नहीं है। OpenVPN हर client के साथ cipher और TLS (transport layer security) version negotiate करता है। यह flexibility है, लेकिन misconfiguration भी यहीं होती है। data-ciphers AES-256-GCM:AES-128-CBC के साथ छोड़ा गया server ऐसे client के लिए CBC cipher पर वापस चला जाएगा जो इससे बेहतर कुछ offer नहीं करता। Log में इसे problem के रूप में दर्ज नहीं किया जाएगा।

Port जवाब नहीं देता। जिस WireGuard packet की message authentication check fail होती है, उसे बिना किसी reply के drop कर दिया जाता है। इसलिए nmap -sU -p 51820 यह लौटाता है: open|filtered, चाहे कोई भी listening कर रहा हो या नहीं। TCP mode में OpenVPN server पहले TCP handshake पूरा करता है और उसके बाद तय करता है कि connection स्वीकार नहीं करना है। इससे scanner को यह साबित करने के लिए पर्याप्त जानकारी मिल जाती है कि वहां कुछ मौजूद है। tls-crypt के साथ UDP पर OpenVPN लगभग इतना ही शांत रहता है। इसलिए यह तर्क OpenVPN के विरुद्ध नहीं, बल्कि OpenVPN को TCP पर चलाने के विरुद्ध है।

Roaming के लिए अतिरिक्त लागत नहीं होती। WireGuard peer की पहचान उसके public key से होती है, उसके address से नहीं। आपका laptop home network से mobile hotspot पर जाता है और नए address से एक handshake भेजता है। इसके बाद server उस endpoint को update कर देता है जिस पर वह reply भेजता है। कुछ reconnect नहीं होता, क्योंकि connection वास्तव में कभी स्थापित ही नहीं था। OpenVPN float के साथ कुछ ऐसा ही कर सकता है। लेकिन client सामान्यतः पूरी TLS session को बंद करके फिर से बनाता है। इसी कारण lid खोलने के बाद OpenVPN में pause दिखाई देता है, जबकि WireGuard में नहीं।

2026 में गति: अंतर कम हो गया है

कई वर्षों तक गति के पक्ष में सही तर्क यह था कि OpenVPN हर पैकेट को userspace में कॉपी करके वहीं एन्क्रिप्ट करता था और फिर उसे वापस कॉपी करता था, जबकि WireGuard कभी kernel से बाहर नहीं जाता था। अब पूरी स्थिति ऐसी नहीं है। इस तथ्य को नज़रअंदाज़ करने वाली तुलना पुरानी हो चुकी है।

OpenVPN 2.7 फरवरी 2026 में upstream ovpn kernel module के समर्थन के साथ रिलीज़ हुआ। यह DCO (data channel offload) है: control channel userspace में रहता है और मुख्य data path kernel में चला जाता है। WireGuard हमेशा से लगभग इसी तरह काम करता आया है। इसका उपयोग करने के लिए पर्याप्त नए kernel और OpenVPN पर throughput एक ही श्रेणी में होता है, अलग श्रेणियों में नहीं। आपके सिस्टम पर वास्तव में क्या उपलब्ध है, यह जाँचें:

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

July 2026 तक stock Ubuntu 24.04 LTS में OpenVPN 2.6 मिलता है, 2.7 नहीं। ovpn module के लिए 2.7 आवश्यक है। उस release पर offload केवल पुराने openvpn-dco-dkms package के माध्यम से मिलता है। यह package चल रहे kernel के विरुद्ध out-of-tree module बनाता है और इसलिए हर kernel upgrade पर फिर से build होता है। यह एक ऐसा अतिरिक्त घटक है जो WireGuard में नहीं है।

DCO को अपनाने का कारण मानने से पहले उसकी सीमाएँ पढ़ें। यह केवल Layer 3 tunnels का समर्थन करता है। यह केवल AEAD ciphers स्वीकार करता है (associated data के साथ authenticated encryption: AES-GCM या ChaCha20-Poly1305)। यह compression का समर्थन नहीं करता। Server पर यह केवल topology subnet के साथ काम करता है। इनमें से हर सीमा OpenVPN की उस flexibility का एक हिस्सा हटा देती है, जो मूल रूप से उसका प्रमुख तर्क थी। तेज़ OpenVPN, WireGuard जैसा कॉन्फ़िगर किया गया OpenVPN है।

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

OpenVPN अभी भी कहाँ उपयोगी है

आपको TCP port 443 के माध्यम से बाहर निकलना है। WireGuard केवल UDP का उपयोग करता है और यह जानबूझकर ऐसा है। TCP mode उपलब्ध नहीं होगा। ऐसा hotel network या corporate proxy, जो केवल TCP 443 की अनुमति देता है, proto tcp-server और port 443 के साथ configured OpenVPN traffic को पारित करेगा, क्योंकि वह traffic सामान्य TLS session जैसा दिखाई देता है। उसी network को पार करने के लिए WireGuard को wstunnel या udp2raw जैसे wrapper की आवश्यकता होती है। इससे चलाने और patched रखने के लिए एक और process जुड़ जाता है। इस conflict पर ध्यान दें: यदि उस IP address पर कोई web server पहले से TCP 443 पर चल रहा है, तो दोनों में से एक को दूसरे port पर स्थानांतरित करना होगा।

आप पहले से certificate authority चलाते हैं। OpenVPN X.509 certificates से authentication करता है, इसलिए वह आपके पहले से संचालित PKI (public key infrastructure) में आसानी से जुड़ जाता है। Certificates अपने-आप expire होते हैं। किसी certificate को revoke करने के लिए उसे certificate revocation list में जोड़ना होता है, जिसे server crl-verify के माध्यम से पढ़ता है। WireGuard में certificates, expiry और revocation list की कोई अवधारणा नहीं है। किसी peer को हटाने के लिए server config को edit करके उसे reload करना पड़ता है। दस peers पर यह ठीक है। लेकिन audit requirement के साथ चार सौ peers पर certificate model आपके लिए वास्तविक प्रशासनिक काम करता है।

आपको केवल keys नहीं, बल्कि named users चाहिए। OpenVPN authentication को auth-user-pass-verify या openvpn-plugin-auth-pam.so जैसे plugin के माध्यम से किसी external system को सौंप सकता है। इसी तरह LDAP या one-time-password second factor जोड़ा जाता है। WireGuard में user की कोई अवधारणा नहीं है। कोई key या तो config में होती है या नहीं होती। यदि आपकी requirement है कि "Sara को अपने phone से code दर्ज करना होगा", तो WireGuard इसे अपने-आप लागू नहीं कर सकता।

आपको Layer 2 या किसी पुराने client की आवश्यकता है। dev tap के साथ OpenVPN Ethernet frames को bridge करता है। यह broadcast protocols और पुराने LAN games के लिए महत्वपूर्ण है। WireGuard केवल Layer 3 है और हमेशा ऐसा ही रहेगा। OpenVPN के ऐसे hardware और operating systems के लिए भी clients उपलब्ध हैं, जिन पर कभी WireGuard app नहीं चलेगा। ये दोनों कारण धीरे-धीरे कम महत्वपूर्ण हो रहे हैं। साथ ही, dev tap DCO के साथ incompatible है, इसलिए bridge का उपयोग करने पर आपको धीमा path अपनाना पड़ता है।

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

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 server पर हाँ, और काफी अंतर से, क्योंकि WireGuard kernel में encryption करता है, जबकि OpenVPN 2.6 हर packet को userspace process के माध्यम से भेजता है। OpenVPN 2.7 और Linux 6.16 के ovpn kernel module के साथ data path भी kernel में होता है, इसलिए दोनों समान श्रेणी में आ जाते हैं। अपने tunnel पर iperf3 चलाकर स्वयं मापें। Blog में दिए गए किसी आंकड़े पर निर्भर न करें, क्योंकि VPS पर सीमा आमतौर पर आपका CPU या bandwidth allowance होती है।

क्या WireGuard, TCP port 443 पर चल सकता है?

अपने आप नहीं। WireGuard को design के अनुसार केवल UDP के लिए बनाया गया है और TCP mode की कोई योजना नहीं है। केवल TCP 443 की अनुमति देने वाले network से गुजरने के लिए इसे wstunnel या udp2raw जैसे tunnel में लपेटना पड़ता है। इससे दोनों सिरों पर चलाने और patch करने के लिए एक process जुड़ जाता है। यदि यह restriction आपका सामान्य working environment है, तो proto tcp-server और port 443 के साथ OpenVPN अधिक सरल विकल्प है।

क्या OpenVPN अब insecure है?

नहीं। AEAD cipher जैसे AES-256-GCM और enabled tls-crypt वाला current OpenVPN एक विश्वसनीय VPN है। WireGuard के पक्ष में तर्क किसी और आधार पर है: OpenVPN में बहुत अधिक code और बहुत अधिक options होते हैं। इसलिए किसी थके हुए administrator के पास इसे गलत तरीके से configure करने के अधिक तरीके होते हैं। कम विकल्पों का अर्थ कम गलतियाँ है।

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

WireGuard। प्रत्येक device के लिए एक key pair, लगभग दस lines वाली एक config file, खुला हुआ एक UDP port और ऐसा handshake जो शुरू होने का पता चलने से पहले पूरा हो जाता है। OpenVPN तभी चुनें जब आप नियमित रूप से ऐसे networks से connect करते हों जो UDP को block करते हैं, या जब आपको किसी मौजूदा certificate authority या user directory के साथ integrate करना आवश्यक हो।