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
| فیلد | نوع | پیشفرض | مقادیر مجاز | توضیحات |
|---|---|---|---|---|
level | byte | 0 | <byte> | سطح policy که به کاربران جایگزین اعمال میشود. |
منبع: infra/conf/vmess.go:49-51 · ثابتشده در v1.260327.0 (d2758a0)
clients[] — شیء کاربر
هر مدخل clients[] یک VMessAccount بهعلاوهٔ فیلدهای مشترک کاربر (email, level) است:
| فیلد | نوع | پیشفرض | مقادیر مجاز | توضیحات |
|---|---|---|---|---|
id | string | (required) | <UUID> | UUID کاربر. شکل کنونی 8-4-4-4-12 یا hex بدون خطتیره. هنگام بارگذاری تجزیه و دوباره کنونی میشود. |
security | string | auto | auto | aes-128-gcm | chacha20-poly1305 | none | zero | رمز متقارن برای بار VMess. `auto` روی x86 با AES-NI گزینهٔ AES-GCM را انتخاب میکند و در غیر این صورت ChaCha20. `zero` رمزنگاری را غیرفعال میکند (فقط دستدهی). |
experiments | string | (unset) | <string> | پرچمهای آزمایشی جداشده با کاما که به پروتکل ارسال میشوند. در protobuf بهعنوان `TestsEnabled` ارسال میشوند. |
منبع: infra/conf/vmess.go:17-21 · ثابتشده در v1.260327.0 (d2758a0)
خروجی
settings برای یک خروجی با "protocol": "vmess":
| فیلد | نوع | پیشفرض | مقادیر مجاز | توضیحات |
|---|---|---|---|---|
address | *Address | (unset) | <host> | شکل سادهشده — نام میزبان یا IP سرور. وقتی تنظیم شود `vnext` بهصورت داخلی ساخته میشود. |
port | uint16 | (required with address) | <port> | پورت سرور (شکل سادهشده). |
level | uint32 | 0 | <uint32> | سطح کاربر (شکل سادهشده). |
email | string | (unset) | <string> | شناسهٔ کاربر که در آمار گزارش میشود. |
id | string | (required with address) | <UUID> | UUID کاربر (شکل سادهشده). |
security | string | auto | auto | aes-128-gcm | chacha20-poly1305 | none | zero | همان مجموعه رمز کلاینتهای ورودی. |
experiments | string | (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 و یک متعادلکنندهٔ بار مسیریابی استفاده کنید.
مثالها
ورودی حداقلی:
{
"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" }
}
]
}خروجی سادهشده:
{
"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)
