Skip to content

VLESS — mihomo

mihomo در هر دو سمت از VLESS پشتیبانی می‌کند. پراکسی‌های خروجی در آرایهٔ سطح بالای proxies قرار می‌گیرند (یک شیء برای هر سرور). ورودی‌ها در آرایهٔ listeners قرار دارند. نام فیلدها برای خروجی‌ها از قرارداد تگ proxy: و برای ورودی‌های شنونده از قرارداد تگ inbound: پیروی می‌کند.

خروجی

ورودی تحت proxies: با type: vless. این ساختار BasicOption را درون خود جاسازی می‌کند (فیلدهای مشترک همهٔ خروجی‌ها: interface-name، routing-mark، ip-version، dialer-proxy، mptcp، …) که در صفحهٔ Proxies مستند شده است.

فیلدنوعپیش‌فرضمقادیر مجازتوضیحات
namestring(required)<string>نام یکتای پراکسی که در سایر بخش‌های YAML (proxy-groups، rules) ارجاع داده می‌شود.
serverstring(required)<host>میزبان یا IP سرور بالادست.
portint(required)<port>پورت سرور بالادست.
uuidstring(required)<UUID>UUID کاربری که سرور می‌پذیرد.
flowstring(empty) | xtls-rprx-visionالگوریتم flow. خالی برای VLESS ساده؛ `xtls-rprx-vision` حالت Vision را فعال می‌کند (نیازمند TLS یا REALITY).
tlsboolfalsetrue | falseپوشاندن جریان با TLS. برای `xtls-rprx-vision` الزامی است.
alpn[]string[]h2 | http/1.1فهرست ALPN ارائه‌شده در دست‌دهی TLS.
udpboolfalsetrue | falseاجازه به بازپخش بسته‌های UDP از این خروجی.
packet-addrboolfalsetrue | falseاستفاده از کدگذاری UDP قدیمی packet-addr به جای xudp.
xudpboolfalsetrue | falseاستفاده از کدگذاری xudp برای بسته‌های UDP (پیش‌فرض مدرن). با packet-addr ناسازگار.
packet-encodingstring(use udp/xudp flags)packetaddr | xudpانتخاب‌گر صریح packet-encoding؛ هنگام تنظیم بر پرچم‌های بولی اولویت دارد.
encryptionstring(unset)none | mlkem768x25519plus.<...>مجموعهٔ رمزنگاری اختیاری VLESS. `none` (یا بدون تنظیم) برای حالت کلاسیک.
networkstringtcptcp | ws | http | h2 | grpc | xhttpترابرد زیرین. وقتی غیر tcp باشد، بلوک `*-opts` متناظر الزامی است.
ech-optsECHOptions(disabled)ECHOptionsپیکربندی Encrypted Client Hello؛ به صفحهٔ TLS مراجعه کنید (فاز ۴).
reality-optsRealityOptions(disabled)RealityOptionsپیکربندی REALITY. نیازمند `tls: true`.
http-optsHTTPOptions(unset)HTTPOptionsتنظیمات `network: http` (تظاهر HTTP/1.1).
h2-optsHTTP2Options(unset)HTTP2Optionsتنظیمات `network: h2`.
grpc-optsGrpcOptions(unset)GrpcOptionsتنظیمات `network: grpc`.
ws-optsWSOptions(unset)WSOptionsتنظیمات `network: ws`.
xhttp-optsXHTTPOptions(unset)XHTTPOptionsتنظیمات `network: xhttp` (قاب‌بندی HTTP در XTLS).
ws-headersmap[string]string(unset){<header>: <value>}نگاشت سرآیند قدیمی برای WS — ترجیحاً از فیلد `headers` درون `ws-opts` استفاده کنید.
skip-cert-verifyboolfalsetrue | falseغیرفعال‌سازی راستی‌آزمایی گواهی TLS سرور. فقط برای آزمایش.
fingerprintstring(unset)<SHA256 hex>تثبیت گواهی TLS سرور به این اثرانگشت SHA-256.
certificatestring(unset)<PEM file path>گواهی کلاینت (mTLS).
private-keystring(unset)<key file path>کلید خصوصی مطابق با `certificate`.
servernamestring(unset)<SNI>بازنویسی SNI ارسالی در دست‌دهی TLS.
client-fingerprintstring(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>کلاینت‌های پذیرفته‌شده.
decryptionstring(unset)none | mlkem768x25519plus.<...>حالت رمزنگاری مورد انتظار ورودی. `none` یا بدون تنظیم، VLESS ساده را می‌پذیرد.
ws-pathstring(unset)/<path>مسیر WebSocket که ورودی ارائه می‌دهد.
xhttp-configXHTTPConfig(unset)XHTTPConfigتنظیمات ترابرد XHTTP؛ هنگامی که کلاینت‌ها از طریق xhttp متصل می‌شوند الزامی است.
grpc-service-namestring(unset)<service name>نام سرویس gRPC که ورودی ارائه می‌دهد.
certificatestring(unset)<PEM file path>گواهی TLS سرور (یا PEM درون‌خط).
private-keystring(unset)<key file path>کلید خصوصی TLS مطابق با `certificate`.
client-auth-typestring(none)no-client-cert | request-client-cert | require-any-client-cert | verify-client-cert-if-given | require-and-verify-client-certحالت احراز هویت متقابل TLS کلاینت.
client-auth-certstring(unset)<PEM file path>بستهٔ CA پذیرفته‌شده به‌عنوان ریشهٔ کلاینت.
ech-keystring(unset)<ECH config>مواد پیکربندی Encrypted Client Hello.
reality-configRealityConfig(disabled)RealityConfigپیکربندی سرور REALITY؛ به صفحهٔ TLS مراجعه کنید (فاز ۴).
mux-optionMuxOption(disabled)MuxOptionتنظیمات چندسوسازی (mux) سازگار با سبک sing.

منبع: listener/inbound/vless.go:12-26 · ثابت‌شده در v1.19.24 (a847246)

users[]

فیلدنوعپیش‌فرضمقادیر مجازتوضیحات
usernamestring(unset)<string>نام نمایشی کاربر، در آمار و لاگ‌ها استفاده می‌شود.
uuidstring(required)<UUID>UUID کاربر.
flowstring(empty) | xtls-rprx-visionالگوریتم flow هر کاربر.

منبع: listener/inbound/vless.go:28-32 · ثابت‌شده در v1.19.24 (a847246)

مثال‌ها

خروجی — VLESS ساده روی WebSocket با TLS:

yaml
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:

yaml
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:

yaml
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)

Core Tutorial اثر Argsment