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_controlstringbbrbbr | cubic | renoکنترل‌کنندهٔ ازدحام برای شنوندهٔ HTTP/3 (QUIC): bbr (پیش‌فرض؛ مقدار خالی یعنی bbr)، cubic یا reno. هر مقدار دیگری هنگام راه‌اندازی خطا می‌دهد.

منبع: option/naive.go:9-15 · ثابت‌شده در v1.14.2 (af6e64c)

این ساختار 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(stack default)bbr | bbr2 | cubic | renoکنترل‌کنندهٔ ازدحامی که پشتهٔ QUIC کلاینت وقتی quic برابر true است به کار می‌برد: bbr (BBRv1)، bbr2، cubic یا reno. مقدار خالی پیش‌فرض پشته را نگه می‌دارد؛ هر مقدار دیگری هنگام راه‌اندازی خطا می‌دهد.
quic_session_receive_window*byteformats.MemoryBytes(stack default)<bytes / MiB / GiB>پنجرهٔ کنترل جریان QUIC برای هر نشست (نه هر جریان).

منبع: option/naive.go:17-30 · ثابت‌شده در v1.14.2 (af6e64c)

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": "bbr2",
      "quic_session_receive_window": "16MiB",
      "tls": {
        "enabled": true,
        "server_name": "example.com",
        "alpn": ["h3", "h2", "http/1.1"]
      }
    }
  ]
}

نکات ​

  • quic_congestion_control نام‌های حروف‌کوچک می‌پذیرد. خروجی (کلاینت QUIC مبتنی بر Cronet) bbr، bbr2، cubic و reno را می‌پذیرد؛ ورودی (شنوندهٔ HTTP/3) bbr، cubic و reno را، با bbr به‌عنوان پیش‌فرض. کدهای ۴-حرفی quiche (TBBR، B2ON، QBIC، 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:9-30 · v1.14.2 (af6e64c)

Core Tutorial اثر Argsment