VMess
VMess - это зашифрованный транспортный протокол, который обычно используется в качестве моста между клиентами и серверами Xray.
Предупреждение
VMess полагается на системное время. Убедитесь, что системное время UTC, используемое Xray, находится в пределах 120 секунд от фактического времени, независимо от часового пояса. В системах Linux вы можете установить службу ntp
для автоматической синхронизации системного времени.
OutboundConfigurationObject
{
"vnext": [
{
"address": "127.0.0.1",
"port": 37192,
"users": [
{
"id": "5783a3e7-e373-51cd-8642-c83782b807c5",
"security": "auto",
"level": 0,
"experiments": ""
}
]
}
]
}
vnext
: [ ServerObject ]
Массив, содержащий набор конфигураций сервера.
Каждый элемент - это конфигурация сервера ServerObject.
ServerObject
{
"address": "127.0.0.1",
"port": 37192,
"users": []
}
address
: address
Адрес сервера, поддерживается IP-адрес или доменное имя.
port
: number
Номер порта, который прослушивает сервер, обязательный параметр.
users
: [ UserObject ]
Массив, представляющий группу пользователей, распознаваемых сервером.
Каждый элемент - это пользователь UserObject.
UserObject
{
"id": "5783a3e7-e373-51cd-8642-c83782b807c5",
"security": "auto",
"level": 0,
"experiments": ""
}
id
: string
Идентификатор пользователя VMess, может быть любой строкой длиной менее 30 байт или допустимым UUID.
Пользовательская строка и соответствующий ей UUID эквивалентны, что означает, что вы можете использовать любой из следующих вариантов в файле конфигурации для идентификации одного и того же пользователя:
- Напишите
"id": "Я люблю арбуз учителя 1314"
, - Или напишите
"id": "5783a3e7-e373-51cd-8642-c83782b807c5"
(этот UUID является сопоставлением строки "Я люблю арбуз учителя 1314")
Стандарт сопоставления описан в VLESS UUID Mapping Standard: Mapping Custom Strings to a UUIDv5.
Вы можете использовать команду xray uuid -i "пользовательская строка"
для создания UUID, соответствующего пользовательской строке. Вы также можете использовать команду xray uuid
для создания случайного UUID.
level
: number
Уровень пользователя, для соединения будет использоваться локальная политика, соответствующая этому уровню пользователя.
Значение level соответствует значению level
в разделе policy. Если не указано, используется значение по умолчанию - 0.
security
: "aes-128-gcm" | "chacha20-poly1305" | "auto" | "none" | "zero"
Метод шифрования. Клиент будет отправлять данные с использованием настроенного метода шифрования, сервер автоматически распознает его, настройка на сервере не требуется.
"aes-128-gcm"
: Использовать алгоритмAES-128-GCM
."chacha20-poly1305"
: Использовать алгоритмChacha20-Poly1305
."auto"
: Значение по умолчанию. Автоматический выбор (для архитектурAMD64
,ARM64
илиs390x
будет выбран метод шифрованияaes-128-gcm
, в остальных случаях —Chacha20-Poly1305
)."none"
: Без шифрования, сохраняется структура сообщенияVMess
."zero"
: Без шифрования, поток данных копируется напрямую (аналогичноVLESS
).
Не рекомендуется использовать псевдошифрование "none"
или "zero"
без включенного TLS
шифрования и принудительной проверки сертификата. Независимо от выбранного метода шифрования, заголовки пакетов VMess
всегда защищены шифрованием и аутентификацией.
Обратите внимание, что auto
определяет поддержку аппаратного ускорения AES
только на стороне клиента. Если сервер не поддерживает аппаратное ускорение AES
, необходимо вручную установить "chacha20-poly1305"
. Это очень важно, поскольку Chacha20-Poly1305
на платформах с поддержкой ускорения AES
работает примерно на 48% медленнее, чем AES-128-GCM
, однако на платформах без аппаратного ускорения AES
, AES-128-GCM
будет работать более чем на 2000% медленнее, чем Chacha20-Poly1305
.
experiments
: string
Включенные экспериментальные функции протокола VMess. (Функции здесь нестабильны и могут быть удалены в любое время). Несколько включенных экспериментов можно разделить символом |, например, "AuthenticatedLength|NoTerminationSignal".
"AuthenticatedLength" включает эксперимент с аутентифицированной длиной пакета. Этот эксперимент необходимо включить одновременно на клиенте и сервере, а также запустить одну и ту же версию программы.
"NoTerminationSignal" включает эксперимент с отключением сигнала завершения соединения. Этот эксперимент может повлиять на стабильность проксируемого соединения.