پرش به محتویات

گروه DNS

همهٔ قابلیت‌های هیدیفای

گروه DNS یک پرسش را از چند سرور DNS می‌پرسد و بهترین پاسخ را برمی‌گرداند. می‌تواند پاسخ‌هایی را که به محدوده‌های مسدود اشاره می‌کنند کنار بگذارد، تا پاسخ مسموم یک resolver فیلترشده برنده نشود. این یک سرور DNS است: "type": "group" در فهرست dns.servers. نوع group در sing-box اصلی هست؛ هیدیفای mode، ignore_ranges، error_ttl، win_ttl و member_timeout را اضافه می‌کند و نوع قدیمی‌تر multi را هم به‌عنوان نام دیگر آن نگه می‌دارد.

چرا از آن استفاده کنیم

  • resolverهای شما ناپایدار یا کند هستند و می‌خواهید از هر کدام که کار می‌کند پاسخ بگیرید.
  • resolverهای شبکه برای بعضی نام‌ها نشانی جعلی برمی‌گردانند (مثلاً صفحهٔ مسدودسازی) و می‌خواهید آن پاسخ‌ها دور ریخته شوند.
  • می‌خواهید بیشتر وقت‌ها از یک سرور استفاده شود و بقیه فقط وقتی آن سرور شکست خورد جایش را بگیرند.

چطور از فیلترینگ عبور می‌کند

فیلترینگ DNS معمولاً به نام مسدود با یک نشانی ثابت پاسخ می‌دهد، مثل صفحهٔ مسدودسازی در یک محدودهٔ خصوصی. ignore_ranges رکوردهای A و AAAA را که در این محدوده‌ها هستند حذف می‌کند. پاسخی که دیگر نشانی‌ای در آن نمانده پاسخ حساب نمی‌شود، پس گروه منتظر سرور دیگری می‌ماند، مثلاً یک سرور رمزنگاری‌شده که از پراکسی عبور می‌کند. وقتی فیلتر پرسش را دور می‌ریزد یا با نشانی‌ای پاسخ می‌دهد که شما در فهرست نیاورده‌اید، کمکی نمی‌کند.

چطور کار می‌کند

گروه چهار حالت دارد:

حالت کارش
parallel (پیش‌فرض) از همهٔ سرورها هم‌زمان می‌پرسد و اولین پاسخ خوب را برمی‌گرداند.
sequential از سرورها یکی‌یکی و به ترتیب می‌پرسد تا یکی پاسخ خوب بدهد. سروری که شکست خورده تا error_ttl بعد از بقیه پرسیده می‌شود و هر سرور سهم محدودی از زمان پرسش دارد.
stable فقط از سرور فعلی‌اش می‌پرسد. وقتی آن سرور شکست بخورد، از بقیه هم‌زمان می‌پرسد و اولین سروری که پاسخ دهد سرور فعلی می‌شود.
fastest مثل stable، ولی سرور فعلی را فقط به مدت win_ttl نگه می‌دارد. بعد دوباره از همهٔ سرورها هم‌زمان می‌پرسد و سریع‌ترین، سرور فعلی می‌شود.

در همهٔ حالت‌ها:

  • پاسخ خوب پاسخی است که پس از ignore_ranges هنوز رکورد دارد. پرسش A یا AAAA به نشانی نیاز دارد: CNAMEی که پس از حذف تنها مانده کافی نیست.
  • SERVFAIL و REFUSED شکست حساب می‌شوند.
  • پاسخ بدون جواب، مثل NXDOMAIN، نگه داشته می‌شود و فقط وقتی برگردانده می‌شود که هیچ سروری پاسخ خوب ندهد.

در حالت sequential:

  • سروری که شکست بخورد، یا پاسخش با ignore_ranges خالی شود، تا error_ttl بعد از بقیه پرسیده می‌شود؛ وقتی همه شکست بخورند باز هم پرسیده می‌شود. پس سرور اولِ مرده دیگر هر پرسش را شروع نمی‌کند. وقتی شبکه عوض شود، گروه شکست‌هایش را فراموش می‌کند.
  • برای هر سرور حداکثر member_timeout صبر می‌شود، یا اگر تنظیم نشده باشد، زمان باقی‌ماندهٔ پرسش میان سرورهایی که هنوز پرسیده نشده‌اند تقسیم می‌شود، دست‌کم ۲ ثانیه برای هر یک. سروری که معلق بماند، مثل سرور TCP یا TLS پشت پورتی که بسته‌ها را می‌اندازد، دیگر کل پرسش را به تنهایی مصرف نمی‌کند و سرورهای بعد از خودش بی‌پرسش نمی‌مانند.

در حالت‌های stable و fastest:

  • سرور فعلی نیمی از زمان باقی‌ماندهٔ پرسش را می‌گیرد، تا اگر پاسخ نداد بقیه هنوز فرصت پاسخ داشته باشند.
  • سروری که شکست بخورد، یا پاسخش با ignore_ranges خالی شود، به مدت error_ttl کنار گذاشته می‌شود. وقتی همهٔ سرورها اخیراً شکست خورده باشند، از همه پرسیده می‌شود.
  • وقتی شبکه عوض می‌شود، گروه شکست‌ها و سرور فعلی‌اش را فراموش می‌کند.

پیکربندی

{
  "dns": {
    "servers": [
      { "type": "udp", "tag": "local", "server": "192.168.1.1" },
      { "type": "https", "tag": "remote", "server": "1.1.1.1", "detour": "proxy" },
      {
        "type": "group",
        "tag": "dns-group",
        "servers": ["local", "remote"],
        "mode": "stable",
        "ignore_ranges": ["10.10.34.0/24"],
        "error_ttl": "1m",
        "win_ttl": "10m"
      }
    ]
  }
}
فیلد نوع پیش‌فرض معنی
servers list of strings الزامی tag سرورهای DNS گروه، به ترتیب. گروه نمی‌تواند گروه دیگر یا سرور fakeip داشته باشد.
mode string parallel parallel، sequential، stable یا fastest.
ignore_ranges list of IP prefixes رکوردهای A و AAAA در این محدوده‌ها از پاسخ‌ها حذف می‌شوند.
error_ttl duration 1m در sequential: مدتی که سرور شکست‌خورده آخر پرسیده می‌شود؛ در stable و fastest: مدتی که کنار گذاشته می‌شود.
member_timeout duration در sequential: بیشترین زمان انتظار برای یک سرور. تنظیم‌نشده یعنی زمان باقی‌ماندهٔ پرسش میان سرورهای پرسیده‌نشده تقسیم شود، دست‌کم ۲ ثانیه برای هر یک.
win_ttl duration 10m در fastest: مدتی که سریع‌ترین سرور، سرور فعلی می‌ماند.

نوع منسوخ "type": "multi" همچنان بارگذاری می‌شود: "parallel": true یعنی "mode": "parallel" و در غیر این صورت "mode": "sequential".

حالت‌های stable و fastest از sing-box-lx گرفته شده‌اند.

همچنین ببینید


اخرین بروزرسانی: 26 فوریهٔ 2026

نظرات