Skip to content

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[]

ПолеТипПо умолчаниюДопустимые значенияОписание
namestring(unset)<string>Отображаемое имя пользователя; используется как тег для статистики и журналирования.
uuidstring(required)<UUID>UUID пользователя. Обязателен. Каноническая форма 8-4-4-4-12.
flowstring(empty) | xtls-rprx-visionАлгоритм flow для пользователя. Пусто = обычный VLESS; `xtls-rprx-vision` включает Vision.

Исходный код: option/vless.go:11-15 · зафиксировано на v1.13.15 (3708fa1)

Исходящий

Исходящий type: "vless":

ПолеТипПо умолчаниюДопустимые значенияОписание
uuidstring(required)<UUID>UUID пользователя, принимаемый вышестоящим сервером.
flowstring(empty) | xtls-rprx-visionАлгоритм flow; должен совпадать с ожидаемым сервером.
networkNetworkList(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:

json
{
  "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:

json
{
  "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 не поддерживает механизм fallbacks Xray внутри 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)

Core Tutorial от Argsment