VMess — sing-box
sing-box هر دو سمت VMess را پیادهسازی میکند. همچنان حالت قدیمی MD5-AEAD مبتنی بر alter_id را میپذیرد (برای سازگاری با کلاینتهای قدیمی مفید است) و دو ضامن جدیدتر — global_padding و authenticated_length — را اضافه میکند که باید بین کلاینت و سرور تطبیق داشته باشند.
ورودی
ورودی type: "vmess":
| فیلد | نوع | پیشفرض | مقادیر مجاز | توضیحات |
|---|---|---|---|---|
users | []VMessUser | [] | <VMessUser array> | فهرست کاربران پذیرفتهشده. |
multiplex | *InboundMultiplexOptions | (disabled) | InboundMultiplexOptions | چندسوسازی (mux) سمت سرور (smux/yamux/h2mux). |
transport | *V2RayTransportOptions | (plain TCP) | V2RayTransportOptions | بستهبندی ترابرد اختیاری به سبک V2Ray (ws، http، grpc، quic، hysteria). |
منبع: option/vmess.go:3-9 · ثابتشده در v1.13.11 (553cfa1)
این ساختار ListenOptions (آدرس شنود، پورت، sniff، …) و InboundTLSOptionsContainer (مواد TLS) را درون خود جای میدهد. هر دو میان همهٔ ورودیها مشترکاند و با صفحات Inbounds و TLS در فاز ۴ ارائه میشوند.
users[]
| فیلد | نوع | پیشفرض | مقادیر مجاز | توضیحات |
|---|---|---|---|---|
name | string | (unset) | <string> | نام نمایشی استفادهشده در آمار و لاگها. |
uuid | string | (required) | <UUID> | UUID کاربر. |
alterId | int | 0 | 0 | <int> | سازگاری با MD5-AEAD قدیمی. برای حالت مدرن فقط-AEAD آن را روی 0 نگه دارید؛ مقدار غیرصفر حالت منسوخشدهٔ رمز جریانی MD5 را فعال میکند و توسط برخی همتایان رد میشود. |
منبع: option/vmess.go:11-15 · ثابتشده در v1.13.11 (553cfa1)
خروجی
خروجی type: "vmess":
| فیلد | نوع | پیشفرض | مقادیر مجاز | توضیحات |
|---|---|---|---|---|
uuid | string | (required) | <UUID> | UUID کاربری که سرور بالادست میپذیرد. |
security | string | auto | auto | none | zero | aes-128-gcm | chacha20-poly1305 | aes-128-ctr | مجموعهرمز متقارن. `auto` روی x86 با AES-NI گزینهٔ AES-GCM و در جای دیگر ChaCha20 را انتخاب میکند. |
alter_id | int | 0 | 0 | <int> | حالت MD5-AEAD قدیمی. در اینجا با snake_case (در Xray از `alterId` استفاده میشود). |
global_padding | bool | false | true | false | همهٔ نوشتنها را به طول یکنواخت لایهگذاری میکند تا از انگشتنگاری مبتنی بر طول جلوگیری شود. باید با سمت سرور تطبیق داشته باشد. |
authenticated_length | bool | false | true | false | استفاده از قاببندی تجربی authenticated-length. باید با سمت سرور تطبیق داشته باشد. |
network | NetworkList | (tcp+udp) | tcp | udp | | محدود کردن به فقط TCP یا فقط UDP. خالی هر دو را فعال میکند. |
packet_encoding | string | (unset) | packetaddr | xudp | رمزگذاری برای بستههای UDP که از طریق جریان VMess حمل میشوند. |
multiplex | *OutboundMultiplexOptions | (disabled) | OutboundMultiplexOptions | چندسوسازی (mux) سمت کلاینت (باید با سرور تطبیق داشته باشد). |
transport | *V2RayTransportOptions | (plain TCP) | V2RayTransportOptions | بستهبندی ترابرد به سبک V2Ray. |
منبع: option/vmess.go:17-30 · ثابتشده در v1.13.11 (553cfa1)
همچنین DialerOptions، ServerOptions (server، server_port) و OutboundTLSOptionsContainer (tls) را درون خود جای میدهد.
مثالها
ورودی:
{
"inbounds": [
{
"type": "vmess",
"tag": "vmess-in",
"listen": "::",
"listen_port": 443,
"users": [
{ "name": "alice", "uuid": "a3482e88-686a-4a58-8126-99c9df64b7bf", "alterId": 0 }
],
"tls": {
"enabled": true,
"server_name": "example.com",
"certificate_path": "/etc/ssl/cert.pem",
"key_path": "/etc/ssl/key.pem"
}
}
]
}خروجی روی WebSocket با TLS:
{
"outbounds": [
{
"type": "vmess",
"tag": "proxy",
"server": "example.com",
"server_port": 443,
"uuid": "a3482e88-686a-4a58-8126-99c9df64b7bf",
"security": "auto",
"alter_id": 0,
"global_padding": true,
"authenticated_length": true,
"packet_encoding": "xudp",
"tls": { "enabled": true, "server_name": "example.com" },
"transport": { "type": "ws", "path": "/vm" }
}
]
}نکات
- کلید کاربر در ورودی
alterId(camelCase) است اما گزینهٔ خروجیalter_id(snake_case) است — یک ویژگی خاص ناشی از تاریخچهٔ پیکربندی بالادست. هر دو پیشفرض0دارند و هر دو هنگام تنظیم به مقدار غیرصفر حالت MD5 قدیمی را فعال میکنند. global_paddingوauthenticated_lengthافزودههای sing-box نسبت به مشخصات اصلی V2Ray هستند. هر دو سمت باید آنها را فعال کنند؛ ترکیب آنها به شکست بیصدای اتصال منجر میشود.- برخلاف Xray، sing-box هنگام بارگذاری VMess هشدار منسوخشدن چاپ نمیکند — آن را بهعنوان پروتکلی پایدار در نظر میگیرد.
نکات بینهستهای
- Xray حالت قدیمی بدون AEAD را بهطور کامل حذف میکند؛ هیچ فیلد
alterIdوجود ندارد و زمان اجرا یک پرچم منسوخشدن چاپ میکند که کاربران را به سمت VLESS هدایت میکند. به VMess — Xray-core مراجعه کنید. - mihomo از نام فیلد
cipherاستفاده میکند (جایی که Xray و sing-box ازsecurityاستفاده میکنند)،alterIdرا (camelCase) حفظ میکند و همان ضامنهایglobal-padding/authenticated-lengthرا با kebab-case ارائه میدهد. به VMess — mihomo مراجعه کنید.
منبع: option/vmess.go:3-30 · v1.13.11 (553cfa1)
