
در Tailscale، دو قابلیت پرکاربرد یعنی نود خروجی (Exit Node) و روتر زیرشبکه (Subnet Router) هر دو برای دسترسی از راه دور به شبکه خانه به کار میروند و هر دو نیازمند تأیید مدیر (Admin Approval) هستند؛ اما نقش آنها یکسان نیست. روتر زیرشبکه تعیین میکند چه دستگاههایی از هر دستگاه تأییدشده در tailnet قابل دسترسی باشند، در حالی که نود خروجی تعیین میکند ترافیک اینترنت و پرسوجوهای DNS شما از کجا خارج شوند. همین تفاوت باعث میشود انتخاب نادرست، بهجای نمایش خطای واضح، پرسوجوهای DNS را بیصدا به مقصدی ناخواسته بفرستد.
روتر زیرشبکه فقط شبکه مشخص را در دسترس قرار میدهد
بهطور پیشفرض، فعالکردن مسیریابی زیرشبکه (Subnet Routing) اثری بر DNS ندارد. این قابلیت دستگاههای یک محدوده IP مانند 192.168.1.0/24 را از داخل tailnet قابل دسترسی میکند و فقط ترافیک مربوط به همان محدوده از تونل عبور میکند. دستگاههای آن محدوده بهطور خودکار به tailnet نمیپیوندند. چون پرسوجوهای DNS به آن محدوده فرستاده نمیشوند، از تونل هم استفاده نمیکنند و همچنان از تنظیمات DNS محلی دستگاه—مثلاً DNS ارائهشده توسط وایفای کافه یا هتل—پاسخ میگیرند.
نتیجه عملی این است که اگر بخواهید با نام میزبان (Hostname) به دستگاهی وصل شوید، ممکن است فرمانی مانند ssh pi.home.lan شکست بخورد، چون DNS محلی خارج از خانه چنین نامی را نمیشناسد. در مقابل، استفاده از آدرس IP مانند ssh 192.168.1.30 کار میکند، زیرا این آدرس داخل محدوده اعلامشده قرار دارد. نامهای MagicDNS همچنان کار میکنند، چون کلاینت Tailscale خودش آنها را مدیریت میکند؛ اما چاپگری که پشت روتر خانه است و عضو tailnet نیست، از این مسیر در دسترس نخواهد بود. همچنین وایفای عمومی همچنان همه پرسوجوهای DNS شما را میبیند، چون روتر زیرشبکه به DNS دست نمیزند.
نود خروجی DNS را به دستگاه مقصد منتقل میکند
بسیاری از دستگاههای tailnet، مانند سرور خانگی یا باکس اندروید تیوی، میتوانند نقش نود خروجی را بر عهده بگیرند. وقتی کلاینت یک نود خروجی را انتخاب میکند، ترافیک اینترنت آن از همان دستگاه عبور میکند. بر اساس مستندات DNS در Tailscale، دستگاهی که از نود خروجی استفاده میکند، برای همه دامنهها از همان نود بهعنوان resolver خود استفاده میکند؛ فارغ از اینکه چه nameserverهای سراسری (Global) یا تقسیمشده (Split DNS) برای tailnet تعریف شده باشد.
در عمل، تلفن شما پرسوجوهای DNS را از طریق تونل به سرور خانه میفرستد و resolver همان سرور پاسخ میدهد. اگر آن resolver یک Pi-hole باشد، همان مسدودسازی تبلیغات که در وایفای خانه دارید در سفر هم فعال میشود و نامهای میزبان محلی نیز حل میشوند. اگر سرور از DNS ارائهدهنده اینترنت (ISP) استفاده کند، پاسخها از ISP میآید و فیلترکردنی اعمال نمیشود. در هر دو حالت، پرسوجوها داخل تونل رمزنگاریشده منتقل میشوند و وایفای عمومی تنها ترافیک رمزنگاریشده را میبیند.
نکته مهم این است که نود خروجی تنظیمات DNS شبکه خانه را نیز دور میزند. بنابراین اگر در کنسول مدیریت روتر یک nameserver مانند Cloudflare یا Quad9 تنظیم کرده باشید، تا زمانی که نود خروجی فعال است از آن استفاده نمیشود، مگر اینکه برای آن nameserver گزینه Use with exit node را فعال کنید.
انتخاب اشتباه، مشکلاتی شبیه خطای DNS میسازد
هر ناهماهنگی به شکلی متفاوت و اغلب بیصدا بروز میکند. فرض کنید فقط میخواهید نام میزبان دستگاههای خانه در سفر کار کند و نود خروجی را روشن کردهاید. احتمالاً آن نامها حل میشوند، اما اکنون هر وبسایتی که باز میکنید از اتصال خانه استفاده میکند و resolverهایی مانند Cloudflare یا Quad9 که تنظیم کردهاید نادیده گرفته میشوند. به عبارت دیگر، برای حل یک مشکل نامگذاری، کل اتصال را تغییر مسیر دادهاید.
در سوی دیگر، اگر میخواهید مسدودسازی تبلیغات Pi-hole در همهجا کار کند و بهجای نود خروجی روتر زیرشبکه راه بیندازید، تلفن شما همچنان از resolver هتل استفاده میکند. در این حالت تبلیغات مثل قبل بارگذاری میشوند و ممکن است تصور کنید Pi-hole خراب است. همین اتفاق وقتی رخ میدهد که یک دستگاه همزمان روتر زیرشبکه و نود خروجی باشد، اما تلفن شما نود خروجی را انتخاب نکرده باشد.
چون نشانهها در DNS ظاهر میشوند، طبیعی است که resolver را متهم کنید. برای بررسی، میتوانید فرمانی مانند nslookup nas.home.lan را اجرا کنید. اگر نام حل شود، DNS خانه درگیر است؛ اگر حل نشود، پرسوجوها جای دیگری میروند. با یکبار روشن و خاموشکردن نود خروجی، تفاوت آشکار میشود.
هدایت DNS با دو تنظیم در کنسول مدیریت
برای اینکه نامهای میزبان با روتر زیرشبکه کار کنند، یک ورودی DNS تقسیمشده (Split DNS) اضافه کنید. در کنسول مدیریت Tailscale، یک nameserver محدود برای دامنه خانه مانند home.lan تعریف کنید و آن را به IP سرور DNS خانه اشاره دهید. آن IP داخل محدوده اعلامشده قرار دارد، بنابراین پرسوجوها از طریق روتر زیرشبکه به خانه میرسند. Tailscale مشخص میکند که nameserver محدود فقط برای پرسوجوهای DNS مربوط به یک دامنه جستوجوی مشخص اعمال میشود و بقیه پرسوجوها همچنان از resolver محلی استفاده میکنند. نتیجه این است که nas.home.lan کار میکند و چیز دیگری تغییر مسیر نمیدهد.
در مورد نود خروجی، برای هر nameserver که میخواهید حفظ شود گزینه Use with exit node را فعال کنید؛ در غیر این صورت پرسوجوها به resolver نود خروجی برمیگردند. اگر ترجیح میدهید همه دستگاهها DNS محلی خود را نادیده بگیرند و از nameserver تعریفشده در tailnet استفاده کنند، گزینه Override DNS servers را روی nameserverهای سراسری فعال کنید. پس از آن، یک ماشین همیشهروشن میتواند همزمان هم روتر زیرشبکه باشد و هم نود خروجی.
جمعبندی
اگر هدف دسترسی به دستگاههای خانه با حفظ DNS محلی است، از روتر زیرشبکه استفاده کنید و برای نامهای میزبان آن، DNS تقسیمشده اضافه کنید. اگر میخواهید resolver خانه پاسخدهنده پرسوجوها باشد، نود خروجی را انتخاب کنید و مشخص کنید کدام nameserverها همراه آن بیایند. در هر دو حالت، پیش از اعتماد به پاسخها بررسی کنید کدام resolver واقعاً در حال پاسخدادن است.