TUIC — sing-box
sing-box نسخهٔ TUIC v5 — شکل مدرن UUID+گذرواژه — را پیادهسازی میکند. شکل تاریخی v4 با «token» پشتیبانی نمیشود. TUIC همیشه روی QUIC اجرا میشود، بنابراین بلوک tls تعبیهشده الزامی است.
ورودی
ورودی type: "tuic":
| فیلد | نوع | پیشفرض | مقادیر مجاز | توضیحات |
|---|---|---|---|---|
users | []TUICUser | [] | [TUICUser] | کاربران پذیرفتهشده. هر یک یک جفت UUID + گذرواژه دارد. |
congestion_control | string | cubic | cubic | new_reno | bbr | الگوریتم کنترل ازدحام QUIC. تنظیم در اینجا فقط جهت خروجی سمت سرور را تغییر میدهد؛ کلاینتها الگوریتم خود را انتخاب میکنند. |
auth_timeout | badoption.Duration | 3s | <duration> | چه مدت برای کلاینت منتظر میماند تا قاب احراز هویت را کامل کند، پیش از بستن اتصال QUIC. |
zero_rtt_handshake | bool | false | true | false | پذیرش دستدهیهای TLS با 0-RTT. اتصال کمی سریعتر میشود به قیمت از دست رفتن مقاومت در برابر حملهٔ بازپخش برای پنجرهٔ اولین بار 0-RTT. |
heartbeat | badoption.Duration | 10s | <duration> | فاصلهٔ بین قابهای QUIC PING که سرور برای زنده نگه داشتن نگاشتهای NAT ارسال میکند. |
منبع: option/tuic.go:5-14 · ثابتشده در v1.14.2 (af6e64c)
این ساختار ListenOptions، InboundTLSOptionsContainer و فیلدهای مشترک QUIC یعنی QUICOptions را درون خود جای میدهد — Hysteria2 → فیلدهای QUIC را ببینید. یک پیکربندی TLS الزامی است.
users[]
| فیلد | نوع | پیشفرض | مقادیر مجاز | توضیحات |
|---|---|---|---|---|
name | string | (unset) | <string> | نام نمایشی استفادهشده در آمار و لاگها. |
uuid | string | (required) | <UUID> | UUID کلاینت. |
password | string | (required) | <string> | گذرواژهٔ کلاینت. |
منبع: option/tuic.go:16-20 · ثابتشده در v1.14.2 (af6e64c)
خروجی
خروجی type: "tuic":
| فیلد | نوع | پیشفرض | مقادیر مجاز | توضیحات |
|---|---|---|---|---|
uuid | string | (required) | <UUID> | UUID کاربر پذیرفتهشده توسط سرور. |
password | string | (required) | <string> | گذرواژهٔ کاربر. |
congestion_control | string | cubic | cubic | new_reno | bbr | الگوریتم کنترل ازدحام QUIC برای جهت کلاینت-به-سرور. |
udp_relay_mode | string | native | native | quic | نحوهٔ تونل شدن بستههای UDP. native از دیتاگرامهای QUIC استفاده میکند؛ quic هر بسته UDP را در یک جریان QUIC اختصاصی میپیچد. native سریعتر است؛ quic از middleboxهایی که دیتاگرامهای QUIC را دور میاندازند عبور میکند. |
udp_over_stream | bool | false | true | false | استفاده از قاببندی UDP-over-stream که برای کلاینتهای TUIC با پشتههای QUIC بدون پشتیبانی از دیتاگرام معرفی شد. مذاکرهشده است؛ هر دو سمت باید آن را فعال کنند. |
zero_rtt_handshake | bool | false | true | false | استفاده از دستدهی TLS با 0-RTT در اتصال مجدد. |
heartbeat | badoption.Duration | 10s | <duration> | فاصلهٔ QUIC PING. |
network | NetworkList | (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)
