راهنماهای مرتبط
Tailscale از نزدیک: دستگاهها چطور مستقیم به هم وصل میشوند
بهروزرسانی
کار Tailscale را در یک جمله میشود گفت: به هر دستگاهی که دارید یک آدرس داخلی ثابت میدهد و بعد بین هر دو دستگاه یک تونل رمزگذاریشدهٔ WireGuard مستقیم میسازد، بدون اینکه ترافیک از یک سرور مرکزی رد شود. Tailscale سیستم شبکه را دو نیم کرده است: بخش کنترل فقط هویت را تأیید میکند، کلید میدهد و به هر دستگاه میگوید «دستگاههای دیگر الان کجا هستند»؛ بخش داده اتصال رمزگذاریشدهٔ نقطهبهنقطه بین خود دستگاههاست و ترافیک شما از سرور کنترل نمیگذرد. مشکل این است که دستگاههای خانه و اداره پشت روتر پنهاناند و آدرس عمومی ندارند؛ Tailscale با عبور از NAT آنها را مستقیم به هم وصل میکند و اگر واقعاً نشد، از رله کمک میگیرد. در ادامه به همین ترتیب توضیح میدهیم.
فرق VPN سنتی و Tailscale: ستارهای در برابر مش
VPN سنتی ستارهای است: همهٔ دستگاهها به یک سرور VPN وصل میشوند و وقتی دو دستگاه بخواهند با هم حرف بزنند، ترافیک اول به سرور میرود و بعد برمیگردد. سرور هم گلوگاه است و هم نقطهٔ شکست واحد: اگر کند باشد همه کندند و اگر از کار بیفتد همه قطع میشوند.
Tailscale مش (mesh) است: بین هر دو دستگاه یک تونل مستقیم وجود دارد. وقتی گوشی به NAS خانه وصل میشود، ترافیک مستقیم از گوشی به NAS میرود، از کوتاهترین راه بین آن دو. هیچ دستگاهی بار همهٔ ترافیک را به دوش نمیکشد.
بهای مش، پیچیدگی مدیریت است: ده دستگاه که دوبهدو به هم وصل شوند یعنی چهلوپنج تونل، و برای هر کدام باید کلید رد و بدل شود و هر طرف آدرس فعلی طرف دیگر را بداند. نگهداری دستیاش عملی نیست و تمام کار Tailscale خودکار کردن همین است.
بخش کنترل: فقط کلید و دفترچهٔ آدرس، بدون دست زدن به ترافیک
هر دستگاه بعد از نصب Tailscale خودش یک جفت کلید میسازد؛ کلید خصوصی همیشه روی دستگاه میماند و کلید عمومی به سرور کنترل (که Tailscale به آن coordination server میگوید) داده میشود. وقتی با حسابتان وارد میشوید، سرور کنترل میفهمد «این دستگاه مال کیست».
سرور کنترل یک جدول دارد: کلید عمومی هر دستگاه، آدرس داخلیای که گرفته، آدرس شبکهای که فعلاً از آن پیدا میشود، و قواعد دسترسی که میگویند چه کسی به چه کسی وصل شود. سطرهایی را که شما اجازهٔ دسترسی به آنها دارید برای دستگاهتان میفرستد؛ هر وقت دستگاهی آنلاین یا آفلاین شود یا شبکهاش عوض شود، جدول بهروز میشود و به دستگاههای مربوط فرستاده میشود.
سرور کنترل ترافیک شما را جابهجا نمیکند و به کلید خصوصی هم دسترسی ندارد، پس نمیتواند ارتباط بین دستگاهها را باز کند. مثل نگهبان پذیرشی است که فقط دفترچهٔ تلفن و کارت ورود میدهد: میگوید طرف کجاست و شما اجازهٔ ورود دارید یا نه، اما بعد از ورود چه گفته میشود، آنجا نیست.
ورود با حسابی است که از قبل دارید (ورود یکپارچه یا SSO)، نه یک رمز VPN جداگانه؛ کلید دستگاهها هر از چندی منقضی میشود و باید دوباره وارد شوید، و دستگاه گمشده را که از پنل حذف کنید دسترسیاش قطع میشود.
بخش داده: تونل WireGuard بین دستگاهها
داده را در واقع WireGuard جابهجا میکند. هر دستگاه وقتی کلید عمومی دستگاه دیگر را بگیرد، میتواند با آن یک تونل رمزگذاریشده بسازد؛ دو سر تونل کلید عمومی همدیگر را میشناسند و هیچکس در این میان نمیتواند داده را بخواند یا تغییر دهد.
Tailscale به بخش رمزگذاری WireGuard دست نزده است؛ کارهایی را انجام میدهد که خود WireGuard به آنها کاری ندارد: کلیدها چطور پخش شوند، آدرسها چطور تقسیم شوند و دستگاهی که شبکهاش عوض شده چطور دوباره پیدا شود. سازوکار WireGuard را در «WireGuard به زبان ساده» بخوانید.
هر دستگاه در این شبکه یک آدرس داخلی ثابت دارد (همان محدودهای که با 100 شروع میشود)؛ چه به اینترنت خانه وصل باشد، چه شبکهٔ اداره، چه اینترنت همراه، این آدرس عوض نمیشود. پس همیشه میتوانید با یک آدرس به NAS خانه برسید. با MagicDNS حتی میتوانید با نام دستگاه به آن وصل شوید.
عبور از NAT: دو دستگاه پشت روتر چطور مستقیم وصل میشوند
کامپیوتر خانه آدرس عمومی ندارد و برای بیرون رفتن، روتر آدرسش را ترجمه میکند (NAT). روتر فقط اتصالهایی را راه میدهد که «از داخل شروع شدهاند» و هر کسی را که از بیرون در بزند پشت در نگه میدارد. وقتی هر دو دستگاه پشت روتر خودشان باشند، هیچکدام نمیتواند اول در دیگری را باز کند؛ سختی اتصال نقطهبهنقطه همین است.
راه Tailscale سه مرحله دارد. اول، هر دستگاه از یک سرور روی اینترنت میپرسد «من را از کدام آدرس و کدام پورت میبینی»، تا بفهمد بیرون از روتر چه شکلی دارد (به این سرویسها STUN میگویند). دوم، دو دستگاه این آدرس بیرونی را از طریق سرور کنترل به هم میدهند. سوم، هر دو همزمان به آدرس بیرونی طرف مقابل بسته میفرستند: روتر هر طرف میبیند که «از داخل شروع شده» و راه برگشت را باز میکند، بستههای طرف مقابل درست از همین راه وارد میشوند و اتصال برقرار میشود. به این کار «سوراخ کردن NAT» (hole punching) میگویند.
این کار با UDP انجام میشود. بیشتر روترهای خانگی از پسش برمیآیند؛ اما بعضی شبکهها ترجمهٔ آدرس خیلی سختگیرانهای دارند (برای هر مقصد تازه یک پورت بیرونی تازه میدهند) یا اصلاً UDP را بستهاند، و آن وقت اتصال مستقیم برقرار نمیشود.
رله DERP: وقتی اتصال مستقیم جواب نمیدهد
سوراخ کردن NAT همیشه موفق نیست، برای همین Tailscale چند سرور رله به نام DERP آماده کرده است. اگر دو دستگاه فعلاً نتوانند مستقیم وصل شوند، هر دو به یک DERP وصل میشوند و DERP بستههای رمزگذاریشده را به طرف مقابل میرساند. DERP روی HTTPS (TCP 443) کار میکند که تقریباً هر شبکهای راهش را باز گذاشته است.
رله بستههایی را جابهجا میکند که از قبل با WireGuard رمزگذاری شدهاند؛ DERP کلید ندارد و فقط میبیند «چه کسی به چه کسی و چه حجمی» فرستاده، نه محتوا را.
اتصال همیشه از رله شروع میشود: دو دستگاه به محض آنلاین شدن اول از طریق DERP با هم حرف میزنند تا ارتباط فوراً برقرار شود؛ همزمان در پسزمینه سوراخ کردن NAT را امتحان میکنند و اگر اتصال مستقیم برقرار شد، بیصدا به آن میروند و اتصال در این میان قطع نمیشود. پس اینکه چند ثانیهٔ اول تأخیر کمی بالاتر باشد و بعد پایین بیاید، طبیعی است.
اگر اتصال روی رله بماند، سرعت و تأخیر به این بستگی دارد که آن رله چقدر از شما دور و چقدر شلوغ است و معمولاً از اتصال مستقیم کندتر است. در کلاینت Tailscale میتوانید ببینید اتصال فعلی مستقیم (direct) است یا از رله (relay) میرود.
Exit Node و Subnet Router: فراتر از دسترسی دستگاهها به هم
- Exit Node (گرهٔ خروجی): وقتی یک دستگاه را خروجی تعیین کنید، همهٔ ترافیک اینترنت دستگاههای دیگرتان اول رمزگذاریشده به آن میرسد و بعد از شبکهٔ آن بیرون میرود. نتیجه مثل VPN سنتی است: بیرون آدرس Exit Node دیده میشود. Exit Node میتواند کامپیوتر خانهٔ خودتان باشد یا سروری که سرویسدهنده در اختیارتان میگذارد.
- Subnet Router (مسیریاب زیرشبکه): یک دستگاهی که Tailscale دارد، نمایندهٔ کل شبکهٔ محلیای میشود که در آن است. چاپگر، دوربین و NAS قدیمی که Tailscale رویشان نصب نمیشود، از طریق آن در دسترس قرار میگیرند.
- کنترل دسترسی (ACL): بهطور پیشفرض همهٔ دستگاههای شما به هم دسترسی دارند؛ در استفادهٔ تیمی میشود قاعده نوشت که چه کسانی و چه دستگاههایی به چه پورتهایی دسترسی داشته باشند. قواعد را سرور کنترل میفرستد و هر دستگاه خودش اجرا میکند.
- MagicDNS: به هر دستگاه یک نام میدهد تا لازم نباشد آدرسهای 100 را حفظ کنید.
نسبتش با WireGuard و با VPN سنتی
- با WireGuard: WireGuard پروتکل یک تونل است و فقط به این میپردازد که دو سر چطور رمزگذاریشده با هم حرف بزنند؛ کلید هر سر و آدرس طرف مقابل را باید دستی تنظیم کنید. Tailscale یک سیستم کامل روی آن است که ورود، پخش کلید، تقسیم آدرس، عبور از NAT و رله را برایتان انجام میدهد.
- با سرویس VPN سنتی: VPN سنتی یعنی «همهٔ ترافیک به یک سرور برود» و هدفش عوض کردن خروجی است؛ هدف Tailscale «ارتباط دستگاهها با هم» است و عوض کردن خروجی فقط یک قابلیت جانبی آن است (Exit Node).
- با ابزارهای باز کردن پورت شبکهٔ داخلی (مثل frp یا Oray): این ابزارها یک پورت از شبکهٔ داخلی را روی اینترنت باز میکنند و هر کسی آدرس را بداند میتواند به آن برسد، و امنیت فقط به خود آن سرویس بستگی دارد؛ Tailscale هیچ پورتی را باز نمیکند و فقط دستگاههایی که با حساب شما وارد شدهاند میتوانند وارد شوند.
- با ZeroTier: ایدهٔ مشابهی دارد و هر دو شبکه را خودکار میسازند؛ ZeroTier از پروتکل خودش استفاده میکند و یک شبکهٔ لایهٔ ۲ شبیهسازی میکند، Tailscale از WireGuard و در لایهٔ ۳ کار میکند.
Headscale و سرور کنترل شخصی
کلاینت Tailscale متنباز است و سرور کنترل سرویسی است که شرکت Tailscale اداره میکند. Headscale یک سرور کنترل متنباز است که جامعهٔ کاربران نوشته و همان پروتکل را پیاده میکند و کلاینت رسمی را میشود به آن وصل کرد. اینطوری فهرست دستگاهها، دفترچهٔ کلیدها و قواعد دسترسی دست خودتان است.
گزینهٔ «سرور کنترل سفارشی» در کلاینت، یعنی Use custom server یا Use an alternate server، برای همین است: یک آدرس وارد میکنید و کلاینت بهجای سرور شرکت Tailscale به همان سروری وصل میشود که تعیین کردهاید.
وقتی سرور خودتان را داشته باشید، اینکه ورود چطور باشد، چند دستگاه وصل شود و چه Exit Nodeهایی باشد را گردانندهٔ آن سرور کنترل تعیین میکند و به سهمیهٔ رایگان و طرحهای پولی رسمی Tailscale ربطی ندارد.
استفاده روی شبکههای داخل چین: چند نکته
- سوراخ کردن NAT به UDP وابسته است. بسیاری از اینترنتهای خانگی چین سرعت UDP را محدود میکنند و شبکهٔ داخلی بزرگ اپراتورها (چند لایه ترجمهٔ آدرس) هم موفقیت آن را سختتر میکند، پس احتمال رفتن از رله بیشتر از خارج چین است.
- روی رله، سرعت به جای رله بستگی دارد. رله دور باشد، تأخیر بالاست؛ دلیل اصلی اینکه تجربهٔ Tailscale در چین اینقدر متفاوت است همین است.
- قالب بستههای WireGuard ثابت است و پوشش یا استتاری ندارد، پس در شبکههای با بازرسی سختگیرانه ممکن است شناسایی و محدود شود. Tailscale یک ابزار ساخت شبکه است، نه ابزاری برای دور زدن فیلترینگ.
- روشن ماندن دائمی روی گوشی مشکلی ندارد: تونل وقتی ترافیکی نیست تقریباً باتری مصرف نمیکند و هنگام جابهجایی بین وایفای و اینترنت همراه، اتصال خودش برمیگردد.
روش «خصوصی» در LeoTun چطور از آن استفاده میکند
بخش «خصوصی» در LeoTun از همان کلاینت رسمی Tailscale استفاده میکند که به سرور کنترلی که خودمان اداره میکنیم وصل است: یک بار با حساب همین سایت وارد میشوید و دستگاه همیشه آنلاین میماند؛ در منطقههای مختلف Exit Node داریم و کافی است در منوی Exit Node کلاینت منطقه را انتخاب کنید تا خروجی عوض شود، بدون وارد کردن دوبارهٔ پیکربندی؛ گوشی، کامپیوتر و NAS زیر یک حساب هم مستقیم به هم دسترسی دارند.
چون به سرور کنترل همین سایت وارد میشوید، تعداد دستگاهها بر اساس طرح حسابتان در همین سایت حساب میشود و به حساب و سهمیهٔ رسمی Tailscale ربطی ندارد؛ اگر روی دستگاه قبلاً با حساب رسمی Tailscale وارد شدهاید، اول خارج شوید و بعد با حساب این سایت وارد شوید. مراحل تصویری نصب و ورود در ««خصوصی» (Tailscale) چیست» آمده و ورودی آن صفحهٔ «خصوصی» است.
اگر شبکهتان UDP را محدود میکند و «خصوصی» کند و ناپایدار است، با همان حساب میتوانید روش اتصال دیگری را به کار ببرید؛ «کدام روش اتصال برای چه موقعیتی» را ببینید.
FAQ
سرورهای Tailscale ترافیک من را میبینند؟
محتوا را نه. سرور کنترل فقط کلیدهای عمومی، فهرست دستگاهها و قواعد دسترسی را نگه میدارد و کلید خصوصی از دستگاه بیرون نمیرود؛ رله هم بستههای رمزگذاریشده را جابهجا میکند و کلید ندارد. چیزی که میبینند فراداده است: کدام دستگاه آنلاین است و با چه کسی اتصال برقرار کرده.
Tailscale و WireGuard چه نسبتی با هم دارند؟
WireGuard پروتکل تونل رمزگذاریشدهٔ زیرین است و Tailscale روی آن ورود با حساب، پخش کلید، تقسیم آدرس، عبور از NAT و رله را اضافه کرده است. میشود گفت WireGuard موتور است و Tailscale ماشین کاملی که موتور رویش نصب شده و آمادهٔ رانندگی است.
چرا گاهی بهجای اتصال مستقیم، relay نشان میدهد؟
یعنی سوراخ کردن NAT بین دو دستگاه موفق نشده؛ دلیل رایجش این است که شبکهٔ یکی از دو طرف UDP را بسته یا ترجمهٔ آدرسش خیلی سختگیرانه است. از رله هم میشود استفاده کرد، فقط سرعت به جای رله بستگی دارد. عوض کردن شبکه (مثلاً هاتاسپات گوشی) اغلب اتصال مستقیم را ممکن میکند.
DERP چیست؟
سرور رلهٔ Tailscale. وقتی دو دستگاه نتوانند مستقیم وصل شوند، بستههای رمزگذاریشده را جابهجا میکند؛ دستگاهها هنگام آنلاین شدن هم اول از طریق آن با هم تماس میگیرند. روی HTTPS کار میکند، پس در شبکههایی که فقط ترافیک وب را راه میدهند هم کار میکند.
Exit Node با VPN معمولی چه فرقی دارد؟
نتیجه یکی است: همهٔ ترافیک اینترنت از جای دیگری بیرون میرود. فرقش این است که Exit Node فقط یکی از دستگاههای شبکه است و هر وقت بخواهید میتوانید در منو آن را با دستگاه دیگری عوض یا خاموشش کنید؛ تعویضش پیکربندی دوباره نمیخواهد و دسترسی دستگاهها به هم هم دست نمیخورد.
Headscale چیست؟
پیادهسازی متنباز سرور کنترل Tailscale. اگر آدرس سرور کنترل در کلاینت رسمی را روی آن بگذارید، یک سیستم شبکهٔ تحت کنترل خودتان دارید؛ بخش داده همچنان WireGuard است و کلاینت هم همان کلاینت رسمی.
با Tailscale میشود فیلترینگ را دور زد؟
خودش ابزار ساخت شبکه است: فقط وقتی یک دستگاه خارج از کشور در شبکهتان دارید و آن را Exit Node کردهاید، ترافیک از خارج بیرون میرود. ترافیکش استتار ندارد و در شبکههایی که UDP را محدود میکنند لزوماً خوب کار نمیکند. اگر مسیر پایدار بینالمللی لازم دارید، روشهای دیگر را در «کدام روش اتصال برای چه موقعیتی» ببینید.