Skip to content

Naive — sing-box

Naive یک پراکسی TCP/HTTP-mux است که برای شبیه شدن به ترافیک معمولی HTTPS یا HTTP/3 طراحی شده. sing-box هر دو سمت را پیاده‌سازی می‌کند و ضامن‌های مستقیمی برای کنترل‌کنندهٔ ازدحام و پنجره‌های کنترل جریان پشتهٔ QUIC quiche همراه ارائه می‌دهد.

ورودی

type: "naive":

فیلدنوعپیش‌فرضمقادیر مجازتوضیحات
users[]auth.User[][{username, password}]کاربران پذیرفته‌شده.
networkNetworkList(tcp+udp)tcp | udp | محدود کردن به فقط TCP یا فقط UDP.
quic_congestion_controlstring(QUIC default) | TBBR | B2ON | QBIC | RENOالگوریتم کنترل ازدحام QUIC که به پشتهٔ quiche منتقل می‌شود. چهار کد ۴-حرفی پذیرفته می‌شوند: TBBR (BBRv1)، B2ON (BBRv2)، QBIC (CUBIC)، RENO.

منبع: option/naive.go:19-25 · ثابت‌شده در v1.13.11 (553cfa1)

این ساختار ListenOptions و InboundTLSOptionsContainer را درون خود جای می‌دهد. یک پیکربندی TLS الزامی است — Naive همیشه روی سیم TLS-wrapped است.

خروجی

type: "naive":

فیلدنوعپیش‌فرضمقادیر مجازتوضیحات
usernamestring(unset)<string>نام‌کاربری احراز هویت پراکسی بالادست.
passwordstring(unset)<string>گذرواژهٔ احراز هویت پراکسی بالادست.
insecure_concurrencyint0<int>تعداد جریان‌های HTTP/2 همزمان مجاز در هر اتصال. مقدار ۰ از پیش‌فرض پشته استفاده می‌کند.
extra_headersbadoption.HTTPHeader{}{<header>: <value or list>}هدرهای اضافی که به هر درخواست افزوده می‌شوند.
stream_receive_window*byteformats.MemoryBytes(stack default)<bytes / MiB / GiB>پنجرهٔ کنترل جریان هر جریان. رشته‌های پسونددار مانند "4MiB" پذیرفته می‌شوند.
udp_over_tcp*UDPOverTCPOptions(disabled)UDPOverTCPOptionsبسته‌های UDP را داخل جریان Naive به سبک TCP بسته‌بندی می‌کند وقتی بالادست از دیتاگرام QUIC پشتیبانی نمی‌کند.
quicboolfalsetrue | falseاستفاده از HTTP/3 (QUIC) به‌جای HTTP/2 به‌عنوان ترابرد. سرور باید از هر دو پشتیبانی کند تا کلاینت‌ها به‌درستی fallback کنند.
quic_congestion_controlstring(QUIC default) | TBBR | B2ON | QBIC | RENOکنترل‌کنندهٔ ازدحام QUIC برای سمت کلاینت.
quic_session_receive_window*byteformats.MemoryBytes(stack default)<bytes / MiB / GiB>پنجرهٔ کنترل جریان QUIC برای هر نشست (نه هر جریان).

منبع: option/naive.go:27-40 · ثابت‌شده در v1.13.11 (553cfa1)

DialerOptions، ServerOptions و OutboundTLSOptionsContainer را درون خود جای می‌دهد.

مثال‌ها

ورودی (HTTP/2 روی TLS):

json
{
  "inbounds": [
    {
      "type": "naive",
      "tag": "naive-in",
      "listen": "::",
      "listen_port": 443,
      "users": [{ "username": "alice", "password": "<password>" }],
      "tls": {
        "enabled": true,
        "alpn": ["h2", "http/1.1"],
        "certificate_path": "/etc/ssl/cert.pem",
        "key_path": "/etc/ssl/key.pem"
      }
    }
  ]
}

خروجی با سوئیچ به HTTP/3 با کنترل ازدحام BBRv2:

json
{
  "outbounds": [
    {
      "type": "naive",
      "tag": "naive-out",
      "server": "example.com",
      "server_port": 443,
      "username": "alice",
      "password": "<password>",
      "quic": true,
      "quic_congestion_control": "B2ON",
      "quic_session_receive_window": "16MiB",
      "tls": {
        "enabled": true,
        "server_name": "example.com",
        "alpn": ["h3", "h2", "http/1.1"]
      }
    }
  ]
}

نکات

  • چهار کد کنترل ازدحام برچسب‌های ۴-حرفی حساس به حروف هستند که توسط پشتهٔ quiche استفاده می‌شوند:
    • TBBR — BBR v1
    • B2ON — BBR v2
    • QBIC — CUBIC
    • RENO — New Reno
  • stream_receive_window و quic_session_receive_window بایت‌های مقداری پسونددار را از طریق parser ‏byteformats.MemoryBytes می‌پذیرند — "4MiB"، "16MiB"، "1GiB". اعداد صحیح ساده به‌عنوان بایت خام تلقی می‌شوند.
  • insecure_concurrency پرچم تجربی چندجریانی کلاینت اصلی Naive است. تنظیم آن بالای حدوداً ۸ معمولاً سرعت بیشتری نمی‌دهد اما حافظهٔ بیشتری در هر اتصال مصرف می‌کند.
  • شکل udp_over_tcp همانند نسخهٔ Shadowsocks / TUIC است — {enabled, version}.

نکات بین‌هسته‌ای

  • Xray-core ‏Naive را پیاده‌سازی نمی‌کند. به Naive — Xray-core مراجعه کنید.
  • mihomo ‏Naive را پیاده‌سازی نمی‌کند. به Naive — mihomo مراجعه کنید.

منبع: option/naive.go:19-40 · v1.13.11 (553cfa1)

Core Tutorial اثر Argsment