mesh VPN از آن ابزارهایی است که بیسروصدا همهچیز را سادهتر میکند: لپتاپ، سرور خانگی، گوشی و VPSهای شما، هر جا که باشند، همدیگر را روی آدرسهای خصوصی میبینند. ایراد mesh VPNهای میزبانیشده سرور هماهنگی است: یک شرکت نقشه همه دستگاههای شما را نگه میدارد. Headscale جایگزینی متنباز برای آن سرور کنترل است. آن را روی یک VPS کوچک اجرا کنید، از همان اپلیکیشنهای معمولی کلاینت استفاده کنید، و نقشه مال شما میشود.
اجزا چطور کنار هم قرار میگیرند
- Headscale (روی VPS شما) آدرسها را توزیع میکند، کلیدهای عمومی را پخش میکند و قوانین ACL شما را اعمال میکند.
- کلاینتها همان اپلیکیشنهای استاندارد Tailscale هستند که به سرور شما هدایت شدهاند.
- ترافیک از دستگاه به دستگاه از طریق WireGuard میرود. سرور کنترل هرگز آن را حمل نمیکند.
همین نکته آخر دلیل کار کردن یک پلن بسیار کوچک است: VPS فقط به درخواستهای هماهنگی کوچک پاسخ میدهد.
چه چیزهایی لازم دارید
- Nano-IP (۸ دلار در ماه): ۲ vCPU و ۱ گیگابایت RAM خیلی بیشتر از مصرف Headscale است.
- یک IPv4 اختصاصی و یک دامنه، مثلاً
hs.example.com. دستگاهها از طریق HTTPS با سرور کنترل حرف میزنند، پس VPS باید پورت ۴۴۳ ورودی را بپذیرد؛ پلنهای NAT نمیپذیرند (جزئیات).
نصب (Debian 12 / Ubuntu 24.04)
فایل .deb فعلی را از صفحه انتشارهای Headscale در GitHub بگیرید و نسخه را با آخرین نسخه جایگزین کنید:
HS_VER=0.26.1
wget -O headscale.deb \
"https://github.com/juanfont/headscale/releases/download/v${HS_VER}/headscale_${HS_VER}_linux_amd64.deb"
apt install -y ./headscale.deb caddy
/etc/headscale/config.yaml را ویرایش کنید؛ دو خط مهم اینها هستند:
server_url: https://hs.example.com
listen_addr: 127.0.0.1:8080
Caddy را برای HTTPS جلوی آن بگذارید:
cat > /etc/caddy/Caddyfile <<'EOF'
hs.example.com {
reverse_proxy 127.0.0.1:8080
}
EOF
systemctl enable --now headscale
systemctl reload caddy
یک کاربر و یک دستگاه اضافه کنید
headscale users create alice
headscale users list # note the user's ID
headscale preauthkeys create --user 1 --expiration 24h
نسخههای قدیمیتر در --user نام کاربر را به جای شناسه میگیرند؛ headscale preauthkeys create --help به شما میگوید نسخه شما کدام را انتظار دارد.
روی یک دستگاه لینوکسی:
tailscale up --login-server https://hs.example.com --authkey YOUR_KEY
روی گوشیها و رایانههای رومیزی، اپلیکیشن Tailscale اجازه میدهد در تنظیماتش یک سرور کنترل سفارشی تعیین کنید. headscale nodes list را روی VPS اجرا کنید؛ دستگاه شما باید آنجا باشد.
رلهها و عبور از NAT
بیشتر دستگاهها مستقیم وصل میشوند. وقتی دو دستگاه نتوانند (شبکههای موبایل سختگیر، NAT دوگانه)، ترافیک از یک رله DERP عبور میکند. به طور پیشفرض Headscale از رلههای عمومی Tailscale استفاده میکند که فقط بستههای رمزنگاریشده را میبینند. اگر نمیخواهید هیچ چیز خارجی در مسیر باشد، رله داخلی را در config.yaml فعال کنید (derp.server.enabled: true) و UDP 3478 را باز کنید. آن وقت ترافیک رلهشده از پهنای باند VPS شما حساب میشود.
محدودیتها، صادقانه
داشبورد وب رسمی وجود ندارد: کاربران، کلیدها و مسیرها دستورات خط فرمان هستند (بعد از دو بار انجام دادن، کار سادهای است). ویژگیهای جدیدتر سرویس میزبانیشده دیرتر به Headscale میرسند، اگر برسند. و سرور کنترل حالا مسئولیت شماست: اگر از کار بیفتد، اتصالهای موجود کار میکنند، اما دستگاههای جدید نمیتوانند بپیوندند و کلیدها تمدید نمیشوند. از آن پشتیبان بگیرید: کل وضعیت در /var/lib/headscale است.
برای یک آزمایشگاه خانگی، یک خانواده یا یک تیم کوچک که میخواهد نقشه دستگاههایش روی سرورهای دیگران نباشد، این یکی از بهترین کاربردهای یک VPS هشتدلاری است.
مرتبط
- خودمیزبانی WireGuard VPN: WireGuard ساده، اگر فقط یک تونل لازم دارید
- VPS برای VPN
- VPS برای دسترسی از راه دور به Home Assistant
نظرات
هنوز نظری نیست. اولین نفر باشید.