--- title: Транспорты и безопасность description: Все транспорты, которые предоставляет 3x-ui — TCP, mKCP, WebSocket, gRPC, HTTPUpgrade, XHTTP, Hysteria, XDRIVE, MASQUE — с их настройками, а также обфускация FinalMask, sockopt, TLS/REALITY, XTLS-Vision и шифрование VLESS. icon: Network --- **Транспорт** определяет, как пакеты переносятся между клиентом и сервером, уровень **безопасности** определяет, как они шифруются и маскируются, а **FinalMask** может обфусцировать всё, что остаётся. Панель предлагает только допустимые комбинации; на этой странице перечислены настройки каждого транспорта и правила, которые применяет панель. ## Транспорты Выберите транспорт (поле `network` у inbound) в форме inbound/outbound. Каждый network записывает свой собственный ключ настроек на проводе (`tcpSettings`, `kcpSettings`, …). | Транспорт | Ключ настроек | Когда использовать | | --------------- | --------------------- | ---------------------------------------------------------------------- | | **TCP (Raw)** | `tcpSettings` | Минимальные накладные расходы. Основа для REALITY + XTLS-Vision и фолбэков; опциональная HTTP/1.1-камуфляжная маскировка заголовка. | | **mKCP** | `kcpSettings` | Надёжный протокол поверх **UDP** — обменивает пропускную способность на меньшую задержку на каналах с потерями. Не несёт TLS/REALITY. | | **WebSocket** | `wsSettings` | Работает через CDN и HTTP-реверс-прокси; очень совместимый. | | **gRPC** | `grpcSettings` | На базе HTTP/2; хорошо мультиплексируется и чисто проксируется через Nginx. | | **HTTPUpgrade** | `httpupgradeSettings` | Дружественный к CDN апгрейд HTTP/1.1 `Upgrade`; легче полноценного WebSocket. | | **XHTTP** | `xhttpSettings` | Современный HTTP-транспорт с мультиплексированием потоков; дружественный к CDN и совместимый с REALITY. | | **Hysteria** | `hysteriaSettings` | Транспорт на базе QUIC — только для протокола **Hysteria2**. | | **XDRIVE** | `xdriveSettings` | Туннелирует поток через файлы в общем облачном хранилище (Google Drive, локальная папка или любой HTTP API хранилища). | | **MASQUE** | `masqueSettings` | CONNECT-IP поверх HTTP/3 или HTTP/2 — только для протокола **MASQUE**. См. [MASQUE](/docs/config/masque). | Inbound-соединения **WireGuard** и **Tunnel** (dokodemo-door) не предоставляют селектор транспорта — их поток несёт только security/sockopt. Прежние панели также предоставляли «сырой» транспорт **HTTP/2 (`http`)**; он был вытеснен **XHTTP** и больше недоступен для выбора. ### TCP (Raw) — `tcpSettings` | Поле | По умолчанию | Значение | | ------------------------------ | ------- | ----------------------------------------------------------------------- | | `acceptProxyProtocol` | `false` | Принимать PROXY-протокол от вышестоящего прокси, чтобы сохранить реальный IP клиента. | | `header.type` | `none` | `none` или `http` для камуфляжа под HTTP/1.1. | | `header.request` / `response` | — | При `type: http`: метод, путь, версия и карта заголовков, имитирующие обычный обмен HTTP. | ### mKCP — `kcpSettings` | Поле | По умолчанию | Значение | | ------------------ | ----------- | ---------------------------------------------------------------- | | `mtu` | `1350` | Максимальный размер передаваемого блока, в байтах (576–1460). | | `tti` | `20` | Интервал времени передачи, в мс (10–100). Меньше = отзывчивее, но больше накладных расходов. | | `uplinkCapacity` | `5` | Бюджет пропускной способности на отдачу, в **МБ/с**. | | `downlinkCapacity` | `20` | Бюджет пропускной способности на приём, в **МБ/с**. | | `cwndMultiplier` | `1` | Множитель окна перегрузки; повышайте, чтобы сильнее нагружать хорошие каналы. | | `maxSendingWindow` | `2097152` | Верхний предел числа пакетов «в пути». | mKCP не может нести TLS или REALITY. Чтобы замаскировать его, добавьте UDP-маску **FinalMask** — маска `mkcp-legacy` воспроизводит классическую обфускацию заголовка, которую старые версии Xray хранили в `kcpSettings.header`/`seed` (этих полей здесь больше нет). ### WebSocket — `wsSettings` | Поле | По умолчанию | Значение | | --------------------- | ------- | ---------------------------------------------------------------- | | `path` | `/` | Путь запроса — маршрутизируйте по нему, когда несколько сервисов делят один хост. | | `host` | _(нет)_ | Переопределение заголовка `Host` (полезно за CDN). | | `headers` | `{}` | Дополнительные заголовки запроса. | | `heartbeatPeriod` | `0` | Секунды между keepalive-пингами; `0` отключает их. | | `acceptProxyProtocol` | `false` | Принимать PROXY-протокол от вышестоящего прокси. | ### gRPC — `grpcSettings` | Поле | По умолчанию | Значение | | ------------- | ------- | --------------------------------------------------------- | | `serviceName` | _(нет)_ | Путь gRPC-сервиса; работает как секретный маршрут. | | `authority` | _(нет)_ | Переопределение псевдозаголовка `:authority`. | | `multiMode` | `false` | Мультиплексировать несколько потоков по одному соединению. | ### HTTPUpgrade — `httpupgradeSettings` | Поле | По умолчанию | Значение | | --------------------- | ------- | --------------------------------------------- | | `path` | `/` | Путь запроса. | | `host` | _(нет)_ | Переопределение заголовка `Host`. | | `headers` | `{}` | Дополнительные заголовки запроса. | | `acceptProxyProtocol` | `false` | Принимать PROXY-протокол от вышестоящего прокси. | HTTPUpgrade — это одноразовый HTTP/1.1 `Upgrade` без фреймирования WebSocket, поэтому поля heartbeat нет. ### XHTTP — `xhttpSettings` У XHTTP (SplitHTTP) большой набор полей; панель заполняет разумные значения по умолчанию. Те, что вы обычно будете трогать: | Поле | По умолчанию | Значение | | ---------------------- | ----------- | ---------------------------------------------------------------------- | | `path` | `/` | Путь запроса. | | `host` | _(нет)_ | Переопределение заголовка `Host`. | | `mode` | `auto` | `auto`, `packet-up`, `stream-up` или `stream-one`. `packet-up` наиболее совместим с CDN; `stream-*` имеют меньшую задержку. | | `xPaddingBytes` | `100-1000` | Диапазон случайного паддинга, размывающего размеры пакетов. | | `scMaxBufferedPosts` | `30` | Серверный буфер для загружаемых POST-запросов. | | `scStreamUpServerSecs` | `20-80` | Окно сервера в режиме stream-up (диапазон через дефис). | | `xmux` (`enableXmux`) | _(выкл.)_ | Мультиплексирование соединений — `maxConcurrency` `16-32`, `maxConnections` `6`, … Включайте при высокой конкурентности. | Поля Session-ID (`sessionIDPlacement`, `sessionIDKey`, `sessionIDTable`, `sessionIDLength`) и параметры `scMin/MaxEachPostBytes` — продвинутые; оставьте их пустыми, если только вы не подстраиваетесь под конкретный upstream. ### Hysteria — `hysteriaSettings` Допустимо, только когда протокол — **Hysteria2**. | Поле | По умолчанию | Значение | | ---------------- | ------- | ----------------------------------------------------------------------- | | `version` | `2` | Версия протокола Hysteria. | | `auth` | _(нет)_ | Общая строка аутентификации. | | `udpIdleTimeout` | `60` | Секунды (2–600) до сброса простаивающих UDP-сессий. | | `masquerade` | — | Маскировка под HTTP/3-сервер: `type` `proxy`/`file`/`string` с `url`/`dir`/`content`, а также `headers` и `statusCode`. | ### XDRIVE — `xdriveSettings` XDRIVE передаёт поток файлами в папке, доступной обеим сторонам: сервер опрашивает эту папку, а не принимает соединения на своём порту. Обе стороны должны использовать **одинаковые** сервис, папку и секреты, поэтому JSON-подписка передаёт их каждому клиенту; для XDRIVE-инбаундов не создаются ссылки и записи Clash. | Поле | По умолчанию | Значение | | -------------- | -------------- | -------- | | `service` | `Google Drive` | `Google Drive`, `local` (папка на диске) или `template` (любой HTTP API хранилища). | | `remoteFolder` | — | Папка с файлами сессий. | | `secrets` | — | Google Drive: ровно три значения — ClientID, ClientSecret, RefreshToken, в этом порядке. Template: значения, доступные как `{secret0}`, `{secret1}`, …. | | `template` | — | Только для template: операции `auth`, `put`, `get`, `list` и `delete` API хранилища. | | тонкая настройка | значения ядра | `segmentBytes` (512 KiB), `flushIntervalMs` (20), `pollIntervalMs`/`maxPollIntervalMs` (50/500), `eagerWindowMs` (2000), `holeTimeoutMs` (30000), `sessionTtlSeconds` (300), `concurrency` (8). | Необязательные **адрес/порт фронтинга** (`address`/`port` на уровне stream) — домен-фронт, через который идёт подключение к API хранилища; в TLS по-прежнему указывается хост API. У XDRIVE нет собственного уровня TLS/REALITY — его трафик это HTTPS самого API хранилища. На исходящем безопасность **TLS** задаёт это HTTPS-подключение: API хранилища видит его SNI, отпечаток uTLS и ALPN. ## FinalMask — обфускация на позднем уровне **FinalMask** оборачивает трафик **после** уровней транспорта и безопасности, поэтому он может замаскировать транспорты, не несущие TLS (например, mKCP), или добавить вторую оболочку поверх TLS. Маски настраиваются по направлениям: - **TCP-маски** — `fragment`, `sudoku`, `header-custom`, `xmc` (маскирует поток под трафик протокола Minecraft; требуется пароль, имя хоста и имена игроков опциональны). - **UDP-маски** — `salamander`, `mkcp-legacy`, `header-custom`, `xdns`, `xicmp`, `noise`, `sudoku`, `realm`, а также только клиентская `udphop`. (`mkcp-legacy` воспроизводит старую обфускацию заголовка mKCP; `udphop` меняет удалённый порт — и при желании удалённый IP — по интервалу или для каждого соединения, чтобы обходить блокировку портов.) - **Параметры QUIC** — управление перегрузкой (`reno`, `bbr`, `brutal`, `force-brutal`), скорости отдачи/приёма Brutal и настройка окна приёма. На инбаунде **UDP Hop** задаёт диапазон портов, который объявляется клиентам (`mport` в ссылке и маска `udphop` в JSON-подписке); сам сервер слушает свой порт. Начиная с Xray 26.9.9 клиент меняет порт только через маску `udphop`, поэтому панель преобразует старый клиентский `quicParams.udpHop` в неё. FinalMask заменяет обфускацию `header`/`seed` на уровне отдельного транспорта, которую предоставляли старые сборки Xray. ## sockopt — низкоуровневые опции сокета `sockopt` идёт вместе с любым транспортом и настраивает низлежащий сокет. Самые полезные поля: | Поле | По умолчанию | Значение | | --------------------- | ------- | ---------------------------------------------------------------- | | `tcpFastOpen` | `false` | Включить TCP Fast Open. | | `tcpcongestion` | `bbr` | Управление перегрузкой: `bbr`, `cubic` или `reno`. | | `tproxy` | `off` | Режим прозрачного прокси: `off`, `redirect` или `tproxy`. | | `domainStrategy` | `AsIs` | Как разрешаются адреса (`UseIP`, `ForceIPv4`, …). | | `dialerProxy` | _(нет)_ | Пропускать набор этого outbound через другой outbound по тегу. | | `interface` | _(нет)_ | Привязка к конкретному сетевому интерфейсу. | | `mark` | `0` | SO_MARK для policy routing (`0` = не задано). | Числовые поля, оставленные равными `0`, опускаются на проводе, поэтому Xray сохраняет умолчания ОС. Продвинутые записи (`happyEyeballs`, `customSockopt[]`, таймеры keepalive) доступны для особых случаев. ## Безопасность Уровень безопасности — это одно из значений **`none`**, **`tls`** или **`reality`**, со следующими правилами совместимости: | Безопасность | Допустимые транспорты | Допустимые протоколы | | ----------- | -------------------------------------------- | --------------------------------------------------- | | **TLS** | `tcp`, `ws`, `grpc`, `httpupgrade`, `xhttp` | VLESS, VMess, Trojan, Shadowsocks (Hysteria2 всегда TLS) | | **REALITY** | `tcp`, `grpc`, `xhttp` | VLESS, Trojan | mKCP и Hysteria не используют отдельный уровень TLS/REALITY — mKCP работает в открытом виде (обфусцируйте его с помощью FinalMask), а Hysteria по своей природе использует QUIC/TLS. REALITY маскирует ваш сервер под настоящий TLS-сайт и не требует сертификата — см. [REALITY](/docs/config/reality). ## Поток XTLS-Vision Поток `xtls-rprx-vision` быстрый и устойчивый к DPI. Он доступен для **VLESS**, когда выполнено одно из условий: - транспорт — это «сырой» **TCP** с безопасностью **TLS** или **REALITY** (классический XTLS-Vision), либо - включено шифрование VLESS, на любом транспорте (см. ниже). Поток задаётся на **клиенте** VLESS, а не на inbound. При классическом Vision поверх TCP панель также может предложить **Vision seed** после того, как клиент начнёт использовать этот поток. ## Шифрование VLESS (ML-KEM) VLESS поддерживает постквантовое **шифрование** (ML-KEM / `mlkem768x25519`), которое хранится в поле `decryption` у inbound (сервер) и в поле `encryption` у клиентов (для генерации ссылок). Когда оно включено, становится доступен поток Vision на любом транспорте. Сгенерируйте ключи в настройках VLESS на панели. ## Шифры Shadowsocks Inbound-соединения Shadowsocks поддерживают как классические шифры, так и **Shadowsocks-2022** (имена методов, начинающиеся с `2022-blake3-`). Метод `2022-blake3-chacha20-poly1305` для inbound не предлагается: Xray-core поддерживает его только без пользователей, а у каждого inbound панели есть клиенты. В outbound его по-прежнему можно использовать. Транспорты и безопасность должны совпадать на обоих концах. Ссылка на подключение, которую использует клиент, кодирует их (`type=ws`, `security=reality`, `flow=xtls-rprx-vision`, …) — декодируйте любую ссылку с помощью [инспектора ссылок на подключение](/docs/config/share-links).