Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
ghost opened this issue Oct 6, 2023 · 3 comments

Comments

@ghost
Copy link

ghost commented Oct 6, 2023

سلام خدمت گروه هیدیفای و تمامی دولوپرهایی که در این پروژه مشارکت دارن و اتصال به اینترنت آزادو فراهم میکنن.
به عنوان یک کاربر میخواستم یک سری تجربه شخصیمو با شما در میان بذارم تا با استفاده از تجربه و تخصص شما، به بهتر شدن تجربه اتصال تمامی کاربران به اینترنت کمکی کرده باشم.
با توجه به تعداد زیاد پروتکل پشتیبانی شده در هسته 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.
XTLS/Xray-core#2021
XTLS/Xray-core#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
Copy link
Contributor

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

@hiddify-com
Copy link
Contributor

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

hiddify-com pushed a commit that referenced this issue Feb 8, 2024
@Pedro-e
Copy link

Pedro-e commented Feb 28, 2024

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants