
بر اساس گزارش XDA Developers، MagicDNS در Tailscale یک قابلیت جذاب و در ظاهر ساده است: پس از نصب روی یک دستگاه، میتوانید از هر نقطه و بدون تنظیم پورتفوروارد یا رکورد DNS، نام میزبان را تایپ کنید و به آن برسید. اما همین سادگی باعث میشود بسیاری از کاربران تصور کنند MagicDNS یک سرور DNS کامل برای نامگذاری همه سرویسهای خانگی است؛ در حالی که دامنه عملکرد آن بسیار محدودتر از نامش است.
MagicDNS در واقع فهرست دستگاهها با ظاهر DNS است
Tailscale خود میگوید MagicDNS بهطور خودکار نام DNS برای دستگاههای شبکه ثبت میکند و واژه کلیدی در این تعریف، «دستگاه» است. هر نودی که به tailnet شما میپیوندد، تنها یک نام کاملاً واجد شرایط (FQDN) دریافت میکند: نام ماشین بههمراه نام DNS tailnet، چیزی مانند pve.yak-bebop.ts.net. نام ماشین از نام میزبان سیستمعامل گرفته و یکتا میشود؛ اگر دستگاه دومی با نام pve اضافه شود، برای همیشه pve-1 میماند، حتی اگر بعداً اولی را تغییر نام دهید.
همینجا کل ماجرا تمام میشود. منطقهای (Zone) برای ویرایش وجود ندارد و مستندات صریحاً میگوید افزودن رکورد دلخواه به MagicDNS ممکن نیست. این درخواست در GitHub از مارس 2021 باز مانده و آخرین پاسخ Tailscale نیز آن را باز نگه داشته تا شاید روزی پشتیبانی از نامهای سفارشی MagicDNS اضافه شود. نبود رکورد یعنی نبود نام مستعار، CNAME و wildcard؛ چون جایی برای قرار دادن آنها وجود ندارد.
اگر روی یک دستگاه Jellyfin، یک رابط جستوجو و یک سرور LLM اجرا کنید، MagicDNS به هر سه آنها یک نام میدهد. Jellyfin میشود box:8096 و سرور LLM میشود box:13305 و به همین ترتیب تا انتهای فهرست پورتها. این یک طرح نامگذاری نیست؛ بیشتر شبیه دفترچه تلفنی با یک ورودی و چند شماره داخلی است.
روتر زیرشبکه فقط مسیر را میآورد، نه نامها را
گام بعدی معمولاً استفاده از روتر زیرشبکه (Subnet Router) است. چنین روتری مثلاً شبکه 192.168.4.0/22 را به tailnet تبلیغ میکند و از هر جای دنیا میتوانید 192.168.4.110:8096 را باز کنید و Jellyfin پاسخ دهد. اما روتر زیرشبکه فقط یک مسیر را تبلیغ میکند و همین همه کار آن است. NAS، کانتینر Jellyfin و پروکسی Caddy پشت آن، نودهای Tailscale نیستند؛ بنابراین MagicDNS هرگز نام آنها را ندیده است.
نام این سرویسها در خوشه DNS محلی، مثلاً Technitium، در منطقهای به نام lab.example.com و با یک wildcard که به Caddy اشاره میکند زندگی میکند. Tailscale از وجود چنین منطقهای بیخبر است و افزودن روتر زیرشبکه هم چیزی به این آگاهی اضافه نمیکند. مستندات Tailscale نیز میگوید اگر سرورهای نام شما عمومی نیستند یا از آدرسهای Tailscale استفاده نمیکنند، احتمالاً باید مسیریابی زیرشبکه را پیکربندی کنید تا دستگاهها به سرورهای DNS خصوصی برسند. ترجمه ساده آن این است: سرور DNS خودتان را بیاورید؛ ما مسیر رسیدن به آن را فراهم میکنیم، اما خودِ سرور DNS نیستیم.
دامنه و گواهی SSL در اختیار شما نیست
حتی اگر میشد رکوردهای سفارشی را به MagicDNS افزود، آنها زیر دامنه Tailscale قرار میگرفتند، نه دامنه شما. نام DNS tailnet یا پیشفرض Tail است یا جفتی تصادفی مانند yak-bebop.ts.net و تنها میتوان بین همین دو حالت جابهجا شد. پس از صدور گواهی برای نام تصادفی نیز امکان تغییر دوباره آن وجود ندارد. به بیان دیگر، نمیتوان MagicDNS را وادار کرد به lab.example.com پاسخ دهد.
قابلیت HTTPS هم همین قاعده را دارد. با اجرای tailscale cert یک گواهی واقعی Let's Encrypt دریافت میکنید، اما فقط برای machine.tailnet.ts.net؛ چون Tailscale چالش DNS-01 را با یک رکورد TXT زیر *.ts.net که خودش کنترل میکند کامل میکند. هر نام ماشینی که گواهی بگیرد در دفتر عمومی Certificate Transparency ثبت میشود و مستندات درباره آن هشدار پررنگ داده است. برای نشانی بدون مسیر مانند https://pve نیز اصلاً گواهی صادر نمیشود. گواهی wildcard برای *.lab.example.com روی Caddy قرار دارد و ارتباطی به این فرایند ندارد؛ دو دنیای HTTPS جدا که MagicDNS فقط در یکی از آنها زندگی میکند.
وقتی در وایفای هتل نام را تایپ میکنید چه میشود؟
هر کلاینت Tailscale یک resolver کوچک در آدرس 100.100.100.100 دارد که Tailscale آن را Quad100 مینامد. وقتی MagicDNS روشن است، Tailscale سیستمعامل را به این resolver اشاره میدهد و نام tailnet شما را بهعنوان نخستین دامنه جستوجو (Search Domain) اضافه میکند. این بخش قابل پیکربندی نیست. با تایپ pve، resolver ابتدا pve.yak-bebop.ts.net را امتحان میکند، آن را در فهرست دستگاهها مییابد و کار تمام است.
اما با تایپ jellyfin.lab.example.com، resolver هیچ رکوردی ندارد و نمیداند باید از چه کسی بپرسد. بنابراین پرسوجو به همان DNSای میرسد که دستگاه در حالت عادی استفاده میکرد. در خانه، آن resolver منطقه شما را میشناسد و همهچیز کار میکند؛ به همین دلیل این باگ تا زمانی که از خانه بیرون نرفتهاید پنهان میماند. در وایفای هتل، جایگزین همان روتر هتل است که هرگز نام دامنه شما را نشنیده و پاسخ منفی میدهد. مسیر به 192.168.4.0/22 در تمام این مدت فعال است؛ دسترسیپذیری و نامگذاری دو لایه متفاوتاند و فقط یکی از آنها در سفر همراه شما آمده است.
یک هشدار پیش از آزمایش: در ویندوز، nslookup مستقیماً با یک سرور صحبت میکند و جدول سیاست (Policy Table) مورد استفاده Tailscale را نادیده میگیرد؛ بنابراین ممکن است بهاشتباه بگوید DNS تفکیکشده خراب است. بهجای آن از Resolve-DnsName استفاده کنید. در مک نیز host و nslookup به همین شکل resolver سیستم را دور میزنند و dscacheutil است که واقعیت را نشان میدهد.
راهحل پیشنهادی: DNS تفکیکشده (Split DNS)
DNS تفکیکشده همان چیزی است که Tailscale انتظار دارد. در کنسول مدیریت، یک nameserver اضافه میکنید، گزینه Restrict to domain را فعال میکنید و میگویید پرسوجوهای lab.example.com به VIP سرور Technitium در آدرس 192.168.4.61 بروند. بقیه پرسوجوها با DNS محلی میمانند. روتر زیرشبکه دسترسی به 192.168.4.61 را فراهم میکند، Technitium با wildcard پاسخ میدهد، Caddy گواهی را ارائه میکند و jellyfin.lab.example.com از هتل هم کار میکند.
دو نکته مهم وجود دارد: مستندات میگوید یک exit node همه DNS را در اختیار میگیرد، مگر اینکه گزینه Use with exit node را روی آن nameserver فعال کنید. همچنین مهندسان Tailscale گزارشهای GitHub را وقتی Firefox با Secure DNS خود resolver سیستم و در نتیجه MagicDNS را دور میزند، بهعنوان رفتار مورد انتظار بستهاند.
Tailscale Services جایگزین کامل DNS نیست
Tailscale Services از فوریه 2026 بهطور عمومی در همه طرحها عرضه شده و نزدیکترین چیز به نامهای سفارشی MagicDNS است. میتوانید svc:jellyfin را تعریف کنید، یک میزبان برچسبخورده آن را تبلیغ کند و tailnet یک IP مجازی پایدار بههمراه jellyfin.yak-bebop.ts.net تحویل دهد. از زمان عرضه عمومی، این سرویس میتواند به چیزهایی پشت روتر زیرشبکه نیز اشاره کند و برای هوملب مفید باشد. اما سقف آن 10 سرویس برای هر کاربر است، بهطور پیشفرض فقط TCP را پشتیبانی میکند مگر اینکه به یک endpoint لایه 3 بروید و خودتان iptables را تنظیم کنید و نام آن همچنان متعلق به Tailscale است، نه شما. بنابراین مفید است، اما جایگزین کامل DNS نیست.