DNS

Throne از کدام سرورهای DNS استفاده می‌کند، تنظیمات DNS چه می‌کنند و نتیجهٔ تست نشت DNS را چگونه بخوانید.

Throne با حل‌کنندهٔ DNS (resolver) خودش به جست‌وجوهای DNS پاسخ می‌دهد. تنظیمات پیش‌فرض برای بیشتر افراد کار می‌کنند.

DNS در Throne چگونه کار می‌کند

Throne از سه سرور DNS استفاده می‌کند:

سرور کاربرد
دی ان اس سمت-سرور (Remote DNS) جست‌وجوهای برنامه‌های شما، از طریق پروکسی.
دی ان اس مستقیم (Direct DNS) دامنه‌هایی که مسیریابی شما direct می‌فرستد، و نشانی سرور پروکسی شما. بدون پروکسی فرستاده می‌شود.
Local Override نام دو سرور بالا را، برای نمونه dns.google، به نشانی IP تبدیل می‌کند. خالی یعنی حل‌کنندهٔ DNS سیستم‌عامل شما.

Throne به این ترتیب به یک پرس‌وجو پاسخ می‌دهد:

  1. Predefined Answers و Respect Hosts File.
  2. با فعال کردن IP جعلی (Enable FakeIP)، یک نشانی جعلی (FakeIP را ببینید).
  3. با Enable DNS Routing (که به‌طور پیش‌فرض روشن است)، دامنه‌هایی که نمایهٔ مسیریابی شما direct می‌فرستد به دی ان اس مستقیم می‌روند. این برای قوانین دامنه و مجموعه‌قوانین geosite-* کار می‌کند، نه برای قوانین IP، مجموعه‌قوانین geoip-* یا فایل‌های .srs خودتان.
  4. هر چیز دیگر به سرور دی‌ان‌اس پیش‌فرض (Default DNS server) می‌رود که به‌طور پیش‌فرض remote است. اگر آن را روی direct بگذارید، دامنه‌هایی که چنین قوانینی به proxy می‌فرستند همچنان از دی ان اس سمت-سرور استفاده می‌کنند.

اینکه چه چیزی به Throne می‌رسد به حالت اتصال بستگی دارد:

  • حالت TUN: پرس‌وجوهای DNS همهٔ برنامه‌ها. نمایه‌های مسیریابی ساخت‌یافته خودکار به آن‌ها رسیدگی می‌کنند؛ یک نمایهٔ خام به قانون hijack-dns نیاز دارد. برای macOS، حالت TUN را ببینید.
  • حالت پروکسی سیستمی: فقط نام سایت‌هایی که برنامه‌ها به پروکسی می‌فرستند؛ نشانی سایت‌هایی را که از پروکسی می‌گذرند سرور پروکسی پیدا می‌کند. برنامه‌ها همچنین می‌توانند خودشان، بیرون از Throne، نام‌ها را جست‌وجو کنند.

تنظیمات

تنظیمات (Settings) ← تنظیمات مسیریابی (Routing Settings) ← دی‌ان‌اس (DNS) را باز کنید. تغییرات پس از کلیک روی تایید (OK) و راه‌اندازی دوبارهٔ اتصال اعمال می‌شوند. نمایهٔ مسیریابی فعال می‌تواند برخی از این تنظیمات را جایگزین کند؛ DNS برای هر نمایهٔ مسیریابی را ببینید. در حالت ساده، دی ان اس سمت-سرور (Remote DNS)، دی ان اس مستقیم (Direct DNS) و سرور دی‌ان‌اس پیش‌فرض (Default DNS server) در بخش تنظیمات دی ان اس ساده (Simple DNS Settings) از زبانهٔ متداول (Common) قرار دارند و بقیه پنهان است (حالت ساده و پیشرفته را ببینید).

تنظیم پیش‌فرض کارکرد
دی ان اس سمت-سرور (Remote DNS) https://8.8.8.8/dns-query سروری که از طریق پروکسی استفاده می‌شود.
دی ان اس مستقیم (Direct DNS) localhost سروری که بدون پروکسی استفاده می‌شود. localhost یعنی حل‌کنندهٔ DNS سیستم‌عامل شما. اگر کار نکرد، سروری را انتخاب کنید که در شبکهٔ شما بدون پروکسی کار می‌کند، مثلاً یک حل‌کنندهٔ عمومی از فهرست.
Disable IPv6 (کنار هر سرور) خاموش به پرس‌وجوهای IPv6 (AAAA) که به آن سرور فرستاده می‌شوند، پاسخ خالی می‌دهد.
Local Override خالی وقتی نمی‌توان با حل‌کنندهٔ DNS سیستم‌عامل نشانی سرورهای DNS شما را پیدا کرد، یک نشانی IP اینجا تنظیم کنید.
Respect Hosts File خاموش ابتدا از فایل hosts سیستم شما پاسخ می‌دهد.
Predefined Answers روشن پاسخ‌های ثابت با نحو فایل hosts، مانند 10.0.0.5 nas.lan. نامی که فقط با یک نشانی IPv4 فهرست شده پاسخ IPv6 نمی‌گیرد، و برعکس.

نشانی سرور می‌تواند DNS ساده (8.8.8.8 یا 8.8.8.8:53)، tcp://8.8.8.8:53، tls://1.1.1.1، https://1.1.1.1/dns-query، h3://dns.example.com/dns-query، quic://dns.example.com یا dhcp://auto (سروری که شبکهٔ شما در اختیار می‌گذارد) باشد.

وقتی نمایهٔ در حال اجرا از Xray استفاده می‌کند، دی ان اس سمت-سرور (Remote DNS) از نوع DNS ساده یا QUIC با DNS روی HTTPS جایگزین می‌شود: 1.1.1.1 به https://1.1.1.1/dns-query تبدیل می‌شود، و سروری که Throne نمی‌شناسد به https://8.8.8.8/dns-query.

FakeIP

با فعال کردن IP جعلی (Enable FakeIP)، Throne بی‌درنگ به پرس‌وجوهای نشانی با یک نشانی جعلی از 198.18.0.0/15 (در IPv6: 2001:db8::/32) پاسخ می‌دهد. وقتی برنامه به آن وصل می‌شود، Throne اتصال را بر اساس نام دامنه مسیریابی می‌کند و جست‌وجوی واقعی بعداً انجام می‌شود: روی سرور پروکسی، یا برای اتصال‌های مستقیم با دی ان اس مستقیم. اتصال‌ها سریع‌تر آغاز می‌شوند و هیچ پرس‌وجوی DNS پیش از مسیریابی اتصال از دستگاه شما خارج نمی‌شود.

FakeIP فقط روی پرس‌وجوهایی اثر دارد که به Throne می‌رسند، پس در حالت TUN مفید است، نه در حالت پروکسی سیستمی.

  • برنامه‌ها نشانی‌های جعلی را در حافظهٔ نهان (cache) خودشان نگه می‌دارند. اگر برنامه‌ای پس از متوقف کردن Throne آفلاین ماند، آن را دوباره راه‌اندازی کنید.
  • FakeIP Disable IPv6 هیچ نشانی IPv6 جعلی نمی‌دهد؛ پرس‌وجوهای AAAA پاسخ خالی می‌گیرند.
  • Advanced Settings → Save Cache To File نشانی‌های جعلی را هنگام راه‌اندازی دوبارهٔ Throne نگه می‌دارد.

پیشرفته

Advanced Settings در زبانهٔ دی‌ان‌اس (DNS) حافظهٔ نهان DNS را کنترل می‌کند. گزینه‌هایی که بدیهی نیستند:

  • Optimistic Cache تا زمانی که یک پاسخ منقضی‌شده در پس‌زمینه تازه می‌شود، همچنان همان را ارائه می‌دهد، حداکثر به مدت Optimistic Timeout (پیش‌فرض 3d). با Disable Cache یا Disable Expire قابل ترکیب نیست.
  • Save Cache To File پاسخ‌های ذخیره‌شده و نشانی‌های FakeIP را پس از راه‌اندازی دوباره نگه می‌دارد؛ هزینه‌اش یک بار نوشتن روی دیسک برای هر ورودی تازه است.
  • Reverse Mapping به خاطر می‌سپارد هر نشانی IP برای کدام دامنه پاسخ داده شده است تا قوانین دامنه بتوانند با اتصال‌ها به آن نشانی منطبق شوند.

Use Custom DNS Object همهٔ موارد این زبانه را با یک شیء کامل dns برای sing-box جایگزین می‌کند که آن را با Edit DNS Object می‌نویسید (مستندات DNS در sing-box را ببینید). در این صورت مسیریابی DNS، FakeIP و پاسخ‌های ازپیش‌تعریف‌شده فقط در صورتی کار می‌کنند که شیء شما آن‌ها را راه‌اندازی کند.

DNS برای هر نمایهٔ مسیریابی

یک نمایهٔ مسیریابی می‌تواند سرورهای DNS خودش را داشته باشد که تا وقتی آن نمایه، نمایهٔ مسیریابی فعال است، جای سرورهای سراسری را می‌گیرند؛ برای نمونه یک DNS مستقیم که در کشور همان نمایه کار می‌کند.

  1. نمایه را باز کنید: تنظیمات (Settings) ← تنظیمات مسیریابی (Routing Settings) ← مسیر (Route) ← Edit، یا روی آن در پایین منوی مسیریابی (Routing) راست‌کلیک کنید.
  2. در زبانهٔ DNS آن، Use custom DNS settings را انتخاب کنید، تنظیمات را تغییر دهید و روی تایید (OK) کلیک کنید.

این زبانه، با برچسب‌های انگلیسی، دو سرور و کادرهای Disable IPv6 آن‌ها، Default DNS server، Enable DNS Routing و تنظیمات FakeIP را دارد. بقیه از زبانهٔ سراسری دی‌ان‌اس (DNS) می‌آید، و تا وقتی چنین نمایه‌ای فعال است، Use Custom DNS Object نادیده گرفته می‌شود.

  • نمایهٔ مسیریابی خود یک گروه تا وقتی نمایه‌ای از آن گروه در حال اجراست، تنظیمات DNS خودش را اعمال می‌کند.
  • نمایه‌های راه‌دور و نمایه‌های مسیریابی یک اشتراک هنگام به‌روزرسانی، تنظیمات DNS خود را نگه می‌دارند. Throne هرگز تنظیمات DNS را از URL یا اشتراک نمی‌گیرد.
  • لینک throne://route/ تنظیمات DNS را در خود دارد، و Import در تنظیمات مسیریابی (Routing Settings) پیش از وارد کردن، سرورها را نام می‌برد. آن‌ها را بررسی کنید: این سرورها تا وقتی نمایه فعال است، همهٔ نام‌هایی را که جست‌وجو می‌کنید می‌بینند.
  • در حالت ساده، زبانهٔ DNS یک نمایه فقط وقتی نمایان می‌شود که نمایه از قبل تنظیمات DNS خودش را داشته باشد.

سرور DNS برای دستگاه‌های دیگر

تا وقتی نمایه‌ای در حال اجراست، Throne یک سرور DNS هم اجرا می‌کند که با تنظیمات همین صفحه پاسخ می‌دهد. این سرور روی 127.0.0.1، پورت TCP و UDP 5533 گوش می‌دهد که در تنظیمات (Settings) ← تنظیمات پایه (Basic Settings) ← Miscellaneous → Sing-box → DNS Server Port تنظیم می‌شود (فقط در حالت پیشرفته؛ حالت ساده و پیشرفته را ببینید).

برای اینکه دستگاه‌های دیگر شبکهٔ شما، مثلاً یک روتر، از آن استفاده کنند:

  1. به دستگاه های دیگر اجازه اتصال دهید (Allow other devices to connect) را زیر DNS Server Port تیک بزنید، روی تایید (OK) کلیک کنید و نمایهٔ در حال اجرا را دوباره راه‌اندازی کنید.
  2. در فایروال خود، اتصال‌های ورودی TCP و UDP به این پورت را مجاز کنید، همانند اشتراک‌گذاری در شبکهٔ محلی. در Linux با ufw: sudo ufw allow 5533.
  3. در دستگاه دیگر، سرور DNS را روی نشانی LAN رایانهٔ خود و همین پورت بگذارید، برای مثال 192.168.1.20 و 5533.
  • گوشی‌ها و رایانه‌ها معمولاً برای DNS فقط پورت 53 را می‌پذیرند؛ بسیاری از روترها اجازهٔ تنظیم پورت را می‌دهند.
  • هر کسی که به این پورت دسترسی داشته باشد، می‌تواند نام‌ها را از راه پروکسی شما جست‌وجو کند. فقط در شبکه‌ای که به آن اعتماد دارید از آن استفاده کنید.
  • با FakeIP روشن، دستگاه‌های دیگر هم نشانی‌های جعلی می‌گیرند که فقط برای اتصال‌هایی کار می‌کنند که از Throne می‌گذرند.
  • برنامه (Program) ← به دستگاه های دیگر اجازه اتصال دهید (Allow other devices to connect) تنظیم دیگری است: پورت پروکسی را به اشتراک می‌گذارد.
  • در thronectl و Throne بدون رابط گرافیکی، این تنظیم‌ها dns_in_lan و dns_in_port هستند.

تست‌های نشت DNS

تست نشت DNS نشان می‌دهد کدام سرورهای DNS نام‌های آزمایشی آن را جست‌وجو کرده‌اند. این نتیجه‌ها مورد انتظارند:

  • ارائه‌دهندهٔ DNS سمت‌سرور شما (به‌طور پیش‌فرض Google)، یا سرورهای نمایهٔ مسیریابی فعال، اگر سرورهای خودش را داشته باشد.
  • ارائه‌دهندهٔ اینترنت شما، برای سایت‌هایی که مستقیم می‌روند. نشانی آن‌ها با دی ان اس مستقیم پیدا می‌شود که به‌طور پیش‌فرض حل‌کنندهٔ DNS سیستم‌عامل شماست. در حالت پروکسی سیستمی یا با FakeIP، این شامل سایت‌هایی هم می‌شود که فقط به‌خاطر خروجی پیش‌فرض مستقیم می‌روند، مانند نمایه‌های «Proxy … Blocked». ارائه‌دهندهٔ شما ترافیک مستقیم را در هر صورت می‌بیند.
  • ارائه‌دهندهٔ اینترنت شما، در حالت پروکسی سیستمی. برنامه‌ها می‌توانند خودشان، بیرون از Throne، نام‌ها را جست‌وجو کنند. اگر این موضوع برایتان مهم است، از حالت TUN استفاده کنید.
  • ارائه‌دهندهٔ خود مرورگر، وقتی مرورگر از DNS امن (DNS روی HTTPS) استفاده می‌کند.
  • ارائه‌دهندهٔ اینترنت شما برای بیشتر نام‌ها، وقتی سرور دی‌ان‌اس پیش‌فرض (Default DNS server) روی direct باشد.

نشت واقعی این‌گونه است: در حالت TUN و با نمایهٔ مسیریابی‌ای که سایت تست را از پروکسی عبور می‌دهد (برای نمونه Default)، تست همچنان ارائه‌دهندهٔ اینترنت شما را نشان می‌دهد. در Windows، بررسی کنید که تنظیمات (Settings) ← تنظیمات vpn (Tun Settings) ← مسیر سخت‌گیرانه (Strict Route) روشن باشد (پیش‌فرض در Windows 10 و نسخه‌های بعدی)، و محافظت از نشت DNS در Windows را ببینید.

تست‌های WebRTC نشانی IP شما را بررسی می‌کنند، نه DNS شما را. اگر هیچ نشانی IP عمومی نشان ندهند، مشکلی نیست (#1267). اگر برای سایتی که از پروکسی عبور می‌دهید نشانی IP واقعی شما را نشان دهند، ترافیک UDP پروکسی را دور زده است. این در حالت پروکسی سیستمی رایج است؛ از حالت TUN استفاده کنید.

ربایش و دی‌ان‌اس سیستم (حذف‌شده)

Throne 1.4.0 زبانهٔ ربایش (Hijack) در تنظیمات مسیریابی (Routing Settings) و گزینهٔ دی‌ان‌اس سیستم (System DNS) در Windows را حذف کرد. برای برنامه‌هایی که پروکسی سیستمی را نادیده می‌گیرند، به‌جای آن‌ها از حالت TUN استفاده کنید.

در Android

Throne برای Android همین تنظیمات را در تنظیمات (Settings) ← DNS دارد که در آنجا FakeIP، فعال کردن FakeDNS (Enable FakeDNS) نام دارد. در حالت VPN، Throne همیشه پرس‌وجوهای DNS را درون VPN مدیریت می‌کند. تفاوت‌ها:

  • localhost به‌عنوان DNS مستقیم مستقیماً از سرورهای DNS شبکهٔ Wi-Fi یا تلفن همراه فعلی می‌پرسد. اگر پاسخ ندهند، اتصال با این پیام شکست می‌خورد: «اتصال برقرار نشد: DNS شبکه (…) پاسخی نداد. یک DNS مستقیم کارآمد تنظیم کنید.» (Could not connect: the network's DNS (…) did not answer. Set a working Direct DNS.)
  • DNS برای هر نمایهٔ مسیریابی کارت DNS در ویرایشگر نمایهٔ مسیریابی است. تا وقتی نمایهٔ مسیریابی فعال از سرورهای خودش استفاده می‌کند، تنظیمات (Settings) ← DNS در بالای صفحه این را می‌گوید، و تنظیمات آنجا فقط برای نمایه‌های مسیریابی دیگر اعمال می‌شوند.
  • یک سرور DNS محلی برای برنامه‌های دیگر روی 127.0.0.1 اجرا می‌شود. پورت آن تنظیمات (Settings) ← ورودی (Inbound) ← پورت سرور DNS (DNS server port) است (پیش‌فرض 5533).