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