Skip to content

TUIC — sing-box

sing-box نسخهٔ TUIC v5 — شکل مدرن UUID+گذرواژه — را پیاده‌سازی می‌کند. شکل تاریخی v4 با «token» پشتیبانی نمی‌شود. TUIC همیشه روی QUIC اجرا می‌شود، بنابراین بلوک tls تعبیه‌شده الزامی است.

ورودی

ورودی type: "tuic":

فیلدنوعپیش‌فرضمقادیر مجازتوضیحات
users[]TUICUser[][TUICUser]کاربران پذیرفته‌شده. هر یک یک جفت UUID + گذرواژه دارد.
congestion_controlstringcubiccubic | new_reno | bbrالگوریتم کنترل ازدحام QUIC. تنظیم در اینجا فقط جهت خروجی سمت سرور را تغییر می‌دهد؛ کلاینت‌ها الگوریتم خود را انتخاب می‌کنند.
auth_timeoutbadoption.Duration3s<duration>چه مدت برای کلاینت منتظر می‌ماند تا قاب احراز هویت را کامل کند، پیش از بستن اتصال QUIC.
zero_rtt_handshakeboolfalsetrue | falseپذیرش دست‌دهی‌های TLS با 0-RTT. اتصال کمی سریع‌تر می‌شود به قیمت از دست رفتن مقاومت در برابر حملهٔ بازپخش برای پنجرهٔ اولین بار 0-RTT.
heartbeatbadoption.Duration10s<duration>فاصلهٔ بین قاب‌های QUIC PING که سرور برای زنده نگه داشتن نگاشت‌های NAT ارسال می‌کند.

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

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

users[]

فیلدنوعپیش‌فرضمقادیر مجازتوضیحات
namestring(unset)<string>نام نمایشی استفاده‌شده در آمار و لاگ‌ها.
uuidstring(required)<UUID>UUID کلاینت.
passwordstring(required)<string>گذرواژهٔ کلاینت.

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

خروجی

خروجی type: "tuic":

فیلدنوعپیش‌فرضمقادیر مجازتوضیحات
uuidstring(required)<UUID>UUID کاربر پذیرفته‌شده توسط سرور.
passwordstring(required)<string>گذرواژهٔ کاربر.
congestion_controlstringcubiccubic | new_reno | bbrالگوریتم کنترل ازدحام QUIC برای جهت کلاینت-به-سرور.
udp_relay_modestringnativenative | quicنحوهٔ تونل شدن بسته‌های UDP. `native` از دیتاگرام‌های QUIC استفاده می‌کند؛ `quic` هر بسته UDP را در یک جریان QUIC اختصاصی می‌پیچد. `native` سریع‌تر است؛ `quic` از middlebox‌هایی که دیتاگرام‌های QUIC را دور می‌اندازند عبور می‌کند.
udp_over_streamboolfalsetrue | falseاستفاده از قاب‌بندی UDP-over-stream که برای کلاینت‌های TUIC با پشته‌های QUIC بدون پشتیبانی از دیتاگرام معرفی شد. مذاکره‌شده است؛ هر دو سمت باید آن را فعال کنند.
zero_rtt_handshakeboolfalsetrue | falseاستفاده از دست‌دهی TLS با 0-RTT در اتصال مجدد.
heartbeatbadoption.Duration10s<duration>فاصلهٔ QUIC PING.
networkNetworkList(tcp+udp)tcp | udp | محدود کردن به فقط TCP یا فقط UDP.

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

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

مثال‌ها

ورودی:

json
{
  "inbounds": [
    {
      "type": "tuic",
      "tag": "tuic-in",
      "listen": "::",
      "listen_port": 443,
      "users": [
        { "name": "alice", "uuid": "a3482e88-686a-4a58-8126-99c9df64b7bf", "password": "<password>" }
      ],
      "congestion_control": "bbr",
      "auth_timeout": "3s",
      "heartbeat": "10s",
      "tls": {
        "enabled": true,
        "alpn": ["h3"],
        "certificate_path": "/etc/ssl/cert.pem",
        "key_path": "/etc/ssl/key.pem"
      }
    }
  ]
}

خروجی:

json
{
  "outbounds": [
    {
      "type": "tuic",
      "tag": "tuic-out",
      "server": "example.com",
      "server_port": 443,
      "uuid": "a3482e88-686a-4a58-8126-99c9df64b7bf",
      "password": "<password>",
      "congestion_control": "bbr",
      "udp_relay_mode": "native",
      "zero_rtt_handshake": false,
      "heartbeat": "10s",
      "tls": { "enabled": true, "server_name": "example.com", "alpn": ["h3"] }
    }
  ]
}

نکات

  • udp_relay_mode: native پیش‌فرض توصیه‌شده است. فقط در صورتی به quic سوئیچ کنید که از یک middlebox عبور می‌کنید که دیتاگرام‌های QUIC را با DPI دور می‌اندازد.
  • zero_rtt_handshake: true در اتصال مجدد ‏0-RTT را فعال می‌کند. اولین اتصال همچنان یک دست‌دهی کامل انجام می‌دهد. این بهینه‌سازی در شبکه‌های موبایل که اغلب دوباره resolve / متصل می‌شوند بیشترین اثر را دارد.
  • auth_timeout در سرور اعمال می‌شود. اگر ورودی هیچ قاب احراز هویتی در این بازه نبیند، اتصال QUIC بی‌صدا بسته می‌شود.
  • udp_over_stream یک ضامن سازگاری است — هیچ انحراف مشخصاتی در سرور TUIC درگیر نیست؛ هر دو سمت فقط باید موافق باشند.

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

  • Xray-core از TUIC پشتیبانی نمی‌کند. به TUIC — Xray-core مراجعه کنید.
  • mihomo از نام فیلدها در kebab-case (congestion-controller، udp-relay-mode) استفاده می‌کند، شکل قدیمی‌تر token را برای سازگاری پشتیبانی می‌کند و ضامن‌های تنظیم QUIC بیشتری (اندازهٔ پنجره‌ها، کشف MTU، نمایه BBR) ارائه می‌دهد. همچنین یک بلوک سطح بالای منحصربه‌فرد tuic-server به‌عنوان روشی جایگزین برای اعلام یک ورودی دارد. به TUIC — mihomo مراجعه کنید.

منبع: option/tuic.go:5-33 · v1.13.11 (553cfa1)

Core Tutorial اثر Argsment