ترابرد — mihomo
mihomo گزینههای ترابرد را در بلوکهای *-opts روی هر ورودی پراکسی توزیع میکند. هیچ ساختار یکپارچهٔ ترابرد وجود ندارد: انتخاب ترابرد از طریق فیلد network پراکسی است و بلوک گزینههای متناظر خوانده میشود.
انتخابگر network
هر پراکسی mihomo که قادر به TLS است دارای فیلد network: است. مقادیر:
| مقدار | معنا |
|---|---|
tcp (پیشفرض) | TCP ساده؛ همهٔ بلوکهای *-opts نادیده گرفته میشوند. |
ws | WebSocket — ws-opts را میخواند. |
http | استتار HTTP ساده (بدون upgrade) — http-opts را میخواند. |
h2 | HTTP/2 — h2-opts را میخواند. |
grpc | gRPC روی HTTP/2 — grpc-opts را میخواند. |
xhttp | framing مبتنی بر XTLS HTTP (سازگار با Xray) — xhttp-opts را میخواند. |
چند پروتکل گزینههای اضافی دارند (مثلاً Trojan فقط از ws و grpc پشتیبانی میکند؛ VMess http و h2 را اضافه میکند). ماتریس در هر پروتکل مستند شده است.
ws-opts
| فیلد | نوع | پیشفرض | مقادیر مجاز | توضیحات |
|---|---|---|---|---|
path | string | / | /<path> | مسیر WebSocket. پارامتر کوئری `?ed=N` برای دادهٔ زودهنگام (0-RTT) پشتیبانی میشود و با قرارداد Xray مطابقت دارد. |
headers | map[string]string | {} | {<header>: <value>} | هدرهای HTTP اضافی روی درخواست upgrade. |
max-early-data | int | 0 | <bytes> | حداکثر بایتهای دادهٔ زودهنگام (0-RTT) که قبل از تکمیل دستدهی WS بافر میشوند. |
early-data-header-name | string | (unset) | <header name> | هدر مورد استفاده برای حمل دادهٔ زودهنگام کدگذاریشده با base64 وقتی سرور آن را زیر یک نام سفارشی انتظار دارد. |
v2ray-http-upgrade | bool | false | true | false | از ترابرد HTTP-upgrade سبک V2Ray بهجای WebSocket واقعی استفاده میکند — سربار framing پس از دستدهی را صرفهجویی میکند. |
v2ray-http-upgrade-fast-open | bool | false | true | false | بار کلاینت را روی خود درخواست HTTP-upgrade سوار میکند تا یک RTT صرفهجویی شود. |
منبع: adapter/outbound/vmess.go:94-101 · ثابتشده در v1.19.24 (a847246)
http-opts — استتار HTTP
| فیلد | نوع | پیشفرض | مقادیر مجاز | توضیحات |
|---|---|---|---|---|
method | string | GET | <HTTP method> | متد HTTP مورد استفاده توسط ترابرد استتار. |
path | []string | [/] | [/<path>] | لیستی از مسیرها برای چرخش بین آنها. کلاینت برای هر درخواست یکی را انتخاب میکند. |
headers | map[string][]string | {} | {<header>: [<value>]} | نگاشت نام هدر به لیستی از مقادیر. کلاینت برای هر درخواست یک مقدار را انتخاب میکند. |
منبع: adapter/outbound/vmess.go:74-78 · ثابتشده در v1.19.24 (a847246)
h2-opts — HTTP/2
| فیلد | نوع | پیشفرض | مقادیر مجاز | توضیحات |
|---|---|---|---|---|
host | []string | [] | [<hostname>] | لیست مقادیر هدر Host. کلاینت برای هر درخواست بهصورت تصادفی یکی را انتخاب میکند. |
path | string | / | /<path> | مسیر HTTP. |
منبع: adapter/outbound/vmess.go:80-83 · ثابتشده در v1.19.24 (a847246)
grpc-opts
| فیلد | نوع | پیشفرض | مقادیر مجاز | توضیحات |
|---|---|---|---|---|
grpc-service-name | string | (required) | <service name> | مسیر نام سرویس gRPC. |
grpc-user-agent | string | (unset) | <UA string> | بازنویسی User-Agent کلاینت gRPC. |
ping-interval | int | 0 | <seconds> | بازهٔ فریم PING در HTTP/2. ۰ غیرفعال میکند. |
max-connections | int | 0 | <int> | حداکثر کانالهای همزمان gRPC (پخششدگی mux). |
min-streams | int | 0 | <int> | حداقل جریانها در هر کانال قبل از تخصیص کانال جدید. |
max-streams | int | 0 | <int> | حداکثر جریانها در هر کانال. |
منبع: adapter/outbound/vmess.go:85-92 · ثابتشده در v1.19.24 (a847246)
xhttp-opts
بلوک XHTTP دارای ۲۳ فیلد متناظر با SplitHTTP در Xray است. پرکاربردترین آنها path, host, mode بهعلاوهٔ فیلدهای x-padding-* و فیلدهای مرتبط با نشست برای شکلدهی ترافیک است. تنظیمات استفادهٔ مجدد در زیربلوک تو در توی reuse-settings و پیکربندی نامتقارن دانلود در download-settings قرار دارد. برای ساختار کامل به صفحهٔ VLESS — mihomo مراجعه کنید (بین VLESS و دیگر پراکسیهای دارای XHTTP مشترک است).
مثالها
WebSocket — شکل معمول VMess:
proxies:
- name: vmess-ws
type: vmess
server: example.com
port: 443
uuid: <UUID>
cipher: auto
network: ws
tls: true
servername: example.com
ws-opts:
path: /vm
headers:
Host: example.com
max-early-data: 2048
early-data-header-name: Sec-WebSocket-ProtocolgRPC + REALITY (VLESS):
proxies:
- name: vless-grpc-reality
type: vless
server: example.com
port: 443
uuid: <UUID>
flow: xtls-rprx-vision
tls: true
servername: www.cloudflare.com
client-fingerprint: chrome
network: grpc
reality-opts:
public-key: <base64>
short-id: <hex>
grpc-opts:
grpc-service-name: GunServiceV2Ray HTTP-upgrade (جایگزین WS، با مصرف CPU کمتر):
proxies:
- name: vmess-httpupgrade
type: vmess
server: example.com
port: 443
uuid: <UUID>
cipher: auto
network: ws
tls: true
servername: example.com
ws-opts:
path: /up
v2ray-http-upgrade: true
v2ray-http-upgrade-fast-open: trueنکات
network: wsدر mihomo هم WebSocket استاندارد و هم ترابرد HTTP-upgrade به سبک V2Ray را پوشش میدهد (از طریق کلیدv2ray-http-upgradeدرws-opts). مقدار جداگانهای به نامnetwork: httpupgradeوجود ندارد.network: httpهمان استتار HTTP میراثی V2Ray است (HTTP/1.1 ساده با متدهای جعلی). باnetwork: h2(HTTP/2 واقعی) یاnetwork: xhttp(framing مدرن XTLS در Xray) اشتباه نگیرید.http-opts.pathوhttp-opts.headersبرای هر درخواست تصادفیسازی میشوند — mihomo برای هر اتصال جدید یک مقدار از هر لیست انتخاب میکند.ws-opts.v2ray-http-upgrade-fast-openبا ارسال بار کلاینت در کنار درخواست upgrade یک RTT صرفهجویی میکند. سرورهایی که قبل از پاسخ، کل upgrade را بافر میکنند (برخی load balancerها) آن را رد میکنند؛ قبل از استقرار هر دو حالت را آزمایش کنید.xhttp-optsمسیر سازگار با Xray برای کلاینتهایی است که باید با سرورهایnetwork: splithttpدر Xray صحبت کنند. نام فیلدها دقیقاً با SplitHTTP در Xray مطابقت دارد (با kebab-case).
نکات بینهستهای
- Xray-core از
streamSettings.networkبهعلاوهٔ یک بلوک*Settingsدر هر ترابرد استفاده میکند. گونههای TCP-with-header-obfs, mKCP و SplitHTTP دارد که mihomo تحت آن نامها آنها را آشکار نمیکند. به Transport — Xray-core مراجعه کنید. - sing-box از بلوک چندریختی
transport: { type, ... }تعبیهشده روی هر پراکسی استفاده میکند. به Transport — sing-box مراجعه کنید.
منبع: adapter/outbound/vmess.go:74-101 · v1.19.24 (a847246)
