SSD Nodes Learn Hosting plans →
নির্দেশিকা Matt Connorদ্বারা Matt Connor

WireGuard বনাম OpenVPN: self-hosting-এর জন্য কোনটি?

গতি, প্রায় 10 লাইনের config ও প্রায় 4,000 লাইনের codebase-এর কারণে WireGuard এগিয়ে। তবে TCP port 443, CA, password বা Layer 2 bridging লাগলে OpenVPN বেছে নিন।

সংক্ষিপ্ত উত্তর

নিজের VPS-এ একজন ব্যবহারকারীর জন্য VPN server চালানোর ক্ষেত্রে WireGuard বনাম OpenVPN কোনো কঠিন প্রতিযোগিতা নয়: WireGuard বেছে নিন। এটি ছোট, Linux kernel-এর ভেতরে চলে, এক সেকেন্ডের ক্ষুদ্র ভগ্নাংশে সংযোগ স্থাপন করে, এবং একটি কার্যকর client config প্রায় দশ লাইনের। OpenVPN-এর চারটি বাস্তব কাজ আছে। এর কোনোটি যদি আপনার প্রয়োজন না হয়, তাহলে আপনার এটি দরকার নেই।

এই চারটি কাজ হলো শুধুমাত্র TCP port 443 অনুমোদন করে এমন network থেকে বের হওয়া, বিদ্যমান certificate authority-এর সঙ্গে সংযুক্ত হওয়া, password বা second factor দিয়ে নামযুক্ত ব্যবহারকারীদের authentication করা, এবং Layer 2-এ bridging করা। নিচের সবকিছু এই সুপারিশের প্রমাণ এবং প্রতিটি ব্যতিক্রম আপনার ক্ষেত্রে প্রযোজ্য হওয়ার সঠিক পরিস্থিতি ব্যাখ্যা করে।

self-hosting-এর জন্য WireGuard কেন এগিয়ে

Codebase পড়ার মতো ছোট। WireGuard project-এর protocol implementation প্রায় 4,000 lines of code। প্রতিটি cryptographic operation-এর জন্য OpenSSL library-এর ওপর নির্ভর করা OpenVPN-এর codebase OpenSSL ধরলে ছয় অঙ্কের হয়। Size গুরুত্বপূর্ণ, কারণ প্রতিটি line attack surface তৈরি করে, আর আপনি বা আপনার reviewer কেউই 100,000 lines পড়বেন না। 4,000 lines পড়া সম্ভব।

এটি kernel-এ চলে। WireGuard 5.6 থেকে mainline Linux-এ আছে। তাই Ubuntu 24.04 এবং Debian 13-এ compile করার কিছু নেই। Packet যেখানে থাকে, সেখানেই kernel space-এ encrypted হয়। userspace process-এ copy করে আবার ফেরত পাঠাতে হয় না। অন্য কিছুর আগে এটি পরীক্ষা করুন:

sudo modprobe wireguard && echo ok

KVM VPS-এ এটি ok দেখায়। OpenVZ বা LXC-এর মতো container virtualisation-এ, যেখানে host kernel share করা হয়, এটি Operation not supported দিয়ে ব্যর্থ হয়। কারণ আপনার নয় এমন kernel-এ আপনি module load করতে পারবেন না।

কিছু negotiate করার নেই। WireGuard-এর একটি fixed cipher suite আছে: data-এর জন্য ChaCha20-Poly1305 এবং key-এর জন্য Curve25519। Downgrade করার মতো কোনো version নেই। ভুল করার মতো কোনো option-ও নেই। OpenVPN প্রতিটি client-এর সঙ্গে cipher এবং TLS (transport layer security) version negotiate করে। এটি flexibility দেয়, কিন্তু misconfiguration-এর সুযোগও এখানেই থাকে। data-ciphers AES-256-GCM:AES-128-CBC রেখে দেওয়া server এমন client-এর জন্য CBC cipher-এ fallback করবে, যে এর চেয়ে ভালো কিছু দেয় না। Log দুর্বল cipher-টিকে সমস্যা হিসেবে চিহ্নিত করবে না। Data channel offload available থাকলে OpenVPN একটি note দেখায় যে CBC entry offload বন্ধ করে দিয়েছে। এটি speed সম্পর্কে warning, security সম্পর্কে নয়।

Port কোনো উত্তর দেয় না। Message authentication check ব্যর্থ হলে WireGuard packet কোনো reply ছাড়াই drop হয়। তাই nmap -sU -p 51820 কোনো WireGuard server এবং firewall নীরবে drop করছে এমন port-এর মধ্যে পার্থক্য করতে পারে না। উভয় ক্ষেত্রেই ফলাফল open|filtered। শুধু এমন unfiltered port, যেখানে কিছু listen করছে না, নিজেকে প্রকাশ করে। Kernel তখন ICMP port unreachable দিয়ে উত্তর দেয় এবং nmap সেটিকে closed হিসেবে report করে। OpenVPN server TCP mode-এ আপনাকে গ্রহণ করবে না তা নির্ধারণের আগে TCP handshake সম্পন্ন করে। Scanner-এর কাছে server উপস্থিত তা প্রমাণ করার জন্য এটিই যথেষ্ট। tls-crypt সহ UDP-তে OpenVPN প্রায় একইভাবে নীরব থাকে। তাই এটি OpenVPN-এর বিরুদ্ধে নয়, TCP-তে OpenVPN চালানোর বিরুদ্ধে যুক্তি।

Roaming বিনামূল্যে হয়। WireGuard peer-কে address দিয়ে নয়, public key দিয়ে শনাক্ত করা হয়। আপনার laptop home network থেকে mobile hotspot-এ যায়। নতুন address থেকে একটি handshake পাঠায়। Server যে endpoint-এ reply পাঠাবে, সেটি update করে। কোনো কিছু reconnect হয় না, কারণ কোনো কিছু কখনো connected ছিল না। OpenVPN float দিয়ে একই রকম কাজ করতে পারে। তবে client সাধারণত সম্পূর্ণ TLS session বন্ধ করে আবার তৈরি করে। এ কারণেই lid খোলার পর OpenVPN-এ pause বোঝা যায়, WireGuard-এ যায় না।

2026-এর গতি: ব্যবধান কমেছে

বহু বছর ধরে গতির পক্ষে প্রচলিত যুক্তি ছিল, OpenVPN প্রতিটি packet userspace-এ কপি করে সেখানে encrypt করত, তারপর আবার কপি করে ফিরিয়ে আনত; WireGuard কখনো kernel-এর বাইরে যেত না। এখন আর পুরো বিষয়টি এমন নয়। এটি উপেক্ষা করে করা তুলনা পুরোনো হয়ে গেছে।

OpenVPN 2.7 February 2026-এ upstream ovpn kernel module-এর support নিয়ে release হয়। এই module-টি Linux 6.16-এ merge করা হয়েছিল। এটি DCO (data channel offload): control channel userspace-এ থাকে, আর bulk data path kernel-এ চলে যায়। WireGuard শুরু থেকেই মোটামুটি এভাবেই কাজ করেছে। এটি ব্যবহারের জন্য যথেষ্ট নতুন kernel এবং OpenVPN থাকলে throughput ভিন্ন শ্রেণির নয়, একই শ্রেণির হয়। আপনার সিস্টেমে বাস্তবে কী আছে, তা পরীক্ষা করুন:

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

October 2026 অনুযায়ী stock Ubuntu 24.04 LTS-এ OpenVPN 2.6 থাকে, 2.7 নয়, এবং ovpn module-এর জন্য 2.7 প্রয়োজন। সেই release-এ আপনি শুধু পুরোনো openvpn-dco-dkms package-এর মাধ্যমে offload পাবেন। এটি চলমান kernel-এর বিপরীতে out-of-tree module build করে, তাই প্রতিটি kernel upgrade-এর পরে আবার build হয়। WireGuard-এ এমন অতিরিক্ত পরিবর্তনশীল উপাদান নেই। Ubuntu 26.04 LTS-এ OpenVPN 2.7.0 এবং Linux 7.0 kernel থাকে। দুটিই ovpn ব্যবহারের জন্য যথেষ্ট নতুন। তাই সেই release-এ উপরের modinfo line-টি পরীক্ষা করতে হবে।

DCO-কে OpenVPN ব্যবহারে থাকার কারণ হিসেবে গণনা করার আগে এর সীমাবদ্ধতাগুলো পড়ুন। এটি শুধু Layer 3 tunnel support করে। এটি শুধু AEAD cipher গ্রহণ করে (authenticated encryption with associated data: AES-GCM অথবা ChaCha20-Poly1305)। এটি compression support করে না। Server-এ এটি শুধু topology subnet-এর সঙ্গে কাজ করে। এই প্রতিটি সীমাবদ্ধতা OpenVPN-এর মূল flexibility-এর একটি অংশ সরিয়ে দেয়। দ্রুত OpenVPN হলো WireGuard-এর মতো করে configured OpenVPN।

এই page-সহ কারও প্রকাশিত throughput number-কে অন্ধভাবে বিশ্বাস করবেন না। VPS-এ সর্বোচ্চ গতি সাধারণত protocol-এর বদলে CPU allowance অথবা network allowance দ্বারা নির্ধারিত হয়। Tunnel-এর মধ্য দিয়ে iperf3 চালিয়ে নিজের গতি মাপুন। তারপর tunnel-এর বাইরে আবার মাপুন এবং দুটি ফল তুলনা করুন।

OpenVPN এখনও যেখানে কার্যকর

TCP port 443 দিয়ে সংযোগ বের করতে হবে। WireGuard শুধুমাত্র UDP ব্যবহার করে, ইচ্ছাকৃতভাবেই, এবং এর কোনো TCP mode আসছে না। শুধু port number দেখে filtering করা hotel network সাধারণত proto tcp-server ও port 443 দিয়ে configured OpenVPN-এর traffic পার হতে দেয়। এটিকে disguise মনে করবেন না: TCP-এর ওপর OpenVPN সাধারণ TLS session-এর বদলে নিজস্ব packet framing ব্যবহার করে। তাই HTTPS inspect বা terminate করা corporate firewall অথবা proxy এটিকে শনাক্ত করে block করতে পারে। একই network পার হতে WireGuard-এর সঙ্গে wstunnel অথবা udp2raw-এর মতো wrapper দরকার হয়। এতে চালানো এবং patched রাখা আরও একটি process যোগ হয়। Conflict-টি মনে রাখুন: ওই IP address-এ কোনো web server যদি ইতিমধ্যে TCP 443 দখল করে থাকে, তাহলে দুটির একটিকে অন্য port-এ নিতে হবে।

আপনি ইতিমধ্যে একটি certificate authority চালান। OpenVPN X.509 certificate দিয়ে authentication করে। তাই এটি আপনার পরিচালিত PKI (public key infrastructure)-তে সরাসরি যুক্ত হয়। Certificate নিজে থেকে expire হয়। কোনো certificate revoke করতে সেটিকে certificate revocation list-এ যোগ করুন, যা server crl-verify ব্যবহার করে পড়ে। WireGuard-এ certificate, expiry বা revocation list—কোনোটিই নেই। কোনো peer সরাতে server config সম্পাদনা করে সেটি reload করতে হয়। দশটি peer হলে এটি সমস্যা নয়। কিন্তু audit requirement-সহ চারশো peer হলে certificate model বাস্তব কাজ করে।

শুধু key নয়, named user দরকার। OpenVPN auth-user-pass-verify অথবা openvpn-plugin-auth-pam.so-এর মতো plugin ব্যবহার করে authentication একটি external system-এর কাছে হস্তান্তর করতে পারে। এভাবেই LDAP বা one-time-password second factor যুক্ত করা হয়। WireGuard-এ user-এর কোনো concept নেই। কোনো key হয় config-এ আছে, নয়তো নেই। আপনার requirement যদি হয় “Sara-কে তার phone থেকে একটি code দিতে হবে”, তাহলে WireGuard একা এটি প্রকাশ করতে পারে না।

Layer 2 অথবা পুরোনো কোনো client দরকার। dev tap ব্যবহার করে OpenVPN Ethernet frame bridge করে। Broadcast protocol এবং পুরোনো LAN game-এর জন্য এটি গুরুত্বপূর্ণ। WireGuard শুধুমাত্র Layer 3 এবং সবসময় তা-ই থাকবে। এমন hardware এবং operating system-এর জন্যও OpenVPN client রয়েছে, যেখানে কখনো WireGuard app পাওয়া যাবে না। এই দুই কারণের গুরুত্ব কমছে। আর dev tap DCO-এর সঙ্গে incompatible। তাই bridge ব্যবহার করলে ধীর পথই বেছে নিতে হয়।

দুটি সেটআপের প্রকৃত খরচ

WireGuard-এর একটি identity তৈরি করতে একটি কমান্ডই যথেষ্ট। বন্ধনীগুলো গুরুত্বপূর্ণ, কারণ 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

কোনো তালিকাই অন্যায্য নয়। CA আপনাকে expiry এবং revocation সুবিধা দেয়। এর বিনিময়ে আপনাকে এমন একটি private key বহু বছর সুরক্ষিত রাখতে হবে, renewal মনে রাখতে হবে এবং key হারালে পুনর্নির্মাণ করতে হবে। এটি যে সুবিধাগুলো দেয়, সেগুলো ব্যবহার না করলে আপনি অপ্রয়োজনীয় খরচ করছেন। forwarding, NAT (network address translation) এবং একটি বিকেল নষ্ট করে দেওয়া handshake failure-সহ সম্পূর্ণ WireGuard পদ্ধতিটি আপনার VPS-এ নিজস্ব WireGuard VPN হোস্ট করার নির্দেশিকায় রয়েছে।

প্রতিটি VPN আপনার ফায়ারওয়ালের কাছে কী চায়

WireGuard-এর জন্য শুধু একটি inbound rule প্রয়োজন। এটি ListenPort-এ নির্ধারিত port-এর জন্য UDP ব্যবহার করবে:

sudo ufw allow 51820/udp
sudo ufw status verbose

OpenVPN-এর জন্য ডিফল্টভাবে UDP 1194 প্রয়োজন। আপনি সেই পদ্ধতি বেছে নিলে TCP 443 প্রয়োজন হবে। এরপর উভয়ের জন্য IP forwarding চালু করতে হবে এবং একটি source NAT rule যোগ করতে হবে। কারণ Linux box-এ যার উদ্দেশে প্যাকেট পাঠানো হয়নি, সেটি সেই প্যাকেট drop করে। দুটি protocol-এর ক্ষেত্রেই এই অংশ একই। “tunnel সংযুক্ত হয়, কিন্তু internet নেই”—এ ধরনের সমস্যার অধিকাংশ রিপোর্টের কারণও এটি। ufw আপনার কাছে নতুন হলে VPS-এ ufw firewall-এর প্রাথমিক বিষয়গুলো দিয়ে শুরু করুন। মনে রাখবেন, অধিকাংশ provider তাদের control panel-এ একটি দ্বিতীয় network firewall চালায়। server-এ যোগ করা rule কোনো কাজে আসবে না, যদি packet server-এ পৌঁছাতেই না পারে। port কী এবং Linux কীভাবে তাতে listen করে তা বোঝা—এই দুই পরীক্ষা দ্রুত সম্পন্ন করতে সাহায্য করে।

এক অনুচ্ছেদে কীভাবে নির্বাচন করবেন

আপনার নির্দিষ্ট কোনো প্রয়োজন WireGuard পূরণ করতে পারে না—এমন কারণ উল্লেখ করতে না পারলে WireGuard চালান। কোনো বিধিনিষেধযুক্ত নেটওয়ার্ক থেকে বের হতে TCP 443 প্রয়োজন হলে সেখানে OpenVPN চালান। দুটিই চালানোর কথাও বিবেচনা করতে পারেন: এগুলো ভিন্ন port ব্যবহার করে এবং কোনো সংঘাত ছাড়াই একই server-এ সহাবস্থান করে। প্রতি ব্যবহারকারীর account বা দ্বিতীয় factor প্রয়োজন হলে WireGuard-এ জোর করে তা যোগ করার চেষ্টা করবেন না। এর পরিবর্তে WireGuard-এর উপরে একটি identity layer বসান। নিজে হোস্ট করা Headscale control server ভিতরে WireGuard ব্যবহার করে এবং account model, key distribution ও device approval যোগ করে—যেগুলো plain WireGuard নিজে পরিচালনার দায়িত্ব আপনার ওপর ছেড়ে দেয়।

OpenVPN থেকে আউটেজ ছাড়াই স্থানান্তর

কোনও রূপান্তর নেই। OpenVPN-এর PKI WireGuard-এর কী-তে রূপান্তরিত হয় না, কারণ WireGuard-এ রূপান্তর করার মতো কোনও certificate নেই। প্রতিটি client নতুন key pair পায়, যা server-এর key pair-এর মতো একই পদ্ধতিতে তৈরি করা হয়।

পরিষেবা পরিবর্তন না করে সমান্তরালভাবে স্থানান্তর করুন। UDP 51820-এ WireGuard এবং 1194-এ OpenVPN একই box-এ একই সময়ে চলতে পারে। তাই wg0 চালু করুন, sudo wg show দিয়ে সাম্প্রতিক latest handshake তালিকাভুক্ত হয়েছে কিনা নিশ্চিত করুন, তারপর একবারে একটি করে client স্থানান্তর করুন। OpenVPN peer list-এ আর পরিবর্তন না হলে sudo systemctl disable --now openvpn-server@server দিয়ে service বন্ধ করুন। নিশ্চিত না হওয়া পর্যন্ত CA files রেখে দিন, কারণ মুছে ফেলা CA-তে revoked client পুনর্নির্মাণ করা সম্ভব নয়।

একটি বিষয় সত্যিই স্থানান্তরিত হয় না: আপনার username এবং password account, এবং সেগুলোর সঙ্গে থাকা revocation trail। পুরনো server বন্ধ করার আগে এটি কোথায় থাকবে তা নির্ধারণ করুন, পরে নয়।

FAQ

WireGuard কি OpenVPN-এর চেয়ে দ্রুত?

একটি stock Ubuntu 24.04 সার্ভারে, হ্যাঁ—এবং ব্যবধান অনেক। কারণ WireGuard kernel-এ encryption করে, কিন্তু OpenVPN 2.6 প্রতিটি packet userspace process-এর মধ্য দিয়ে পাঠায়। OpenVPN 2.7 এবং Linux 6.16-এর ovpn kernel module ব্যবহার করলে data path-ও kernel-এ থাকে, তাই দুটিই একই শ্রেণির performance দেয়। কোনো blog-এর সংখ্যা বিশ্বাস না করে tunnel-এর মধ্য দিয়ে iperf3 চালিয়ে নিজের পরিবেশে মাপুন। VPS-এ সীমা সাধারণত CPU অথবা bandwidth allowance নির্ধারণ করে।

WireGuard কি TCP port 443-এর মাধ্যমে চালানো যায়?

নিজে থেকে নয়। নকশাগতভাবে WireGuard শুধু UDP ব্যবহার করে, এবং TCP mode চালুর কোনো পরিকল্পনা নেই। শুধু TCP 443 অনুমোদন করে এমন network অতিক্রম করতে হলে WireGuard-কে wstunnel বা udp2raw-এর মতো একটি tunnel-এর মধ্যে চালাতে হবে। এতে উভয় প্রান্তে চালানো ও patch করার জন্য অতিরিক্ত একটি process লাগে। এই সীমাবদ্ধতা যদি আপনার নিয়মিত কাজের পরিবেশ হয়, তবে শুধু port-ভিত্তিক filtering করা network-এ OpenVPN-এর সঙ্গে proto tcp-server এবং port 443 ব্যবহার করা সহজ সমাধান। তবে HTTPS পরিদর্শন করা কোনো proxy এটি শনাক্ত করে block করতে পারে।

OpenVPN কি এখন insecure?

না। AES-256-GCM-এর মতো একটি AEAD cipher এবং সক্রিয় tls-crypt-সহ বর্তমান OpenVPN একটি নির্ভরযোগ্য VPN। WireGuard বেছে নেওয়ার কারণ অন্য। OpenVPN-এ অনেক বেশি code এবং অনেক বেশি option আছে। তাই ক্লান্ত administrator-এর জন্য এটি ভুলভাবে configure করার আরও অনেক সুযোগ তৈরি করে। কম choice মানে ভুলের সুযোগও কম।

VPS-এ ব্যক্তিগত VPN-এর জন্য কোনটি বেছে নেওয়া উচিত?

WireGuard। প্রতিটি device-এর জন্য একটি key pair, প্রায় দশ লাইনের একটি config file, খোলা একটি UDP port এবং এমন একটি handshake, যা শুরু হয়েছে বুঝে ওঠার আগেই শেষ হয়ে যায়। শুধু তখনই OpenVPN বেছে নিন, যদি আপনাকে নিয়মিত এমন network থেকে connect করতে হয় যেখানে UDP block করা হয়, অথবা বিদ্যমান কোনো certificate authority বা user directory-এর সঙ্গে সামঞ্জস্য বজায় রাখা বাধ্যতামূলক হয়।