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-14 · ثابت‌شده در v1.14.2 (af6e64c)

این ساختار ListenOptions، InboundTLSOptionsContainer و فیلدهای مشترک QUIC یعنی QUICOptions را درون خود جای می‌دهد — Hysteria2 → فیلدهای QUIC را ببینید. یک پیکربندی TLS الزامی است.

users[] ​

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

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

خروجی ​

خروجی 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:22-35 · ثابت‌شده در v1.14.2 (af6e64c)

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

مثال‌ها ​

ورودی:

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-35 · v1.14.2 (af6e64c)

Core Tutorial اثر Argsment