hiddify / hiddify-core

Other
116 stars 60 forks source link

درخواست اضافه کردن چندین Feature به هسته sing-box یا هسته شخصی سازی شده Hiddify #1

Open ghost opened 1 year ago

ghost commented 1 year ago

سلام خدمت گروه هیدیفای و تمامی دولوپرهایی که در این پروژه مشارکت دارن و اتصال به اینترنت آزادو فراهم میکنن. به عنوان یک کاربر میخواستم یک سری تجربه شخصیمو با شما در میان بذارم تا با استفاده از تجربه و تخصص شما، به بهتر شدن تجربه اتصال تمامی کاربران به اینترنت کمکی کرده باشم. با توجه به تعداد زیاد پروتکل پشتیبانی شده در هسته sing-box، من هم  مثل هیدیفای و خیلی از افراد دیگه از xray به sing-box مهاجرت کرده ام. ولی متاسفانه چندین قابلیت کاربردی xray در sing-box موجود نمی باشد. اصولا باید این ایشو رو در مخزن مربوط به هسته sing-box ایجاد میکردم ولی در تلاشهای قبلیم، دولوپر sing-box چندان پاسخگو نبوده. پس تصمیم گرفتم مطالبو اینجا عرض کنم تا شاید شما با PR روی هسته sing-box ایجاد کنید و یا در در نسخه سفارشی سازی شده خودتون قرار بدید.

قسمت Host: استفاده از Host دو کاربرد مهم دارد. یک) در حال حاضر سرورهای DNS، با توجه به موقعیت مبدا و Routing و ... Domain رو به یک سری IP ثابت ریزالو میکنن. مثلا اگه برا دامنه ای 100 عدد IP موجود باشه، DNS معمولا فقط 2 تا از این IP ها رو برمیگردونه که با فیلتر شدن این IP ها، DNS نمیتونه کاری بکنه. اهمیت این قسمت بیشتر در قسمت bypass (direct یا fragment) مشخص میشه. دو) کاملا مشخصه ما به DoH احتیاج داریم. متاسفانه در اکثر نرم افزار ها خود DoH با Bootstrap DNS ریزالو میشه که هسته sing-box هم به همین صورت کار میکنه و باید برای DoH یه address_resolver مشخص کرد تا با اون ریزالو بشه. ولی با توجه به اینکه استفاده از DNS over UDP همیشه در ایران مشکل ساز بوده، حتی ریزالو شدن DoH هم با مشکل همراهه. پس بهتره که قسمت Host داشته باشیم تا حداقل DoH رو خودمون بدون نیاز به DNS over UDP ریزالو کنیم. هسته xray این کارو با استفاده از قسمت hosts و domainStrategy بخوبی انجام میده. https://xtls.github.io/en/config/dns.html

قسمت Fallback DNS: برای کانکت شدن به سرور دیگه در صورت در دسترس نبودن سرور DNS. این قسمت هم در xray موجود هست ولی در هسته sing-box کدنویسی نشده. https://xtls.github.io/en/config/dns.html

قسمت Fragment: با استفاده از قسمت Host، مشکل DNS رفع میشه و مشکل SNI با Fragment. متاسفانه دولوپر هسته sing-box بعلت اینکه روش Fragment در چین کار نمیکنه، این روشو پیاده نمیکنه ولی همه بخوبی میدونیم که در ایران بخوبی کار میکنه. بنظر من اهمیت روش Fragment در استفاده از Cloudflare و مخصوصا DoH کلادفلر مشخص میشه. با قسمت hosts میشه دامین مربوط به DoH کلادفلر رو به هر Shared CDN Reverse Proxy IP ریزالو کرد و فقط باید مشکل SNI حل بشه که اگه detour:fragment موجود باشه، تا زمانی که کل IP های کلاد فلر باز باشه، عملا DoH کلادفلر قابل استفاده خواهد بود و درنتیجه ECH. https://github.com/XTLS/Xray-core/pull/2021 https://github.com/XTLS/Xray-core/pull/2131

خلاصه ایشو: در واقع در حال حاضر از چنین ابجکت DNS ای استفاده میکنم:

{
  "dns": {
    "servers": [
      {
        "tag": "dns-os",
        "address": "local",
        "detour": "direct"
      },
      {
        "tag": "dns-bootstrap",
        "address": "1.1.1.1",
        "strategy": "ipv4_only",
        "detour": "direct"
      },
      {
        "tag": "dns-doh",
        "address": "https://cloudflare-dns.com/dns-query",
        "address_resolver": "dns-bootstrap",
        "strategy": "ipv4_only",
        "detour": "direct"
      },
      {
        "tag": "dns-block",
        "address": "rcode://success"
      }
    ]
  }
}

ولی چیزی که میتونه بهتر باشه به این صورته:

{
  "dns": {
    "servers": [
      {
        "tag": "dns-host",
        "address": "hosts",
        "hosts": {
          "cloudflare-dns.com": [
            "104.16.248.249",
            "104.16.249.249"
          ],
          "domain:youtube.com": [
            "google.com"
          ]
        }
      },
      {
        "tag": "dns-os",
        "address": "local",
        "detour": "direct"
      },
      {
        "tag": "dns-bootstrap",
        "address": "1.1.1.1",
        "strategy": "ipv4_only",
        "detour": "direct"
      },
      {
        "tag": "dns-fallback",
        "address": "1.1.1.1",
        "strategy": "ipv4_only",
        "detour": "direct"
      },
      {
        "tag": "dns-doh",
        "address": "https://cloudflare-dns.com/dns-query",
        "address_resolver": "dns-hosts",
        "strategy": "ipv4_only",
        "detour": "fragment",
        "fallback": {
          "enabled": true,
          "timeout": 5,
          "fallback_dns_tag": "dns-fallback"
        }
      },
      {
        "tag": "dns-block",
        "address": "rcode://success"
      }
    ]
  }
}
hiddify-com commented 1 year ago

سعی میکنیم به یه شکلی فراهمش کنیم

hiddify-com commented 9 months ago

به جز مورد اول سایر موارد انجام شده.

Pedro-e commented 9 months ago

آی او اس هم اگر مثل اندروید زود به زود پیشرفت کنه عالی میشه دمتون گرم 🔥