WireGuard, Tailscale या Headscale: VPS के लिए क्या चुनें?
Tailscale, WireGuard के ऊपर control plane जोड़ता है। जानें coordination server से क्या मिलता है, इसकी लागत क्या है और आपके VPS के लिए कौन सा विकल्प सही है।
WireGuard बनाम Tailscale: संक्षिप्त उत्तर
WireGuard बनाम Tailscale दो प्रोटोकॉल के बीच चुनाव नहीं है, क्योंकि Tailscale स्वयं WireGuard है। Tailscale उसी एन्क्रिप्शन और उसी टनल का उपयोग करता है, फिर एक control plane जोड़ता है: एक coordination server जो public keys का आदान-प्रदान करता है, addresses वितरित करता है, NAT (network address translation) के माध्यम से कनेक्शन स्थापित करता है और access policy लागू करता है। आप यह चुन रहे हैं कि इस coordination का कितना भाग स्वयं चलाना चाहते हैं।
इसके तीन स्पष्ट उत्तर हैं। जब आपके पास एक server और कुछ clients हों, जो सभी उससे कनेक्ट होते हों, तब plain WireGuard चलाएँ। जब आप चाहते हों कि हर machine बिना किसी config file को बनाए रखने के हर दूसरी machine तक पहुँच सके, तब Tailscale चलाएँ। जब आप वही mesh चाहते हों, लेकिन किसी third party को node list नहीं सौंपना चाहते हों, तब Headscale चलाएँ।
नियंत्रण प्लेन से आपको वास्तव में क्या मिलता है
Plain WireGuard में खोज सुविधा नहीं होती। प्रत्येक peer आपके द्वारा हाथ से लिखे गए पाठ का एक खंड होता है: एक public key, एक AllowedIPs line, और यदि वह peer पहुंच योग्य हो तो एक Endpoint। दस मशीनों वाले network में एक मशीन जोड़ने के लिए दस config files संपादित करनी पड़ती हैं, क्योंकि प्रत्येक side को दूसरी side की key चाहिए। इसी कारण लगभग सभी self-hosted WireGuard setup hub-and-spoke होते हैं: एक public IP वाला server और ऐसे clients जो केवल उसी से communicate करते हैं।
एक control plane इस संपादन की आवश्यकता हटा देता है। प्रत्येक node एक बार register होता है, 100.64.0.0/10 CGNAT (carrier grade NAT) range से एक address प्राप्त करता है, और उसे उन nodes की public keys दी जाती हैं जिन तक उसे पहुंचने की अनुमति है। Tunnel अभी भी दो peers के बीच direct WireGuard connection होता है, और आपका traffic coordination server से होकर कभी नहीं गुजरता। Server केवल metadata संभालता है: कौन मौजूद है, किसकी कौन-सी key है, और कौन किससे communicate कर सकता है।
इससे तीन ठोस सुविधाएं मिलती हैं।
NAT traversal। दो home routers के पीछे मौजूद दो laptops के बीच कोई public IP नहीं होता। Tailscale STUN (session traversal utilities for NAT) का उपयोग करके दोनों sides का बाहरी address और port खोजता है। इसके बाद दोनों sides एक ही समय पर packets भेजते हैं, ताकि प्रत्येक router पहले outgoing flow देखे और reply स्वीकार करे। जब यह विफल होता है, तो traffic DERP relay पर चला जाता है। यह Tailscale द्वारा संचालित encrypted relay है। Relay के माध्यम से आपका data end-to-end encrypted रहता है, क्योंकि relay के पास keys कभी नहीं होतीं। tailscale status चलाएं। प्रत्येक peer line में direct या relay लिखा होगा। यह देखने के लिए tailscale netcheck चलाएं कि कौन-सा relay सबसे निकट है और आपका network UDP की अनुमति देता है या नहीं।
Expiry के साथ key rotation। WireGuard keys कभी expire नहीं होतीं। तीन वर्ष पहले जारी की गई key हमेशा काम करती रहेगी, जब तक आप peer block को हाथ से delete नहीं करते। इसके बजाय Tailscale node keys को expire करता है। July 2026 तक, नए tailnet में default expiry period 180 days है। जिस machine ने दोबारा authentication नहीं किया है, वह connect करना बंद कर देती है। ऐसे server या subnet router के लिए आप प्रति device expiry बंद कर सकते हैं, जहां login करने के लिए कोई व्यक्ति उपलब्ध नहीं होगा।
Routing के बजाय policy। Plain WireGuard में AllowedIPs routing table और access control list दोनों का काम करता है। इसलिए “alice database तक पहुंच सकती है” को IP range के रूप में व्यक्त करना पड़ता है। Tailscale एक अलग policy file रखता है, जिसमें rules users, groups और tags के नाम लेते हैं। कोई rule यह बता सकता है कि tag:laptop को port 5432 पर tag:db तक पहुंच की अनुमति है और किसी अन्य resource तक नहीं। यह rule machine को नया address मिलने के बाद भी लागू रहता है।
नियंत्रण प्लेन की लागत
समन्वय सर्वर आपके नेटवर्क की जानकारी रखता है। इसमें हर नोड की public key, हर नोड का नाम, वितरित किए गए पते और नीति मौजूद रहती है। Hosted Tailscale का उपयोग करने पर यह सर्वर आपके नियंत्रण से बाहर की कंपनी के पास रहता है। वह आपके पैकेट पढ़ नहीं सकती, क्योंकि WireGuard private keys आपकी मशीनों पर ही रहती हैं। लेकिन आपके नेटवर्क की संरचना उसे दिखाई देती है। कनेक्ट करने की आपकी क्षमता इस बात पर निर्भर करती है कि उसकी सेवा चालू है और आपका खाता सही स्थिति में है।
एक दूसरी लागत भी है, जिसे आसानी से नज़रअंदाज़ किया जा सकता है। Tailscale हर मशीन पर daemon के रूप में चलता है। इसलिए आपको हर मशीन पर इस software के security patches लागू करने होंगे। Ubuntu 24.04 पर plain WireGuard distribution के साथ शामिल kernel module है और kernel के साथ update होता है।
तीसरी लागत billing है। July 2026 तक Personal plan अधिकतम 6 users के लिए unlimited devices के साथ free है। Standard की कीमत प्रति user प्रति month $8 है। Premium की कीमत प्रति user प्रति month $18 है। एक household free रहता है। दस लोगों की team free नहीं रहती।
जब plain WireGuard सही विकल्प है
जब topology वास्तव में hub and spoke हो, तब plain WireGuard चुनें। एक public IP वाला VPS, उससे connect होने वाले तीन या चार devices, और इन devices के एक-दूसरे तक पहुंचने की कोई आवश्यकता नहीं। Configuration एक screen में समा जाती है। इसे update करने के लिए कोई daemon नहीं होता। खोने के लिए कोई account नहीं होता। आपके और server के बीच कोई बाहरी service नहीं होती।
जब आप उस layer को समझना चाहते हैं जिस पर बाकी सब कुछ बना है, तब भी यह सही विकल्प है। VPS पर WireGuard VPN को self-host करना में key generation, wg0.conf, IP forwarding, NAT और handshake failures की प्रक्रिया बताई गई है। ये सभी mechanisms tailnet के नीचे अब भी चल रहे होते हैं। यदि आप अभी भी पुराने विकल्प पर विचार कर रहे हैं, तो WireGuard बनाम OpenVPN में उन चार स्थितियों का विवरण है जिनमें OpenVPN अब भी बेहतर रहता है।
Installation छोटी है:
sudo apt update && sudo apt install -y wireguard
sudo modprobe wireguard && echo okPlain WireGuard तब असुविधाजनक हो जाता है जब हर device को हर दूसरे device तक पहुंचना हो। N nodes वाले full mesh के लिए N times N minus one peer blocks की आवश्यकता होती है। छह devices पर ऐसे तीस blocks होते हैं जिन्हें आपको manually sync रखना पड़ता है। डुप्लिकेट AllowedIPs entry बिना कोई error दिखाए उस peer का traffic अपने पास ले लेती है जिसने उसे पहले प्राप्त किया था।
Tailscale सही विकल्प कब है
जब मशीनें अलग-अलग नेटवर्क पर चलती-फिरती हों, तब Tailscale चुनें। होटल के नेटवर्क पर लैपटॉप, मोबाइल डेटा का उपयोग करने वाला फोन, या ऐसे router के पीछे home server जिसे आप नियंत्रित नहीं करते। इन स्थितियों को plain WireGuard ठीक से संभाल नहीं पाता, क्योंकि किसी भी पक्ष के पास Endpoint में रखने के लिए स्थिर public endpoint नहीं होता।
क्लाइंट को official installer से एक command द्वारा install करें:
curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up
tailscale statustailscale up एक URL दिखाता है। उसे खोलें, login करें और मशीन network में शामिल हो जाती है। कॉपी करने के लिए कोई key नहीं होती और कोई inbound port खोलने की आवश्यकता नहीं होती, क्योंकि daemon coordination server से outbound connection बनाता है और उसे खुला रखता है। इसी कारण Tailscale node ऐसे network पर भी काम करता है, जहां आप किसी firewall को नियंत्रित नहीं करते।
इसके बाद दो settings अधिकांश उपयोगी काम करती हैं। Subnet router पूरे LAN को network में advertise करता है, इसलिए आपको हर device पर client install करने की आवश्यकता नहीं होती:
echo 'net.ipv4.ip_forward = 1' | sudo tee -a /etc/sysctl.d/99-tailscale.conf
echo 'net.ipv6.conf.all.forwarding = 1' | sudo tee -a /etc/sysctl.d/99-tailscale.conf
sudo sysctl -p /etc/sysctl.d/99-tailscale.conf
sudo tailscale set --advertise-routes=192.0.2.0/24जब तक आप admin console में route को approve नहीं करते, तब तक वह inactive रहता है। यह जानबूझकर ऐसा है: कोई node अपने-आप आपके network में route inject नहीं कर सकता। Linux clients को sudo tailscale set --accept-routes की भी आवश्यकता होती है, क्योंकि Linux डिफ़ॉल्ट रूप से advertised routes स्वीकार नहीं करता। इसलिए server side पर approved दिखने वाला route भी Linux laptop पर तब तक कोई प्रभाव नहीं डालता, जब तक आप इसे set नहीं करते।
Exit node किसी client का पूरा traffic एक मशीन के माध्यम से भेजता है। यही full tunnel behaviour है, जिसे लोग आम तौर पर "VPN" कहते हैं:
sudo tailscale set --advertise-exit-nodeHeadscale सही विकल्प कब है
Headscale coordination server का open source implementation है और यह आपके स्वामित्व वाले VPS पर चलता है। आधिकारिक Tailscale clients hosted service के बजाय इसे उपयोग करते हैं:
sudo tailscale up --login-server https://headscale.example.comData path में कोई बदलाव नहीं होता। यह अब भी WireGuard ही है और जहां network इसकी अनुमति देता है, peers के बीच सीधा connection अब भी बनता है। बदलाव केवल इतना है कि node list, keys और policy आपके स्वामित्व वाली disk पर SQLite file में रहती हैं। बाहर का कोई व्यक्ति आपके network की संरचना नहीं देख सकता, आपके account को disable नहीं कर सकता और आपसे प्रति user शुल्क नहीं ले सकता।
इसके लिए वास्तविक प्रशासनिक काम करना पड़ता है। अब आप एक public HTTPS service चला रहे हैं। इसके लिए DNS name, certificate और ऐसा reverse proxy चाहिए जो WebSocket upgrades को सही तरीके से forward करे। इसकी uptime की जिम्मेदारी आपकी है। Coordination server बंद होने पर नए nodes register नहीं कर सकते और मौजूदा nodes बदलावों की जानकारी प्राप्त नहीं कर सकते। Headscale अभी version 1.0 से पहले का software है और इसके minor releases में breaking changes आए हैं। इसलिए हर upgrade से पहले changelog पढ़ें। Headscale को अपने Tailscale control server के रूप में चलाना में installation, config.yaml, preauth keys और खोलने वाले ports की जानकारी है।
एक महत्वपूर्ण सीमा का पता अक्सर देर से चलता है। Headscale के साथ Tailscale का global relay network नहीं आता। जहां दो peers सीधे connect नहीं कर सकते, वहां आपको अपने server पर embedded relay enable करना होगा या config को किसी अन्य relay की ओर point करना होगा। वह relay एक ही region में मौजूद एक single box होगा, worldwide fleet नहीं। पृथ्वी के दूसरी ओर मौजूद peers को इसका प्रभाव महसूस होगा।
एक ही चरण में निर्णय कैसे लें
पूछें कि कितनी मशीनों को एक-दूसरे तक पहुंचना आवश्यक है। यदि उत्तर यह है कि वे सभी केवल server से संचार करती हैं, तो समान परिणाम के लिए plain WireGuard में कम software लगेगा।
पूछें कि क्या मशीनों के पास स्थिर public addresses हैं। यदि अधिकांश मशीनें ऐसे NAT के पीछे हैं जिसे आप नियंत्रित नहीं करते, तो आपको control plane चाहिए, क्योंकि hole punching कठिन भाग है और इसे फिर से बनाना उचित नहीं है।
पूछें कि आपके network की संरचना जानने की अनुमति किसे है। यदि उत्तर में बाहरी कंपनियां शामिल नहीं हैं, या आपके users की संख्या के कारण per seat billing महंगी पड़ती है, तो Headscale चलाएं और यह स्वीकार करें कि अब आपको control server संचालित करना होगा।
आप अपना निर्णय कम लागत पर बदल सकते हैं। तीनों विकल्पों में data plane एक ही protocol है। इसलिए plain WireGuard से coordinated mesh पर जाने के लिए केवल client install करना होगा, redesign नहीं। Tailscale से Headscale पर जाने के लिए प्रत्येक node को अलग login server के विरुद्ध फिर से register करना होगा।
तीनों में से कोई भी आपको क्या नहीं देता
इनमें से कोई भी firewall नहीं है। Tunnel यह तय करता है कि कौन से packets भेजे जाएँ, यह नहीं कि कौन सी services listen करें। Tunnel के माध्यम से पहुँच योग्य server इंटरनेट से अब भी उन सभी ports पर पहुँच योग्य है जिन्हें आपने खुला छोड़ा है। इसलिए VPS पर UFW firewall rules लागू रखें और उन्हें अपना कार्य करने दें। Tailscale की policy file यह सीमित करती है कि अन्य nodes किन संसाधनों तक पहुँच सकते हैं। इसका public interface पर कोई प्रभाव नहीं पड़ता।
इनमें से कोई भी प्रत्येक service के लिए authentication नहीं देता। इनमें से कोई भी connected होने के बाद user ने क्या किया, उसका audit trail नहीं देता। तीनों को केवल transport मानें। Login checks application में लागू करें।
FAQ
क्या Tailscale अतिरिक्त चरणों वाला केवल WireGuard है?
Tailscale डेटा पथ के लिए WireGuard प्रोटोकॉल का उपयोग करता है, इसलिए encryption और tunnel समान हैं। यह coordination जोड़ता है: key exchange, address assignment, STUN और DERP relays के साथ NAT traversal, key expiry, और ऐसी policy file जो IP ranges के बजाय users के नाम निर्दिष्ट करती है। Plain WireGuard में इन कार्यों की जिम्मेदारी आपकी होती है। जब machines अलग-अलग networks के बीच जाती हैं, तो यही कार्य कठिन हो जाते हैं।
क्या मेरा traffic Tailscale के servers से होकर जाता है?
सामान्यतः नहीं। Coordination server द्वारा peers का परिचय कराने के बाद वे सामान्यतः एक-दूसरे से सीधे connect होते हैं, और tailscale status उन peer lines पर direct दिखाता है। जब direct path स्थापित नहीं हो सकता, तो traffic DERP relay पर वापस चला जाता है और line में relay लिखा होता है। तब भी relay encrypted packets को forward करता है और आपके WireGuard private keys अपने पास नहीं रखता, इसलिए वह contents पढ़ नहीं सकता। यह देखने के लिए tailscale netcheck चलाएँ कि आपका network direct connections के लिए आवश्यक UDP को block कर रहा है या नहीं।
क्या मैं official Tailscale apps के साथ Headscale का उपयोग कर सकता हूँ?
हाँ। Headscale उसी control protocol पर कार्य करता है, इसलिए official clients sudo tailscale up --login-server https://headscale.example.com के साथ join करते हैं। Desktop और mobile apps को custom login server पर भी point किया जा सकता है। हालांकि, यह setting प्रत्येक platform पर अलग स्थान पर होती है, और mobile apps में किसी specific version की आवश्यकता होने की सबसे अधिक संभावना रहती है। पूरा network migrate करने से पहले एक phone पर test करें।
क्या Tailscale या Headscale के लिए ports खोलना अभी भी आवश्यक है?
Tailscale client को कोई inbound port आवश्यक नहीं होता, क्योंकि वह coordination server से outbound connection करता है और वह connection खुला रखता है। Self-hosted Headscale server के लिए inbound ports आवश्यक होते हैं: control protocol के लिए 443, HTTP-01 certificate challenge का उपयोग करने पर 80, और embedded relay enable करने पर ही 3478/udp। Plain WireGuard को अपना UDP listen port, सामान्यतः 51820, server पर और provider द्वारा चलाए जाने वाले किसी अलग network firewall पर open रखना आवश्यक है।
इन तीनों में सबसे तेज कौन है?
Throughput समान होता है, क्योंकि तीनों WireGuard के माध्यम से packets भेजते हैं। अंतर connection setup और path quality में दिखाई देता है। सही Endpoint के साथ Plain WireGuard हर बार direct connect होता है। Tailscale और Headscale अधिकांश समय direct connect होते हैं और जब network hole punching को block करता है, तो relay पर वापस चले जाते हैं। Relayed path latency बढ़ाता है। tailscale ping <node> से अपने path को measure करें। यह बताता है कि route direct है या relayed। आप tunnel के पार iperf3 से भी measure कर सकते हैं।