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 করা। নিচের সবকিছু এই সুপারিশের প্রমাণ এবং প্রতিটি ব্যতিক্রম আপনার ক্ষেত্রে প্রযোজ্য হওয়ার সঠিক পরিস্থিতি ব্যাখ্যা করে।
স্বয়ং-হোস্টিং ব্যবহারকারীদের জন্য WireGuard কেন বিজয়ী
কোডবেসটি পড়ার মতো যথেষ্ট ছোট। WireGuard প্রকল্পের প্রোটোকল বাস্তবায়ন প্রায় 4,000 লাইনের কোড। OpenVPN-এর ক্ষেত্রে প্রতিটি ক্রিপ্টোগ্রাফিক অপারেশনের জন্য ব্যবহৃত OpenSSL লাইব্রেরি ধরলে কোডের পরিমাণ ছয় অঙ্কে পৌঁছে যায়। আকার গুরুত্বপূর্ণ, কারণ প্রতিটি লাইনই আক্রমণের পৃষ্ঠ বাড়ায়। আপনি বা আপনার পর্যালোচক কেউই 100,000 লাইন পড়বেন না। 4,000 লাইন পড়া সম্ভব।
এটি kernel-এ চলে। WireGuard 5.6 সংস্করণ থেকে mainline Linux-এর অংশ। তাই Ubuntu 24.04 এবং Debian 13-এ কিছু compile করার প্রয়োজন ছাড়াই এটি সরবরাহ করা হয়। প্যাকেট যেখানে আগে থেকেই থাকে, সেখানেই kernel space-এ এনক্রিপ্ট হয়। userspace process-এ নিয়ে আবার ফিরিয়ে আনার প্রয়োজন হয় না। অন্য যেকোনো কিছুর আগে এটি পরীক্ষা করুন:
sudo modprobe wireguard && echo okKVM VPS-এ এটি ok দেখায়। OpenVZ বা LXC-এর মতো host kernel ভাগ করা container virtualisation-এ এটি Operation not supported-সহ ব্যর্থ হয়, কারণ আপনার মালিকানাধীন নয় এমন kernel-এ আপনি module load করতে পারবেন না।
কিছু negotiate করার নেই। WireGuard-এর একটি নির্দিষ্ট cipher suite রয়েছে: ডেটার জন্য 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-এ এটিকে সমস্যা হিসেবে উল্লেখ করার মতো কিছু থাকবে না।
port কোনো উত্তর দেয় না। WireGuard-এর কোনো packet-এর message authentication check ব্যর্থ হলে কোনো উত্তর না দিয়েই তা বাতিল করা হয়। তাই কিছু listening করুক বা না করুক, nmap -sU -p 51820 open|filtered ফেরত দেয়। TCP mode-এ OpenVPN server আপনি অনুমোদিত নন বলে সিদ্ধান্ত নেওয়ার আগে TCP handshake সম্পন্ন করে। Scanner-এর কাছে এতে প্রমাণ হয় যে সেখানে কিছু রয়েছে। tls-crypt সহ UDP-তে OpenVPN প্রায় একই রকম নীরব। তাই এটি OpenVPN-এর বিরুদ্ধে নয়, TCP-তে OpenVPN চালানোর বিরুদ্ধে যুক্তি।
roaming বিনামূল্যে। WireGuard peer-কে তার address নয়, public key দিয়ে শনাক্ত করা হয়। আপনার laptop home network থেকে mobile hotspot-এ চলে যায়। নতুন address থেকে একটি handshake পাঠায়। Server তখন যে endpoint-এ উত্তর পাঠাবে, সেটি আপডেট করে। কিছু reconnect হয় না, কারণ কোনো কিছুই কখনো connected ছিল না। OpenVPN float দিয়ে একই ধরনের কাজ করতে পারে। তবে client সাধারণত সম্পূর্ণ TLS session বন্ধ করে আবার তৈরি করে। এ কারণেই lid-open করার পর OpenVPN-এ বিরতি লক্ষণীয় হয়, কিন্তু WireGuard-এ হয় না।
2026 সালের গতি: ব্যবধান কমেছে
বহু বছর ধরে গতির ক্ষেত্রে মূল যুক্তি ছিল, OpenVPN প্রতিটি packet userspace-এ কপি করে সেখানে encryption সম্পন্ন করে, তারপর আবার kernel-এ কপি করে। অন্যদিকে WireGuard কখনও kernel-এর বাইরে যায়নি। এখন আর পুরো বিষয়টি এমন নয়। এটি উপেক্ষা করা তুলনাটি পুরোনো করে দেয়।
OpenVPN 2.7 2026 সালের February মাসে upstream ovpn kernel module-এর সমর্থনসহ release হয়। এই module Linux 6.16-এ যুক্ত হয়েছে। এটি 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 32026 সালের July মাসে 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-এ এমন অতিরিক্ত পরিবর্তনশীল উপাদান নেই।
DCO-কে থাকার কারণ হিসেবে বিবেচনা করার আগে এর সীমাবদ্ধতাগুলো পড়ুন। এটি কেবল Layer 3 tunnel সমর্থন করে। এটি কেবল AEAD cipher গ্রহণ করে (associated data-সহ authenticated encryption: AES-GCM বা ChaCha20-Poly1305)। এটি compression সমর্থন করে না। Server-এ এটি কেবল topology subnet-এর সঙ্গে কাজ করে। এই প্রতিটি সীমাবদ্ধতা OpenVPN-এর মূল নমনীয়তার একটি অংশ সরিয়ে দেয়। দ্রুত OpenVPN হলো WireGuard-এর মতো করে configure করা OpenVPN।
এই page-সহ কারও প্রকাশিত throughput number বিশ্বাস করবেন না। VPS-এ সর্বোচ্চ গতি সাধারণত protocol নয়, CPU allowance বা network allowance দ্বারা নির্ধারিত হয়। tunnel-এর মধ্য দিয়ে iperf3 চালিয়ে নিজের গতি মাপুন। এরপর 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-এর দায়িত্ব যোগ হয়। এই সংঘাতটি মনে রাখুন: ওই IP address-এ কোনো web server যদি ইতিমধ্যে TCP 443 দখল করে থাকে, তাহলে দুটির একটিকে অন্য port-এ সরাতে হবে।
আপনি ইতিমধ্যে একটি certificate authority পরিচালনা করেন। OpenVPN X.509 certificates দিয়ে authentication করে, তাই এটি আপনার পরিচালিত বিদ্যমান PKI (public key infrastructure)-তে সরাসরি যুক্ত হয়। Certificates স্বয়ংক্রিয়ভাবে expire হয়। Server crl-verify ব্যবহার করে যে certificate revocation list পড়ে, তাতে একটি certificate যোগ করলেই সেটি revoke করা যায়। WireGuard-এ certificate, expiry বা revocation list কোনোটিই নেই। কোনো peer সরাতে হলে server config সম্পাদনা করে সেটি reload করতে হয়। দশটি peer হলে এটি সমস্যা নয়। কিন্তু audit requirement-সহ চারশো peer হলে certificate model আপনার জন্য বাস্তব কাজ করে।
আপনার শুধু keys নয়, named users প্রয়োজন। OpenVPN auth-user-pass-verify বা openvpn-plugin-auth-pam.so-এর মতো plugin ব্যবহার করে authentication একটি 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-এর জন্যও client সরবরাহ করে, যেগুলোতে কখনো WireGuard app পাওয়া যাবে না। এই দুটি কারণের গুরুত্ব কমছে। এছাড়া dev tap DCO-এর সঙ্গে incompatible, তাই bridge ব্যবহার করলে ধীর পথটি বেছে নিতে হয়।
দুটি সেটআপের প্রকৃত খরচ
WireGuard-এর একটি identity তৈরি করতে একটি কমান্ডই যথেষ্ট। বন্ধনীগুলো গুরুত্বপূর্ণ, কারণ key তৈরি হওয়ার আগেই এগুলো file mode নির্ধারণ করে:
(umask 077; wg genkey > private.key)
wg pubkey < private.key > public.keyOpenVPN-এর সমতুল্য ব্যবস্থা হলো একটি 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 verboseOpenVPN-এর জন্য ডিফল্টভাবে 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-এর চেয়ে দ্রুত?
একটি সাধারণ 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-এ থাকে, ফলে দুটির কর্মক্ষমতা একই শ্রেণিতে পড়ে। কোনো blog-এর সংখ্যার ওপর নির্ভর না করে tunnel-এর মধ্য দিয়ে iperf3 চালিয়ে নিজের পরিবেশে মাপুন। VPS-এ সীমা সাধারণত আপনার CPU অথবা bandwidth allowance নির্ধারণ করে।
WireGuard কি TCP port 443-এর ওপর চালানো যায়?
নিজে থেকে নয়। নকশাগতভাবে WireGuard কেবল UDP ব্যবহার করে, এবং TCP mode চালুর কোনো পরিকল্পনা নেই। শুধু TCP 443 অনুমোদন করে এমন network পার হতে হলে WireGuard-কে wstunnel বা udp2raw-এর মতো একটি tunnel-এর মধ্যে চালাতে হবে। এতে উভয় প্রান্তে চালানো এবং patch করার জন্য অতিরিক্ত একটি process যোগ হয়। এই সীমাবদ্ধতাই যদি আপনার স্বাভাবিক working environment হয়, তাহলে proto tcp-server এবং port 443-সহ OpenVPN সহজ সমাধান।
OpenVPN কি এখন নিরাপদ নয়?
না। AEAD cipher, যেমন AES-256-GCM, ব্যবহার করা এবং tls-crypt সক্রিয় থাকা বর্তমান OpenVPN একটি নির্ভরযোগ্য VPN। WireGuard বেছে নেওয়ার কারণ অন্যত্র। OpenVPN-এ অনেক বেশি code এবং অনেক বেশি option রয়েছে। তাই ক্লান্ত administrator-এর জন্য এটি ভুলভাবে configure করার সুযোগও অনেক বেশি তৈরি করে। বিকল্প কম হলে ভুলের সম্ভাবনাও কমে।
VPS-এ ব্যক্তিগত VPN-এর জন্য কোনটি বেছে নেওয়া উচিত?
WireGuard। প্রতি device-এর জন্য একটি key pair, প্রায় দশ লাইনের একটি config file, খোলা একটি UDP port, এবং এমন একটি handshake যা শুরু হয়েছে বুঝতে পারার আগেই শেষ হয়ে যায়। কেবল তখনই OpenVPN বেছে নিন, যখন আপনি নিয়মিত এমন network থেকে connect করেন যা UDP block করে, অথবা আগে থেকেই থাকা কোনো certificate authority কিংবা user directory-এর সঙ্গে সামঞ্জস্য বজায় রাখা আপনার জন্য বাধ্যতামূলক।