VLESS — sing-box
Реализация VLESS в sing-box совместима с клиентом и сервером Xray, поддерживает XTLS Vision для быстрого пути после рукопожатия, а на исходящей стороне говорит на XUDP для мультиплексирования UDP поверх TLS.
Входящий
Входящий type: "vless":
| Поле | Тип | По умолчанию | Допустимые значения | Описание |
|---|---|---|---|---|
users | []VLESSUser | [] | <VLESSUser array> | Список принимаемых пользователей. Чтобы входящий принимал соединения, требуется хотя бы одна запись. |
multiplex | *InboundMultiplexOptions | (disabled) | InboundMultiplexOptions | Серверное мультиплексирование (smux/yamux/h2mux). Полный состав полей описан на странице «Мультиплексирование». |
transport | *V2RayTransportOptions | (plain TCP) | V2RayTransportOptions | Необязательная транспортная обёртка в стиле V2Ray: ws, http, grpc, quic, hysteria. См. страницу «Транспорт». |
Исходный код: option/vless.go:3-9 · зафиксировано на v1.13.15 (3708fa1)
Структура также встраивает ListenOptions (адрес прослушивания, порт, сниффинг и др.) и InboundTLSOptionsContainer (материал TLS). Эти блоки общие для всех типов входящих и описаны на страницах Входящие и TLS.
users[]
| Поле | Тип | По умолчанию | Допустимые значения | Описание |
|---|---|---|---|---|
name | string | (unset) | <string> | Отображаемое имя пользователя; используется как тег для статистики и журналирования. |
uuid | string | (required) | <UUID> | UUID пользователя. Обязателен. Каноническая форма 8-4-4-4-12. |
flow | string | (empty) | | xtls-rprx-vision | Алгоритм flow для пользователя. Пусто = обычный VLESS; `xtls-rprx-vision` включает Vision. |
Исходный код: option/vless.go:11-15 · зафиксировано на v1.13.15 (3708fa1)
Исходящий
Исходящий type: "vless":
| Поле | Тип | По умолчанию | Допустимые значения | Описание |
|---|---|---|---|---|
uuid | string | (required) | <UUID> | UUID пользователя, принимаемый вышестоящим сервером. |
flow | string | (empty) | | xtls-rprx-vision | Алгоритм flow; должен совпадать с ожидаемым сервером. |
network | NetworkList | (tcp+udp) | tcp | udp | <empty for both> | Ограничить только TCP или только UDP. Пустое значение включает оба. |
multiplex | *OutboundMultiplexOptions | (disabled) | OutboundMultiplexOptions | Клиентское мультиплексирование. Должно соответствовать настройке мультиплексирования на сервере. |
transport | *V2RayTransportOptions | (plain TCP) | V2RayTransportOptions | Транспорт в стиле V2Ray (ws, http, grpc и т. д.). |
packet_encoding | *string | (unset) | packetaddr | xudp | Кодирование UDP-пакетов внутри потока VLESS. `xudp` соответствует XUDP из Xray; `packetaddr` — более старая однопоточная форма. |
Исходный код: option/vless.go:17-27 · зафиксировано на v1.13.15 (3708fa1)
Структура встраивает DialerOptions (привязка интерфейса, метка маршрутизации, detour, …), ServerOptions (server, server_port) и OutboundTLSOptionsContainer (tls).
Примеры
Входящий с одним пользователем и XTLS Vision:
{
"inbounds": [
{
"type": "vless",
"tag": "vless-in",
"listen": "::",
"listen_port": 443,
"users": [
{ "name": "alice", "uuid": "a3482e88-686a-4a58-8126-99c9df64b7bf", "flow": "xtls-rprx-vision" }
],
"tls": {
"enabled": true,
"server_name": "example.com",
"certificate_path": "/etc/ssl/cert.pem",
"key_path": "/etc/ssl/key.pem"
}
}
]
}Исходящий через REALITY с передачей UDP через XUDP:
{
"outbounds": [
{
"type": "vless",
"tag": "proxy",
"server": "example.com",
"server_port": 443,
"uuid": "a3482e88-686a-4a58-8126-99c9df64b7bf",
"flow": "xtls-rprx-vision",
"packet_encoding": "xudp",
"tls": {
"enabled": true,
"server_name": "www.google.com",
"utls": { "enabled": true, "fingerprint": "chrome" },
"reality": { "enabled": true, "public_key": "...", "short_id": "..." }
}
}
]
}Примечания
- VLESS-сервер в sing-box использует
users[].uuid, а неclients[].id, как Xray. Один и тот же UUID работает в обеих реализациях; меняется только JSON-ключ. - sing-box не поддерживает механизм
fallbacksXray внутри VLESS; эквивалентное поведение обеспечивает полеfallbackв общем блокеtls(перенаправляющее трафик при несовпадении TLS-рукопожатия). - Варианты
packet_encodingпроисходят из апстримаproxy/vless/packetaddr.xudp— современный вариант по умолчанию; он соответствует кодированию, которое Xray использует, когда его полеflowсодержит суффикс-udp443. users[].flowи неявное «без flow» сочетаются: сервер с Vision-пользователями по-прежнему принимает обычных VLESS-клиентов на том же порту.
Сравнение с другими ядрами
- Xray использует
clients[].id(UUID) и принимает массивfallbacksна входящем. См. VLESS — Xray-core. - mihomo упаковывает всё в один объект прокси (без отдельного массива
usersна исходящем). См. VLESS — mihomo.
Исходный код: option/vless.go:3-27 · v1.13.15 (3708fa1)
