VMess — mihomo
mihomo در هر دو سمت VMess را پشتیبانی میکند. شکل خروجی همهٔ ترابردها (ws، http، h2، grpc)، TLS، REALITY، ECH و دو کلید توسعهٔ احراز هویت را در خود دارد. ورودی عمداً سبکتر است — فهرست کاربران مستقیماً روی شنونده قرار میگیرد.
خروجی
ورودی تحت proxies: با type: vmess. این ساختار BasicOption را جاسازی میکند (فیلدهای مشترک خروجی: interface-name، routing-mark، ip-version، dialer-proxy، …) که در صفحهٔ Proxies مستند شده است (تکمیل فاز ۳).
| فیلد | نوع | پیشفرض | مقادیر مجاز | توضیحات |
|---|---|---|---|---|
name | string | (required) | <string> | نام یکتای پراکسی. |
server | string | (required) | <host> | میزبان یا IP سرور بالادست. |
port | int | (required) | <port> | پورت سرور بالادست. |
uuid | string | (required) | <UUID> | UUID کاربری که سرور میپذیرد. |
alterId | int | 0 | 0 | <int> | سازگاری قدیمی MD5-AEAD. برای حالت مدرن صرفاً AEAD آن را ۰ نگه دارید. |
cipher | string | auto | auto | aes-128-gcm | chacha20-poly1305 | none | zero | مجموعهرمز متقارن. نام `security` در mihomo. |
udp | bool | false | true | false | اجازه به بازپخش بستههای UDP از این خروجی. |
network | string | tcp | tcp | ws | http | h2 | grpc | ترابرد زیرین. |
tls | bool | false | true | false | پوشاندن جریان با TLS. |
alpn | []string | [] | h2 | http/1.1 | فهرست ALPN ارائهشده در دستدهی TLS. |
skip-cert-verify | bool | false | true | false | غیرفعالسازی راستیآزمایی گواهی TLS (فقط آزمایش). |
fingerprint | string | (unset) | <SHA256 hex> | تثبیت گواهی TLS سرور به این اثرانگشت SHA-256. |
certificate | string | (unset) | <PEM file path> | گواهی کلاینت (mTLS). |
private-key | string | (unset) | <key file path> | کلید خصوصی مطابق با `certificate`. |
servername | string | (unset) | <SNI> | بازنویسی SNI در TLS. |
ech-opts | ECHOptions | (disabled) | ECHOptions | پیکربندی Encrypted Client Hello. |
reality-opts | RealityOptions | (disabled) | RealityOptions | پیکربندی کلاینت REALITY. |
http-opts | HTTPOptions | (unset) | HTTPOptions | تنظیمات `network: http`. |
h2-opts | HTTP2Options | (unset) | HTTP2Options | تنظیمات `network: h2`. |
grpc-opts | GrpcOptions | (unset) | GrpcOptions | تنظیمات `network: grpc`. |
ws-opts | WSOptions | (unset) | WSOptions | تنظیمات `network: ws`. |
packet-addr | bool | false | true | false | استفاده از کدگذاری قدیمی packet-addr برای UDP. |
xudp | bool | false | true | false | استفاده از کدگذاری xudp برای بستههای UDP (پیشفرض مدرن). با packet-addr ناسازگار. |
packet-encoding | string | (use udp/xudp flags) | packetaddr | xudp | انتخابگر صریح packet-encoding؛ هنگام تنظیم بر پرچمهای بولی اولویت دارد. |
global-padding | bool | false | true | false | تمام نوشتنها را به طول یکنواخت پدینگ کنید. سرور باید مطابق باشد. |
authenticated-length | bool | false | true | false | استفاده از قاببندی authenticated-length. سرور باید مطابق باشد. |
client-fingerprint | string | (global) | chrome | firefox | safari | ios | edge | random | randomized | اثرانگشت client-hello مبتنی بر uTLS. |
منبع: adapter/outbound/vmess.go:43-72 · ثابتشده در v1.19.24 (a847246)
ws-opts
| فیلد | نوع | پیشفرض | مقادیر مجاز | توضیحات |
|---|---|---|---|---|
path | string | / | /<path> | مسیر WebSocket. |
headers | map[string]string | {} | {<header>: <value>} | سرآیندهای HTTP اضافی در درخواست upgrade. |
max-early-data | int | 0 | <bytes> | حداکثر بایتهای early-data بافر شده پیش از اتمام دستدهی WS. |
early-data-header-name | string | (unset) | <header name> | نام سرآیندی که برای حمل early-data بهصورت base64 استفاده میشود وقتی سرور انتظار آن را دارد. |
v2ray-http-upgrade | bool | false | true | false | استفاده از ترابرد HTTP-upgrade سبک V2Ray به جای WebSocket واقعی. |
v2ray-http-upgrade-fast-open | bool | false | true | false | ارسال بار کلاینت همراه با درخواست HTTP-upgrade برای صرفهجویی یک RTT. |
منبع: adapter/outbound/vmess.go:94-101 · ثابتشده در v1.19.24 (a847246)
grpc-opts
| فیلد | نوع | پیشفرض | مقادیر مجاز | توضیحات |
|---|---|---|---|---|
grpc-service-name | string | (required) | <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)
ورودی
ورودی تحت listeners: با type: vmess. BaseOption را جاسازی میکند (listen، port).
| فیلد | نوع | پیشفرض | مقادیر مجاز | توضیحات |
|---|---|---|---|---|
users | []VmessUser | (required) | <VmessUser array> | کلاینتهای پذیرفتهشده. |
ws-path | string | (unset) | /<path> | مسیر WebSocket ارائهشده در این شنونده. |
grpc-service-name | string | (unset) | <name> | نام سرویس gRPC پذیرفتهشده در این شنونده. |
certificate | string | (unset) | <PEM file path> | گواهی TLS سرور. |
private-key | string | (unset) | <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. |
reality-config | RealityConfig | (disabled) | RealityConfig | پیکربندی سرور REALITY. |
mux-option | MuxOption | (disabled) | MuxOption | تنظیمات چندسوسازی (سبک sing mux). |
منبع: listener/inbound/vmess.go:12-24 · ثابتشده در v1.19.24 (a847246)
users[]
| فیلد | نوع | پیشفرض | مقادیر مجاز | توضیحات |
|---|---|---|---|---|
username | string | (unset) | <string> | نام نمایشی. |
uuid | string | (required) | <UUID> | UUID کاربر. |
alterId | int | 0 | 0 | <int> | سازگاری قدیمی MD5-AEAD. |
منبع: listener/inbound/vmess.go:26-30 · ثابتشده در v1.19.24 (a847246)
مثالها
خروجی — VMess روی WebSocket با TLS:
proxies:
- name: vmess-ws
type: vmess
server: example.com
port: 443
uuid: a3482e88-686a-4a58-8126-99c9df64b7bf
alterId: 0
cipher: auto
udp: true
network: ws
tls: true
servername: example.com
ws-opts:
path: /vm
headers:
Host: example.comخروجی — VMess روی gRPC با REALITY:
proxies:
- name: vmess-grpc
type: vmess
server: example.com
port: 443
uuid: a3482e88-686a-4a58-8126-99c9df64b7bf
alterId: 0
cipher: auto
network: grpc
tls: true
servername: www.cloudflare.com
client-fingerprint: chrome
reality-opts:
public-key: <reality public key>
short-id: <short id>
grpc-opts:
grpc-service-name: GunServiceورودی تحت listeners:
listeners:
- name: vmess-in
type: vmess
listen: 0.0.0.0
port: 443
users:
- username: alice
uuid: a3482e88-686a-4a58-8126-99c9df64b7bf
alterId: 0
certificate: /etc/mihomo/server.crt
private-key: /etc/mihomo/server.keyنکات
- خروجی mihomo برای الگوریتم متقارن از
cipherاستفاده میکند. هم Xray (security) و هم sing-box (security) این فیلد را با نامی متفاوت میخوانند. مقادیر مجاز در همه یکسان است:auto،aes-128-gcm،chacha20-poly1305،none،zero. - سه کلید مختلف برای کدگذاری UDP در خروجی نمایش داده میشود:
udp(بولی — فعالسازی کلی بازپخش UDP)،xudp/packet-addr(انتخابگرهای بولی قدیمی) وpacket-encoding(انتخابگر صریح مدرن). هنگامی کهpacket-encodingتنظیم شود، انتخابگرهای بولی نادیده گرفته میشوند. global-paddingوauthenticated-lengthمعادلglobal_padding/authenticated_lengthدر sing-box هستند — هر دو طرف باید توافق داشته باشند.ws-opts.v2ray-http-upgradeدستدهی WebSocket را با ترابرد HTTP-upgrade سبک V2Ray عوض میکند؛v2ray-http-upgrade-fast-openبا پیوستکردن بار کلاینت یک RTT دیگر را نیز ذخیره میکند.
نکات بینهستهای
- Xray فقط AEAD است و
alterIdرا کاملاً حذف کرده است؛ نام فیلدsecurityاست (نهcipher). به VMess — Xray-core مراجعه کنید. - sing-box
alterIdرا حفظ میکند (در خروجیalter_idو در کاربران ورودیalterId)، ازsecurityبه جایcipherاستفاده میکند و چندسوسازی را از طریق بلوک اختصاصیmultiplexارائه میدهد. به VMess — sing-box مراجعه کنید.
منبع: adapter/outbound/vmess.go:43-72 · v1.19.24 (a847246)
