---
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).