در خانه آزمایشگاه مجهزی دارم که انواع خدمات را میزبانی میکند و خانهٔ هوشمندم نیز یکسره با Home Assistant کار میکند. تا وقتی در خانهام و به وایفای خانگی وصل هستم، همهچیز عالی است؛ اما همین که پا از خانه بیرون میگذارم، دسترسیام به همهچیز قطع میشود. راهحل، فراهمکردن دسترسی از راه دور به شبکهٔ خانگی بود، ولی این کار هم به انتخاب کمخطرترین گزینه از میان چند راه پرخطر میمانست.
میتوانستم هر خدمت را جداگانه در معرض اینترنت بگذارم، یک پراکسی معکوس و DNS عمومی را نگهداری کنم یا یک VPN سنتی بسازم و درگیر تنظیم انتقال پورت شوم. خوشبختانه هیچیک از این کارها لازم نبود، چون راهی عاقلانه برای دسترسی از راه دور به شبکهام پیدا کردم که آن را در معرض اینترنت قرار نمیداد.
تیلاسکیل بدون بازکردن حتی یک پورت، مرا به آزمایشگاه خانگیام رساند
نه انتقال پورت، نه DNS عمومی و نه پراکسی معکوسی که مراقبت بخواهد

بیشتر روشهای سنتی دسترسی از راه دور، اگر نگوییم همهٔ آنها، یک جزء متحرک دیگر، مجموعهای تازه از اطلاعات ورود یا فرصتی جدید برای پیکربندی نادرست به سامانه اضافه میکنند. این وضع بهویژه از آن رو آزاردهنده بود که فقط میخواستم به خدماتی دسترسی پیدا کنم که پیشتر آنها را در شبکهٔ محلیام بهدرستی پیکربندی کرده بودم.
Tailscale سرانجام راهکاری پیش پایم گذاشت که با اندازهٔ مشکل تناسب داشت. آن را روی لپتاپ قدیمیای نصب کردم که از قبل نقش سرور خانگیام را داشت، دستگاه را به مسیریاب زیرشبکه تبدیل کردم و بیآنکه خدماتم را عمومی کنم، از طریق گوشی و لپتاپ به شبکهٔ محلی دسترسی یافتم. Tailscale برای رمزگذاری ارتباط مستقیم میان دستگاهها از WireGuard بهره میگیرد و عبور از NAT را نیز مدیریت میکند؛ بنابراین معمولاً حتی با محدودیتهای نامتعارف NAT از سوی شرکت اینترنتی، بدون بازکردن پورت ورودی روی مسیریاب کار میکند. هرگاه برقراری ارتباط مستقیم ممکن نباشد، به سرورهای واسط روی میآورد. نصب آن هم بسیار آسان است. Tailscale را روی لپتاپ سرور خانگی و برنامهٔ Tailscale را روی رایانهٔ Windows و گوشی Android خود نصب کردم. حالا تنها با لمس یک دکمه میتوانم به تیلنت خود وصل شوم و به سراسر شبکهٔ خانگی و دستگاههای آن دسترسی پیدا کنم، بیآنکه نگران ایجاد رخنه در دیوار آتش باشم.
بهترین بخش ماجرا این است که این چیدمان قبض ماهانهٔ دیگری هم روی دستم نمیگذارد. طرح شخصی Tailscale برای استفادهٔ غیرتجاری برای همیشه رایگان است، از حداکثر شش کاربر پشتیبانی میکند و شمار دستگاههای هر کاربر در آن نامحدود است. مهمتر اینکه مسیریاب زیرشبکه را نیز در بر میگیرد؛ پس برای دسترسی به شبکهٔ محلی از طریق لپتاپ سرورم نیازی به ارتقای پولی ندارم.
یک مسیریاب زیرشبکه بهتر از نصب تیلاسکیل روی هر دستگاه چراغداری است
بردهای ESP32 هرگز تیلاسکیل را اجرا نمیکنند؛ اشکالی هم ندارد





اگر Tailscale را مستقیماً روی سرور نصب میکردم، میتوانستم از طریق نشانی Tailscale آن فقط به همان دستگاه دسترسی پیدا کنم. این قابلیت سودمند است، اما بسیاری از دستگاههایی که میخواستم در شبکه به آنها دسترسی داشته باشم، جای دیگری بودند. Home Assistant روی یک ماشین مجازی با IP جداگانه اجرا میشد، چاپگرهای سهبعدیام هرکدام رابط وب محلی خود را داشتند و چندین دستگاه توکار و برد ESP32 در شبکهٔ محلیام نیز اصلاً امکان اجرای Tailscale را نداشتند.
راهحل این مشکل، مسیریاب زیرشبکه است. بهجای نصب کارخواه Tailscale روی تکتک دستگاهها، یک دستگاه همیشهروشن مسیر دسترسی به کل زیرشبکهٔ محلی را اعلام میکند. دستگاههای راه دور در تیلنت من، دادههای مقصد شبکهٔ محلی را از آن دستگاه میفرستند و دستگاه نیز آنها را به نشانی محلی مناسب هدایت میکند. لپتاپ سرورم انتخاب بدیهی برای این کار بود، چون همیشه روشن است، با Ethernet به شبکه وصل شده و Linux اجرا میکند.
مسیریاب زیرشبکه با گره خروجی Tailscale نیز تفاوت دارد. گره خروجی، ترافیک عمومی اینترنت را از دستگاهی دیگر عبور میدهد؛ درحالیکه مسیریاب زیرشبکه یک یا چند بازهٔ خصوصی شبکه را در دسترس میگذارد. من فقط میخواستم ترافیک مربوط به شبکهٔ محلی خانهام به خانه بازگردد. وبگردی معمولی نیز میتوانست همچنان از همان اتصال موجود دستگاههای راه دورم استفاده کند.
دربارهٔ مسیریابهای زیرشبکه باید یک نکته را در نظر داشته باشید: تونل رمزگذاریشده در مسیریابی که انتخاب میکنید پایان مییابد. ترافیک میان مسیریاب و دستگاه نهایی در شبکهٔ محلی، چون بیرون از تونل WireGuard و روی شبکهٔ محلی جابهجا میشود، فقط با سازوکار امنیتی همان خدمت، مانند HTTPS، محافظت خواهد شد. این وضعیت برای شبکهٔ خانگی مورداعتماد من پذیرفتنی است، اما برای دسترسی از راه دور باید به HTTPS، گذرواژههای نیرومند، بهروزرسانیها و بخشبندی شبکه توجه کنید.
پنج فرمان و یک کلیک در میز فرمان؛ شبکهٔ محلیتان همراهتان میآید
نصب کنید، انتقال دهید، اعلام و تأیید کنید؛ سپس وانمود کنید خانهاید

نصب و راهاندازی Tailscale بهطرز شگفتآوری ساده است. Tailscale یک اسکریپت نصب سازگار با توزیعهای گوناگون ارائه میدهد؛ هرچند برای کسانی که بهدلیل موجهی نمیخواهند اسکریپتی بارگیریشده را با پایپ مستقیماً در پایانه اجرا کنند، دستورالعمل نصب دستی بستهها نیز در دسترس است.
curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up
چون لپتاپِ سرورم باید بستههای داده را میان Tailscale و شبکهٔ محلی فیزیکی جابهجا کند، با اجرای فرمانهای زیر، هدایت IP را نیز بهطور دائمی فعال کردم:
echo 'net.ipv4.ip_forward = 1' | sudo tee /etc/sysctl.d/99-tailscale.conf
sudo sysctl -p /etc/sysctl.d/99-tailscale.conf
سپس محدودهٔ شبکهٔ محلیام را اعلام کردم:
sudo tailscale set --advertise-routes=192.168.0.0/24
البته اعلام محدودهٔ شبکهٔ محلی آخرین مرحله نیست. در کنسول مدیریتی Tailscale باید صفحهٔ دستگاهها را نیز باز کنید، دستگاهی را که میخواهید بهعنوان مسیریاب زیرشبکه به کار ببرید برگزینید و مسیر اعلامشده را تأیید کنید. Tailscale پیش از توزیع مسیر میان دیگر دستگاههای تیلنت، به این تأیید نیاز دارد.
تنها با یک کلید، وایفای عمومی رنگوبوی خانه میگیرد
همان نشانیهای محلی در مکانی تازه؛ با لپتاپی که هرگز نباید بخوابد

اکنون برای اتصال به تیلنت از بیرون، تنها به برنامهٔ Tailscale روی گوشی یا لپتاپ نیاز دارید. برنامه را باز کنید، وارد حساب خود شوید و کلید اتصال را روشن کنید. Windows، macOS، Android و iOS مسیرهای تأییدشدهٔ زیرشبکه را در دستگاه کاربر بهطور خودکار میپذیرند؛ اما در دستگاههای Linux باید پذیرش این مسیرها را با اجرای فرمان زیر بهصراحت فعال کنید:
sudo tailscale set --accept-routes
پس از برقراری اتصال، میتوانستم ارتباط با وایفای خانه را قطع کنم و همچنان با همان نشانیهای محلی همیشگی به همهٔ خدمات و دستگاههایم دسترسی داشته باشم. اگر AFFiNE در نشانی ۱۹۲.۱۶۸.۰.۱۲۳:۳۰۱۰ در دسترس بود، همان نشانی اکنون از طریق اینترنت همراه یا وایفای عمومی نیز کار میکرد. IP محلی و درگاه Home Assistant هم به همین شکل در دسترس بودند. دیگر نه به نام میزبان عمومی نیاز داشتم، نه به تونل ابری جداگانه برای هر برنامه و نه به نصب جداگانهٔ Tailscale در تکتک کانتینرها.
نکتهٔ عملی مهم این است که لپتاپِ سرور باید بیدار و متصل بماند. اگر به خواب برود، خاموش شود، شبکهاش تغییر کند یا برقش قطع شود، مسیر از میان میرود و دسترسیام به شبکه قطع میشود. این موضوع دردسر چندانی نبود؛ بااینحال، خواب خودکار هنگام اتصال به برق را غیرفعال کردم و با رزرو DHCP در تنظیمات مسیریاب، یک نشانی IP ثابت در شبکهٔ محلی به دستگاه اختصاص دادم. همچنین قصد دارم مسیریاب زیرشبکهٔ دیگری راهاندازی کنم که همان پیشوند را اعلام کند، زیرا Tailscale برای افزونگی از چند مسیریاب پشتیبانی میکند.
چرا این راه سرانجام برای آزمایشگاه خانگی منطقی است
درگاههای هدایتشدهٔ کمتر، دسترسی محدودتر و یک لپتاپ حیاتی
بزرگترین مزیت Tailscale فقط آسودگی کار نیست. هیچیک از پیشخوانهای خودمیزبان من ناچار نیستند در معرض اینترنت عمومی باشند و دیگر لازم نیست درگاههای هدایتشدهٔ مسیریاب را نگهداری کنم. ترافیک در بخش Tailscale مسیر با WireGuard بهصورت دوسویه احراز هویت و رمزگذاری میشود. همچنین میتوان با مجوزهای Tailscale دامنهٔ دسترسی را محدود کرد؛ این مجوزها تعیین میکنند چه کسی یا چه چیزی اجازه دارد به نشانیها و درگاههای مشخص دسترسی پیدا کند، بیآنکه با همهٔ دستگاههای ثبتشده یکسان رفتار شود.
Tailscale دردسرهای شبکهسازی از راه دور را بهکلی از میان نبرد. هنوز باید زیرشبکهام را شناسایی میکردم، هدایت را فعال میساختم، مسیریاب را تأیید میکردم و دستگاه مسیریاب را در دسترس نگه میداشتم. بااینهمه، راهاندازی را به مجموعهای کوچک و فهمپذیر از اجزا فروکاست. برای نخستین بار، باز کردن Home Assistant یا سر زدن به سندی خودمیزبان از راه دور دیگر این حس را نداشت که فقط برای دسترسی خودم، آزمایشگاه خانگیام را پیش چشم تمام جهان گذاشتهام.
منبع: این مطلب ترجمه و بومیسازی مقالهای از MakeUseOf به قلم Yadullah Abidi است. مشاهده مقاله اصلی