DNS

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

پیش از آنکه یک برنامه بتواند سایتی را باز کند، یک جست‌وجوی DNS نام سایت را به نشانی IP تبدیل می‌کند. این صفحه توضیح می‌دهد Throne برای هر جست‌وجو از کدام سرور DNS استفاده می‌کند، تنظیمات زبانهٔ دی‌ان‌اس (DNS) چه کاری انجام می‌دهند و نتیجهٔ تست نشت DNS را چگونه بخوانید. تنظیمات پیش‌فرض برای بیشتر افراد کار می‌کنند.

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

Throne درون هسته، حل‌کنندهٔ DNS (resolver) مخصوص به خود را دارد. این حل‌کننده از سه سرور DNS استفاده می‌کند:

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

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

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

منشأ پرس‌وجوها به حالت اتصال بستگی دارد:

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

تنظیمات

تنظیمات (Settings) ← تنظیمات مسیریابی (Routing Settings) ← دی‌ان‌اس (DNS) را باز کنید. تغییرات پس از کلیک روی تایید (OK) و راه‌اندازی دوبارهٔ اتصال اعمال می‌شوند.

تنظیم پیش‌فرض کارکرد
دی ان اس سمت-سرور (Remote DNS) https://8.8.8.8/dns-query سروری که از طریق پروکسی استفاده می‌شود. فهرست همچنین tls://8.8.8.8، tls://1.1.1.1، 8.8.8.8 و 1.1.1.1 را پیشنهاد می‌دهد.
دی ان اس مستقیم (Direct DNS) localhost سروری که بدون پروکسی استفاده می‌شود. localhost یعنی حل‌کنندهٔ DNS سیستم‌عامل شما. آن را نگه دارید، مگر اینکه کار نکند؛ در آن صورت سروری را انتخاب کنید که در شبکهٔ شما بدون پروکسی کار می‌کند. فهرست، حل‌کننده‌های عمومی در چین (223.5.5.5، 119.29.29.29)، ایران (178.22.122.100) و روسیه (77.88.8.8) را پیشنهاد می‌دهد.
Disable IPv6 (کنار هر سرور) خاموش به پرس‌وجوهای IPv6 (AAAA) که به آن سرور فرستاده می‌شوند، پاسخ خالی می‌دهد.
Local Override خالی سرور DNS‌ای که برای تبدیل نام سرورهای DNS شما به نشانی IP استفاده می‌شود. وقتی نمی‌توان از حل‌کنندهٔ DNS سیستم‌عامل استفاده کرد، یک نشانی IP اینجا تنظیم کنید.
سرور دی‌ان‌اس پیش‌فرض (Default DNS server) remote سرور پرس‌وجوهایی که هیچ قانون دیگری به آن‌ها رسیدگی نمی‌کند: remote یا direct.
Enable DNS Routing روشن پرس‌وجوهای دامنه‌هایی را که direct می‌روند، به DNS مستقیم می‌فرستد.
Respect Hosts File خاموش ابتدا از فایل hosts سیستم شما به پرس‌وجوهای A و AAAA پاسخ می‌دهد. فقط دامنه‌هایی که در این فایل فهرست شده‌اند تحت تأثیر قرار می‌گیرند.
Predefined Answers روشن پاسخ‌های ثابت با نحو فایل hosts. ورودی پیش‌فرض 127.0.0.1 localhost است.
فعال کردن IP جعلی (Enable FakeIP) خاموش FakeIP را ببینید.
FakeIP Disable IPv6 خاموش هیچ نشانی IPv6 جعلی نمی‌دهد؛ پرس‌وجوهای AAAA پاسخ خالی می‌گیرند.

دی ان اس سمت-سرور (Remote DNS)، دی ان اس مستقیم (Direct DNS) و Local Override این قالب‌ها را می‌پذیرند:

قالب مثال
DNS ساده 8.8.8.8 یا 8.8.8.8:53
DNS روی TCP tcp://8.8.8.8:53
DNS روی TLS tls://1.1.1.1
DNS روی HTTPS https://1.1.1.1/dns-query
DNS روی HTTP/3 h3://dns.example.com/dns-query
DNS روی QUIC quic://dns.example.com
سروری که شبکهٔ شما در اختیار می‌گذارد dhcp://auto
حل‌کنندهٔ DNS سیستم‌عامل شما (برای دی ان اس مستقیم) localhost

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

Predefined Answers ویرایشگری باز می‌کند که در آن هر ورودی در یک خط نوشته می‌شود:

127.0.0.1 localhost
10.0.0.5 nas.lan files.lan

دامنه‌ای که در این فهرست فقط یک نشانی IPv4 دارد، برای پرس‌وجوهای IPv6 پاسخ «no such domain» (چنین دامنه‌ای وجود ندارد) می‌گیرد، و برعکس. به این ترتیب برنامه‌ها نمی‌توانند ورودی شما را دور بزنند.

FakeIP

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

این کار دو مزیت دارد:

  • اتصال‌ها سریع‌تر آغاز می‌شوند، چون برنامه‌ها منتظر پاسخ واقعی DNS نمی‌مانند.
  • هیچ پرس‌وجوی DNS پیش از مسیریابی اتصال از دستگاه شما خارج نمی‌شود.

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

نکته‌هایی که باید بدانید:

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

پیشرفته

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

تنظیم پیش‌فرض کارکرد
Cache Capacity 65536 حافظهٔ نهان چند پاسخ را نگه می‌دارد.
Query Timeout 10s مدت انتظار برای پاسخ یک سرور DNS.
Optimistic Cache خاموش تا زمانی که یک پاسخ منقضی‌شده در پس‌زمینه تازه می‌شود، همچنان همان را ارائه می‌دهد. با Disable Cache یا Disable Expire قابل ترکیب نیست.
Optimistic Timeout 3d یک پاسخ منقضی‌شده تا چه مدت هنوز می‌تواند ارائه شود.
Disable Cache خاموش حافظهٔ نهان DNS را خاموش می‌کند.
Disable Expire خاموش پاسخ‌های ذخیره‌شده را پس از انقضا نگه می‌دارد.
Save Cache To File خاموش پاسخ‌های ذخیره‌شده و نشانی‌های FakeIP را در فایل حافظهٔ نهان هسته می‌نویسد تا پس از راه‌اندازی دوباره باقی بمانند. هر ورودی یک بار نوشتن روی دیسک هزینه دارد.
Reverse Mapping خاموش به خاطر می‌سپارد هر نشانی IP پاسخ‌داده‌شده به کدام دامنه تعلق دارد تا قوانین دامنه بتوانند با اتصال‌ها به آن نشانی منطبق شوند.

مدت‌زمان‌ها به‌صورت یک عدد و پس از آن یکی از ns، us، ms، s، m، h یا d نوشته می‌شوند، برای نمونه 5s یا 3d.

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

تست‌های نشت DNS

تست نشت DNS وب‌سایتی است که نشان می‌دهد کدام سرورهای DNS نام‌های آزمایشی آن را جست‌وجو کرده‌اند. نتیجه به حالت اتصال و نمایهٔ مسیریابی شما بستگی دارد.

این نتیجه‌ها مورد انتظارند:

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

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

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

ربایش و دی‌ان‌اس سیستم (منسوخ)

زبانهٔ ربایش (Hijack) در تنظیمات مسیریابی (Routing Settings) و گزینهٔ دی‌ان‌اس سیستم (System DNS) در Windows، در نسخهٔ 1.3.1 منسوخ شده‌اند و در نسخهٔ بعدی حذف خواهند شد. ربایش (Hijack) یک سرور DNS محلی اجرا می‌کرد که به دامنه‌های انتخاب‌شده با نشانی‌های ثابت پاسخ می‌داد، و دی‌ان‌اس سیستم (System DNS) تنظیم DNS در Windows را روی آن سرور می‌گذاشت. هر دو برای برنامه‌هایی بودند که پروکسی سیستمی را نادیده می‌گیرند. حالتvpn (Tun Mode) همین کاربرد را پوشش می‌دهد، پس آن‌ها را خاموش کنید و به‌جایشان از حالتvpn (Tun Mode) استفاده کنید.

تا وقتی ربایش فعال است، Throne هنگام راه‌اندازی یک هشدار نشان می‌دهد. کادر انتخاب دی‌ان‌اس سیستم (System DNS) پنهان است، مگر اینکه تنظیمات پایه (Basic Settings) ← استایل (Style) ← Show System DNS option روشن باشد.

در Android

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