Skip to content

VMess — Xray-core

VMess پروتکل کلاسیک V2Ray از نوع فقط AEAD است. Xray-core فقط نوع AEAD را پشتیبانی می‌کند — حالت قدیمی MD5-AEAD مبتنی بر alterId حذف شده است. زمان اجرا در زمان راه‌اندازی یک اطلاعیهٔ منسوخ‌شدن چاپ می‌کند که توصیه می‌کند به رمزنگاری VLESS مهاجرت کنید (infra/conf/vmess.go:67, 118).

ورودی

settings برای یک ورودی با "protocol": "vmess":

فیلدنوعپیش‌فرضمقادیر مجازتوضیحات
clients[]json.RawMessage(required)<user object array>فهرست کاربران پذیرفته‌شده. هر مدخل فیلدهای حساب VMess (id, security, experiments) را به‌علاوهٔ فیلدهای مشترک کاربر (email, level) نگه می‌دارد.
default*VMessDefaultConfig(unset)VMessDefaultConfigتنظیمات جایگزین کاربر وقتی یک اتصال ورودی با هیچ کلاینت پیکربندی‌شده‌ای تطبیق ندارد. امروز فقط فیلد `level` وجود دارد.

منبع: infra/conf/vmess.go:60-63 · ثابت‌شده در v1.260327.0 (d2758a0)

default

فیلدنوعپیش‌فرضمقادیر مجازتوضیحات
levelbyte0<byte>سطح policy که به کاربران جایگزین اعمال می‌شود.

منبع: infra/conf/vmess.go:49-51 · ثابت‌شده در v1.260327.0 (d2758a0)

clients[] — شیء کاربر

هر مدخل clients[] یک VMessAccount به‌علاوهٔ فیلدهای مشترک کاربر (email, level) است:

فیلدنوعپیش‌فرضمقادیر مجازتوضیحات
idstring(required)<UUID>UUID کاربر. شکل کنونی 8-4-4-4-12 یا hex بدون خط‌تیره. هنگام بارگذاری تجزیه و دوباره کنونی می‌شود.
securitystringautoauto | aes-128-gcm | chacha20-poly1305 | none | zeroرمز متقارن برای بار VMess. `auto` روی x86 با AES-NI گزینهٔ AES-GCM را انتخاب می‌کند و در غیر این صورت ChaCha20. `zero` رمزنگاری را غیرفعال می‌کند (فقط دست‌دهی).
experimentsstring(unset)<string>پرچم‌های آزمایشی جداشده با کاما که به پروتکل ارسال می‌شوند. در protobuf به‌عنوان `TestsEnabled` ارسال می‌شوند.

منبع: infra/conf/vmess.go:17-21 · ثابت‌شده در v1.260327.0 (d2758a0)

خروجی

settings برای یک خروجی با "protocol": "vmess":

فیلدنوعپیش‌فرضمقادیر مجازتوضیحات
address*Address(unset)<host>شکل ساده‌شده — نام میزبان یا IP سرور. وقتی تنظیم شود `vnext` به‌صورت داخلی ساخته می‌شود.
portuint16(required with address)<port>پورت سرور (شکل ساده‌شده).
leveluint320<uint32>سطح کاربر (شکل ساده‌شده).
emailstring(unset)<string>شناسهٔ کاربر که در آمار گزارش می‌شود.
idstring(required with address)<UUID>UUID کاربر (شکل ساده‌شده).
securitystringautoauto | aes-128-gcm | chacha20-poly1305 | none | zeroهمان مجموعه رمز کلاینت‌های ورودی.
experimentsstring(unset)<string>پرچم‌های آزمایشی که به سرور ارسال می‌شوند.
vnext[]*VMessOutboundTarget(use simplified shape)[{address,port,users:[user]}]شکل کامل — باید دقیقاً یک سرور با دقیقاً یک کاربر داشته باشد.

منبع: infra/conf/vmess.go:105-114 · ثابت‌شده در v1.260327.0 (d2758a0)

ساده‌شده در برابر vnext

خروجی یا شکل ساده‌شده (address, port, id, security, ...) را می‌پذیرد یا شکل کامل vnext را. شکل ساده‌شده به یک آرایهٔ vnext تک‌عضوی بازنویسی می‌شود (infra/conf/vmess.go:121-129). شکل کامل باید دقیقاً یک سرور با دقیقاً یک کاربر داشته باشد — برای چندین نقطه‌انتهایی از چندین خروجی VMess و یک متعادل‌کنندهٔ بار مسیریابی استفاده کنید.

مثال‌ها

ورودی حداقلی:

json
{
  "inbounds": [
    {
      "tag": "vmess-in",
      "listen": "0.0.0.0",
      "port": 443,
      "protocol": "vmess",
      "settings": {
        "clients": [
          { "id": "a3482e88-686a-4a58-8126-99c9df64b7bf", "email": "alice", "security": "auto" }
        ]
      },
      "streamSettings": { "network": "tcp", "security": "tls" }
    }
  ]
}

خروجی ساده‌شده:

json
{
  "outbounds": [
    {
      "tag": "vmess-out",
      "protocol": "vmess",
      "settings": {
        "address": "example.com",
        "port": 443,
        "id": "a3482e88-686a-4a58-8126-99c9df64b7bf",
        "security": "auto"
      },
      "streamSettings": { "network": "ws", "security": "tls", "wsSettings": { "path": "/vm" } }
    }
  ]
}

نکات

  • VMess در Xray فقط AEAD است. هیچ فیلد alterId در ساختار پیکربندی وجود ندارد. پیکربندی‌های مهاجرت‌داده‌شده از V2Ray با "alterId": <n> باید این فیلد را حذف کنند؛ کلاینت/سرور جدید به‌هرحال حالت قدیمی MD5-AEAD را رد می‌کند.
  • security: "auto" پیش‌فرض امن است: AES-GCM در سکوهایی با AES-NI و در غیر این صورت ChaCha20-Poly1305. رشته‌های security ناشناخته بی‌صدا به auto بازمی‌گردند (infra/conf/vmess.go:37-38).
  • security: "zero" فقط برای آزمون است — هیچ رمزنگاری متقارنی نیست، دست‌دهی تنها حفاظت رمزنگارانه است.
  • یک اطلاعیهٔ منسوخ‌شدن در زمان راه‌اندازی ("VMess (with no Forward Secrecy, etc.)") هربار که یک ورودی یا خروجی VMess بارگذاری شود چاپ می‌شود (infra/conf/vmess.go:67, 118). VLESS با رمزنگاری جدید mlkem768x25519plus جایگزین توصیه‌شده است.

نکات بین‌هسته‌ای

  • sing-box از users[].uuid به‌جای clients[].id استفاده می‌کند و گزینه‌های alter_id (snake_case)، global_padding و authenticated_length را نمایان می‌سازد که Xray دیگر پشتیبانی نمی‌کند. به VMess — sing-box مراجعه کنید.
  • mihomo یک شکل شیء پراکسی یکتا دارد، نام فیلد cipher را برای انتخابگر security به کار می‌برد و سوییچ‌های کدگذاری UDP (xudp, packet-addr, packet-encoding) را روی خروجی نمایان می‌سازد. به VMess — mihomo مراجعه کنید.

منبع: infra/conf/vmess.go:17-114 · v1.260327.0 (d2758a0)

Core Tutorial اثر Argsment