---
title: Транспорты и безопасность
description: Все транспорты, которые предоставляет 3x-ui — TCP, mKCP, WebSocket, gRPC, HTTPUpgrade, XHTTP, Hysteria — с их настройками, а также обфускация 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**.           |

<Callout type="info">
  Inbound-соединения **WireGuard** и **Tunnel** (dokodemo-door) не предоставляют
  селектор транспорта — их поток несёт только security/sockopt. Прежние панели
  также предоставляли «сырой» транспорт **HTTP/2 (`http`)**; он был вытеснен
  **XHTTP** и больше недоступен для выбора.
</Callout>

### 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`   | Верхний предел числа пакетов «в пути».                          |

<Callout type="info">
  mKCP не может нести TLS или REALITY. Чтобы замаскировать его, добавьте
  UDP-маску **FinalMask** — маска `mkcp-legacy` воспроизводит классическую
  обфускацию заголовка, которую старые версии Xray хранили в
  `kcpSettings.header`/`seed` (этих полей здесь больше нет).
</Callout>

### 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`. |

## FinalMask — обфускация на позднем уровне

**FinalMask** оборачивает трафик **после** уровней транспорта и безопасности,
поэтому он может замаскировать транспорты, не несущие TLS (например, mKCP), или
добавить вторую оболочку поверх TLS. Маски настраиваются по направлениям:

- **TCP-маски** — `fragment`, `sudoku`, `header-custom`, `xmc` (маскирует поток
  под трафик протокола Minecraft; требуется пароль, имя хоста и имена игроков
  опциональны).
- **UDP-маски** — `salamander`, `mkcp-legacy`, `header-custom`, `xdns`, `xicmp`,
  `noise`, `sudoku`, `realm`. (`mkcp-legacy` воспроизводит старую обфускацию
  заголовка mKCP.)
- **Параметры QUIC** — управление перегрузкой (`reno`, `bbr`, `brutal`,
  `force-brutal`), скорости отдачи/приёма Brutal, `udpHop` (ротация QUIC-порта в
  пределах диапазона для обхода блокировки портов) и настройка окна приёма.

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), либо
- транспорт — это **XHTTP** с включённым шифрованием VLESS (см. ниже).

Поток задаётся на **клиенте** VLESS, а не на inbound. При классическом Vision
поверх TCP панель также может предложить **Vision seed** после того, как клиент
начнёт использовать этот поток.

## Шифрование VLESS (ML-KEM)

VLESS поддерживает постквантовое **шифрование** (ML-KEM / `mlkem768x25519`),
которое хранится в поле `decryption` у inbound (сервер) и в поле `encryption` у
клиентов (для генерации ссылок). Когда оно включено, становится доступен поток
Vision поверх XHTTP. Сгенерируйте ключи в настройках VLESS на панели.

## Шифры Shadowsocks

Inbound-соединения Shadowsocks поддерживают как классические шифры, так и
**Shadowsocks-2022** (имена методов, начинающиеся с `2022-blake3-`). Большинство
шифров рассчитаны на нескольких пользователей; `2022-blake3-chacha20-poly1305`
рассчитан на одного пользователя.

<Callout type="info">
  Транспорты и безопасность должны совпадать на обоих концах. Ссылка на
  подключение, которую использует клиент, кодирует их (`type=ws`,
  `security=reality`, `flow=xtls-rprx-vision`, …) — декодируйте любую ссылку с
  помощью [инспектора ссылок на подключение](/docs/config/share-links).
</Callout>
