Skip to content

VMess — Xray-core ​

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

ورودی ​

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

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

منبع: infra/conf/vmess.go:57-61 · ثابت‌شده در v26.9.9 (52a412d)

default ​

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

منبع: infra/conf/vmess.go:46-48 · ثابت‌شده در v26.9.9 (52a412d)

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

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

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

منبع: infra/conf/vmess.go:18-22 · ثابت‌شده در v26.9.9 (52a412d)

خروجی ​

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همان مجموعه رمز کلاینت‌های ورودی.
experimentsstring(unset)<string>پرچم‌های آزمایشی که به سرور ارسال می‌شوند.
vnext[]*VMessOutboundTarget(use simplified shape)[{address,port,users:[user]}]شکل کامل — باید دقیقاً یک سرور با دقیقاً یک کاربر داشته باشد.

منبع: infra/conf/vmess.go:111-120 · ثابت‌شده در v26.9.9 (52a412d)

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

خروجی یا شکل ساده‌شده (address, port, id, security, ...) را می‌پذیرد یا شکل کامل vnext را. شکل ساده‌شده به یک آرایهٔ vnext تک‌عضوی بازنویسی می‌شود (infra/conf/vmess.go:127-135). شکل کامل باید دقیقاً یک سرور با دقیقاً یک کاربر داشته باشد — برای چندین نقطه‌انتهایی از چندین خروجی 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 در ساختار پیکربندی وجود ندارد؛ "alterId": <n> را از پیکربندی‌های نوشته‌شده برای V2Ray حذف کنید — حالت MD5-AEAD به‌هرحال رد می‌شود.
  • security: "auto" پیش‌فرض امن است: AES-GCM در سکوهایی با AES-NI و در غیر این صورت ChaCha20-Poly1305. رشته‌های security ناشناخته بی‌صدا به auto بازمی‌گردند (infra/conf/vmess.go:34-35).
  • none و zero مقادیر شناخته‌شده‌ای برای security نیستند — پیکربندی‌هایی که آن‌ها را دارند بی‌صدا auto می‌گیرند.
  • یک اطلاعیهٔ منسوخ‌شدن در زمان راه‌اندازی ("VMess (with no Forward Secrecy, etc.)") هربار که یک ورودی یا خروجی VMess بارگذاری شود چاپ می‌شود (infra/conf/vmess.go:65, 124). 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:18-120 · v26.9.9 (52a412d)

Core Tutorial اثر Argsment