VLESS — mihomo
mihomo در هر دو سمت از VLESS پشتیبانی میکند. پراکسیهای خروجی در آرایهٔ سطح بالای proxies قرار میگیرند (یک شیء برای هر سرور). ورودیها در آرایهٔ listeners قرار دارند. نام فیلدها برای خروجیها از قرارداد تگ proxy: و برای ورودیهای شنونده از قرارداد تگ inbound: پیروی میکند.
خروجی
ورودی تحت proxies: با type: vless. این ساختار BasicOption را درون خود جاسازی میکند (فیلدهای مشترک همهٔ خروجیها: interface-name، routing-mark، ip-version، dialer-proxy، mptcp، …) که در صفحهٔ Proxies مستند شده است.
| فیلد | نوع | پیشفرض | مقادیر مجاز | توضیحات |
|---|---|---|---|---|
name | string | (required) | <string> | نام یکتای پراکسی که در سایر بخشهای YAML (proxy-groups، rules) ارجاع داده میشود. |
server | string | (required) | <host> | میزبان یا IP سرور بالادست. |
port | int | (required) | <port> | پورت سرور بالادست. |
uuid | string | (required) | <UUID> | UUID کاربری که سرور میپذیرد. |
flow | string | (empty) | | xtls-rprx-vision | الگوریتم flow. خالی برای VLESS ساده؛ `xtls-rprx-vision` حالت Vision را فعال میکند (نیازمند TLS یا REALITY). |
tls | bool | false | true | false | پوشاندن جریان با TLS. برای `xtls-rprx-vision` الزامی است. |
alpn | []string | [] | h2 | http/1.1 | فهرست ALPN ارائهشده در دستدهی TLS. |
udp | bool | false | true | false | اجازه به بازپخش بستههای UDP از این خروجی. |
packet-addr | bool | false | true | false | استفاده از کدگذاری UDP قدیمی packet-addr به جای xudp. |
xudp | bool | false | true | false | استفاده از کدگذاری xudp برای بستههای UDP (پیشفرض مدرن). با packet-addr ناسازگار. |
packet-encoding | string | (use udp/xudp flags) | packetaddr | xudp | انتخابگر صریح packet-encoding؛ هنگام تنظیم بر پرچمهای بولی اولویت دارد. |
encryption | string | (unset) | none | mlkem768x25519plus.<...> | مجموعهٔ رمزنگاری اختیاری VLESS. `none` (یا بدون تنظیم) برای حالت کلاسیک. |
network | string | tcp | tcp | ws | http | h2 | grpc | xhttp | ترابرد زیرین. وقتی غیر tcp باشد، بلوک `*-opts` متناظر الزامی است. |
ech-opts | ECHOptions | (disabled) | ECHOptions | پیکربندی Encrypted Client Hello؛ به صفحهٔ TLS مراجعه کنید (فاز ۴). |
reality-opts | RealityOptions | (disabled) | RealityOptions | پیکربندی REALITY. نیازمند `tls: true`. |
http-opts | HTTPOptions | (unset) | HTTPOptions | تنظیمات `network: http` (تظاهر HTTP/1.1). |
h2-opts | HTTP2Options | (unset) | HTTP2Options | تنظیمات `network: h2`. |
grpc-opts | GrpcOptions | (unset) | GrpcOptions | تنظیمات `network: grpc`. |
ws-opts | WSOptions | (unset) | WSOptions | تنظیمات `network: ws`. |
xhttp-opts | XHTTPOptions | (unset) | XHTTPOptions | تنظیمات `network: xhttp` (قاببندی HTTP در XTLS). |
ws-headers | map[string]string | (unset) | {<header>: <value>} | نگاشت سرآیند قدیمی برای WS — ترجیحاً از فیلد `headers` درون `ws-opts` استفاده کنید. |
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. |
client-fingerprint | string | (global) | chrome | firefox | safari | ios | edge | random | randomized | اثرانگشت client-hello مبتنی بر uTLS. در صورت عدم تنظیم به `global-client-fingerprint` بازمیگردد. |
منبع: adapter/outbound/vless.go:50-79 · ثابتشده در v1.19.24 (a847246)
ورودی
ورودی تحت listeners: با type: vless. BaseOption را جاسازی میکند (فیلدهای مشترک شنونده: listen، port).
| فیلد | نوع | پیشفرض | مقادیر مجاز | توضیحات |
|---|---|---|---|---|
users | []VlessUser | (required) | <VlessUser array> | کلاینتهای پذیرفتهشده. |
decryption | string | (unset) | none | mlkem768x25519plus.<...> | حالت رمزنگاری مورد انتظار ورودی. `none` یا بدون تنظیم، VLESS ساده را میپذیرد. |
ws-path | string | (unset) | /<path> | مسیر WebSocket که ورودی ارائه میدهد. |
xhttp-config | XHTTPConfig | (unset) | XHTTPConfig | تنظیمات ترابرد XHTTP؛ هنگامی که کلاینتها از طریق xhttp متصل میشوند الزامی است. |
grpc-service-name | string | (unset) | <service name> | نام سرویس gRPC که ورودی ارائه میدهد. |
certificate | string | (unset) | <PEM file path> | گواهی TLS سرور (یا PEM درونخط). |
private-key | string | (unset) | <key file path> | کلید خصوصی TLS مطابق با `certificate`. |
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؛ به صفحهٔ TLS مراجعه کنید (فاز ۴). |
mux-option | MuxOption | (disabled) | MuxOption | تنظیمات چندسوسازی (mux) سازگار با سبک sing. |
منبع: listener/inbound/vless.go:12-26 · ثابتشده در v1.19.24 (a847246)
users[]
| فیلد | نوع | پیشفرض | مقادیر مجاز | توضیحات |
|---|---|---|---|---|
username | string | (unset) | <string> | نام نمایشی کاربر، در آمار و لاگها استفاده میشود. |
uuid | string | (required) | <UUID> | UUID کاربر. |
flow | string | (empty) | | xtls-rprx-vision | الگوریتم flow هر کاربر. |
منبع: listener/inbound/vless.go:28-32 · ثابتشده در v1.19.24 (a847246)
مثالها
خروجی — VLESS ساده روی WebSocket با TLS:
proxies:
- name: vless-ws
type: vless
server: example.com
port: 443
uuid: a3482e88-686a-4a58-8126-99c9df64b7bf
network: ws
tls: true
udp: true
servername: example.com
ws-opts:
path: /vl
headers:
Host: example.comخروجی — REALITY + XTLS Vision:
proxies:
- name: vless-reality
type: vless
server: example.com
port: 443
uuid: a3482e88-686a-4a58-8126-99c9df64b7bf
flow: xtls-rprx-vision
tls: true
udp: true
xudp: true
servername: www.cloudflare.com
client-fingerprint: chrome
reality-opts:
public-key: <reality public key>
short-id: <short id>ورودی تحت listeners:
listeners:
- name: vless-in
type: vless
listen: 0.0.0.0
port: 443
users:
- username: alice
uuid: a3482e88-686a-4a58-8126-99c9df64b7bf
flow: xtls-rprx-vision
certificate: /etc/mihomo/server.crt
private-key: /etc/mihomo/server.key
reality-config:
enable: true
dest: www.cloudflare.com:443
short-id: ['', <short id>]نکات
- mihomo در خروجی دو دسته کلید برای کدگذاری UDP میپذیرد: بولیهای قدیمی
udp،packet-addr،xudpو انتخابگر مدرنpacket-encoding: xudp|packetaddr. وقتی انتخابگر تنظیم شود، بولیها نادیده گرفته میشوند. client-fingerprintدر mihomo مختص این هسته است: بازنویسی اثرانگشت uTLS برای هر پراکسی. همان مقدار را میتوان بهصورت سراسری از طریقglobal-client-fingerprintتنظیم کرد.mux-optionورودی، با چندسوسازی سبک sing سازگار است و با کلاینتهای multiplex سبک sing-box کار میکند؛ این همان قالب سیمی mux در Xray نیست.reality-configدر ورودی یک بستهٔ سمتسرور REALITY میگیرد (کلید خصوصی، مقصد dest، فهرست short-id). خروجی متناظر در سمت دیگر ازreality-optsبا نیمهٔ کلید عمومی استفاده میکند.
نکات بینهستهای
- Xray کاربران ورودی را در
clients[]باid(UUID) نگه میدارد، زنجیرهٔ غنیترfallbacksرا پشتیبانی میکند و رمزنگاری را با فیلدهایdecryption/encryptionکه باید تنظیم شوند کنترل میکند. به VLESS — Xray-core مراجعه کنید. - sing-box کاربران ورودی را در
users[]باuuidنگه میدارد و از بلوکهای جاسازیشدهٔtls/transport/multiplexمشترک بین همهٔ انواع ورودی استفاده میکند. به VLESS — sing-box مراجعه کنید. - mihomo ترابرد، TLS، REALITY، ECH و انتخاب کدگذاری UDP را در خود شیء پراکسی بستهبندی میکند — بلوک جداگانهای برای
streamSettings/tls/transportوجود ندارد.
منبع: adapter/outbound/vless.go:50-79 · v1.19.24 (a847246)
