TUIC — mihomo
mihomo در هر دو سمت از TUIC v4 (مبتنی بر توکن) و TUIC v5 (UUID+password) پشتیبانی میکند. دو راه برای اعلام ورودی وجود دارد: ورودی استاندارد listeners:، یا بلوک سطح بالای tuic-server.
خروجی
ورودی تحت proxies: با type: tuic. BasicOption را جاسازی میکند.
| فیلد | نوع | پیشفرض | مقادیر مجاز | توضیحات |
|---|---|---|---|---|
name | string | (required) | <string> | نام یکتای پراکسی. |
server | string | (required) | <host> | میزبان یا IP سرور بالادست. |
port | int | (required) | <port> | پورت سرور بالادست. |
token | string | (unset) | <string> | توکن قدیمی TUIC v4. با `uuid`+`password` (v5) ناسازگار. |
uuid | string | (required for v5) | <UUID> | UUID کاربر (TUIC v5). |
password | string | (required for v5) | <string> | گذرواژهٔ کاربر (TUIC v5). |
ip | string | (unset) | <host> | بازنویسی IP مقصد پس از تحلیل نام. زمانی به کار میآید که SNI / گواهی برای نامی متفاوت از IP واقعی سرور باشد. |
heartbeat-interval | int | 10000 | <milliseconds> | بازهٔ ضربان قلب QUIC. **میلیثانیه**، نه ثانیه. |
alpn | []string | [h3] | h3 | فهرست ALPN. TUIC به ALPN HTTP/3 نیاز دارد. |
reduce-rtt | bool | false | true | false | استفاده از دستدهی 0-RTT در اتصال مجدد. |
request-timeout | int | 8000 | <milliseconds> | زمان انتظار پاسخ سرور برای فریم connect. میلیثانیه. |
udp-relay-mode | string | native | native | quic | نحوهٔ تونلشدن بستههای UDP. `native` (دیتاگرام) سریعتر است؛ `quic` (جریان برای هر بسته) از طریق میانجعبههایی که دیتاگرام را مسدود میکنند کار میکند. |
congestion-controller | string | cubic | cubic | new_reno | bbr | bbr_meta_v1 | bbr_meta_v2 | کنترلکنندهٔ ازدحام QUIC. `bbr` پیادهسازی v2 mihomo است. `bbr_meta_v1`/`bbr_meta_v2` گونههای قدیمی را برای سازگاری متقابل نگه میدارند. |
disable-sni | bool | false | true | false | حذف کامل افزونهٔ SNI از TLS Client Hello. |
max-udp-relay-packet-size | int | 1252 | <bytes> | حداکثر اندازهٔ بار UDP پیش از قطعهبندی. |
fast-open | bool | false | true | false | ارسال فریم proxy-request در همان پرواز با دستدهی QUIC. |
max-open-streams | int | 100 | <int> | حداکثر جریانهای همزمان به ازای هر اتصال QUIC. |
cwnd | int | 32 | <int> | پنجرهٔ ازدحام اولیه برحسب بسته. پیشفرض ۳۲ است (`transport/tuic/common/congestion.go:17-19`). |
bbr-profile | string | (unset) | default | aggressive | پروفایل تنظیم BBR هنگامی که `congestion-controller: bbr`. |
skip-cert-verify | bool | false | true | false | غیرفعالسازی راستیآزمایی TLS (فقط آزمایش). |
fingerprint | string | (unset) | <SHA256 hex> | تثبیت اثرانگشت گواهی TLS سرور. |
certificate | string | (unset) | <PEM file path> | گواهی کلاینت (mTLS). |
private-key | string | (unset) | <key file path> | کلید خصوصی برای `certificate`. |
recv-window-conn | int | 0 | <bytes> | پنجرهٔ دریافت اولیه به ازای هر اتصال. ۰ پیشفرض quic-go را حفظ میکند. |
recv-window | int | 0 | <bytes> | پنجرهٔ دریافت اولیه به ازای هر جریان. ۰ پیشفرض quic-go را حفظ میکند. |
disable-mtu-discovery | bool | false | true | false | صرفنظر از کشف MTU مسیر؛ در شبکههایی که پروبها را دور میاندازند مفید است. |
max-datagram-frame-size | int | 1252 | <bytes> | حداکثر اندازهٔ فریم دیتاگرام QUIC. |
sni | string | (server) | <SNI> | Server Name Indication در TLS. |
ech-opts | ECHOptions | (disabled) | ECHOptions | پیکربندی Encrypted Client Hello. |
udp-over-stream | bool | false | true | false | استفاده از قاببندی UDP-over-stream به جای دیتاگرامهای QUIC. |
udp-over-stream-version | int | 1 | 1 | نسخهٔ قاببندی. فقط ۱ تعریف شده است. |
منبع: adapter/outbound/tuic.go:34-69 · ثابتشده در v1.19.24 (a847246)
ورودی (تحت listeners)
ورودی تحت listeners: با type: tuic. BaseOption را جاسازی میکند.
| فیلد | نوع | پیشفرض | مقادیر مجاز | توضیحات |
|---|---|---|---|---|
token | []string | [] | [<string>] | فهرست توکن قدیمی TUIC v4. خالی v4 را غیرفعال میکند. |
users | map[string]string | {} | {<uuid>: <password>} | جدول کاربر TUIC v5. کلیدها UUID و مقادیر گذرواژه هستند. |
certificate | string | (required) | <PEM file path> | گواهی TLS سرور. |
private-key | string | (required) | <key file path> | کلید خصوصی TLS. |
client-auth-type | string | (none) | no-client-cert | request-client-cert | require-any-client-cert | verify-client-cert-if-given | require-and-verify-client-cert | حالت احراز هویت متقابل TLS کلاینت. |
client-auth-cert | string | (unset) | <PEM file path> | بستهٔ CA پذیرفتهشده بهعنوان ریشهٔ کلاینت. |
ech-key | string | (unset) | <ECH config> | مواد Encrypted Client Hello. |
congestion-controller | string | cubic | cubic | new_reno | bbr | bbr_meta_v1 | bbr_meta_v2 | کنترلکنندهٔ ازدحام QUIC در سمت سرور. |
max-idle-time | int | 0 | <milliseconds> | زمان بیکاری اتصال QUIC. ۰ پیشفرض QUIC را حفظ میکند. |
authentication-timeout | int | 1000 | <milliseconds> | حداکثر انتظار برای اینکه کلاینت فریم احراز هویت ارسال کند، بر حسب میلیثانیه. |
alpn | []string | [h3] | h3 | فهرست ALPN ارائهشده در دستدهی TLS. |
max-udp-relay-packet-size | int | 1252 | <bytes> | حداکثر اندازهٔ بار UDP پذیرفتهشده از کلاینتها. |
cwnd | int | 32 | <int> | پنجرهٔ ازدحام اولیه برحسب بسته. |
bbr-profile | string | (unset) | default | aggressive | پروفایل تنظیم BBR. |
mux-option | MuxOption | (disabled) | MuxOption | تنظیمات چندسوسازی سبک sing. |
منبع: listener/inbound/tuic.go:12-29 · ثابتشده در v1.19.24 (a847246)
ورودی (سطح بالا tuic-server)
بلوک سطح بالای tuic-server جایگزینی برای اعلام ورودی TUIC تحت listeners است. به دلایل قدیمی وجود دارد؛ برای پیکربندیهای جدید شکل شنونده را ترجیح دهید (بهطور طبیعی با بقیهٔ مدل ورودی همگن میشود).
| فیلد | نوع | پیشفرض | مقادیر مجاز | توضیحات |
|---|---|---|---|---|
enable | bool | false | true | false | کلید اصلی ورودی TUIC در سطح بالا. وقتی false باشد بقیهٔ بلوک نادیده گرفته میشود. |
listen | string | 127.0.0.1:0 | <host:port> | آدرس شنود. همان نحو سایر جاهای mihomo. |
token | []string | [] | [<string>] | فهرست توکن TUIC v4. |
users | map[string]string | {} | {<uuid>: <password>} | جدول کاربر TUIC v5. |
certificate | string | (required) | <PEM file path> | گواهی TLS سرور. |
private-key | string | (required) | <key file path> | کلید خصوصی TLS. |
congestion-controller | string | cubic | cubic | new_reno | bbr | bbr_meta_v1 | bbr_meta_v2 | کنترلکنندهٔ ازدحام QUIC در سمت سرور. |
max-idle-time | int | 0 | <milliseconds> | زمان بیکاری QUIC. |
authentication-timeout | int | 1000 | <milliseconds> | زمان فریم احراز هویت کلاینت. |
alpn | []string | [h3] | h3 | فهرست ALPN. |
max-udp-relay-packet-size | int | 1252 | <bytes> | حداکثر اندازهٔ بار UDP. |
cwnd | int | 32 | <int> | پنجرهٔ ازدحام اولیه. |
منبع: config/config.go:322-335 · ثابتشده در v1.19.24 (a847246)
مثالها
خروجی — TUIC v5:
proxies:
- name: tuic-v5
type: tuic
server: example.com
port: 443
uuid: a3482e88-686a-4a58-8126-99c9df64b7bf
password: <password>
udp-relay-mode: native
congestion-controller: bbr
sni: example.com
alpn: [h3]
heartbeat-interval: 10000
reduce-rtt: trueخروجی — TUIC v4 (قدیمی):
proxies:
- name: tuic-v4
type: tuic
server: example.com
port: 443
token: <token>
udp-relay-mode: native
sni: example.com
alpn: [h3]ورودی تحت listeners:
listeners:
- name: tuic-in
type: tuic
listen: 0.0.0.0
port: 443
users:
a3482e88-686a-4a58-8126-99c9df64b7bf: <alice password>
6f4e6c2c-8b1d-4b4f-8e2e-1f2b5c9e0a3b: <bob password>
certificate: /etc/mihomo/server.crt
private-key: /etc/mihomo/server.key
congestion-controller: bbr
alpn: [h3]tuic-server سطح بالا (شکل قدیمی):
tuic-server:
enable: true
listen: 0.0.0.0:443
users:
a3482e88-686a-4a58-8126-99c9df64b7bf: <password>
certificate: /etc/mihomo/server.crt
private-key: /etc/mihomo/server.key
congestion-controller: bbr
alpn: [h3]نکات
- خروجی TUIC در mihomo زمانها و بازهها را برحسب میلیثانیه ارائه میدهد، نه ثانیه —
heartbeat-interval: 10000ده ثانیه است. همrequest-timeoutو همauthentication-timeoutورودی از همین قرارداد پیروی میکنند. - پنج کنترلکنندهٔ ازدحام در
transport/tuic/common/congestion.go:20-53سیمکشی شدهاند.bbrپیادهسازی مدرن v2 است؛bbr_meta_v1/bbr_meta_v2صرفاً برای سازگاری متقابل با کلاینتهای قدیمی وجود دارند. cwnd: 0در زمان اجرا معادل32بسته است (transport/tuic/common/congestion.go:17-19).- بلوک سطح بالای
tuic-serverفقط میتواند یک ورودی TUIC اعلام کند. برای چند ورودی TUIC روی پورتهای مختلف، از شکلlisteners:استفاده کنید.
نکات بینهستهای
- Xray-core از TUIC پشتیبانی نمیکند. به TUIC — Xray-core مراجعه کنید.
- sing-box فقط از TUIC v5 پشتیبانی میکند (بدون شکل توکن)، از نامهای فیلد snake_case استفاده میکند (
congestion_control،udp_relay_mode)، رشتههای duration سبک Go ("3s") را برای زمانها میپذیرد و مجموعهٔ کوچکتری از انتخابهای کنترل ازدحام (cubic،new_reno،bbr) دارد. به TUIC — sing-box مراجعه کنید.
منبع: adapter/outbound/tuic.go:34-69 · v1.19.24 (a847246)
