Files
3x-ui/docs/content/docs/ru/config/transports.mdx
T
MHSanaei 62d27d54d5 feat(xray): support the XDRIVE s3 storage service
xray-core 26.10.31 (#7231) added an "s3" XDRIVE service that carries the
stream through S3-compatible storage: secrets are AccessKeyID,
SecretAccessKey and an optional SessionToken, an "s3" object names the
endpoint, region, bucket and pathStyle, and remoteFolder becomes the
object prefix.

The schema and the shared XDRIVE form offer the service with a field for
every S3 key, so an outbound or inbound keeps its storage on save. The
save path refused "s3" as an unknown service; it now runs the vendored
loader, whose ValidateS3Config would otherwise only fire when the
listener starts and stop every inbound. A node refuses a pushed S3
storage like a pushed template one, since its endpoint is any URL the
node would dial, including its own panel. Labels in all 14 locales;
docs updated in en/fa/ru/zh.
2026-11-01 14:56:26 +01:00

250 lines
23 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
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.
Начиная с Xray 26.10.17 XDRIVE передаёт только **VLESS** внутри **шифрования VLESS** и
без flow: инбаунду нужно значение `decryption`, исходящему — `encryption` и включённый
Mux. Панель предлагает XDRIVE только для VLESS, не сохраняет инбаунд без `decryption` и
не включает в работающую конфигурацию инбаунд, сохранённый до обновления.
| Поле | По умолчанию | Значение |
| -------------- | -------------- | -------- |
| `service` | `google-drive` | `google-drive`, `local` (папка на диске), `template` (любой HTTP API хранилища) или `s3` (S3-совместимое хранилище). Старое написание `Google Drive` по-прежнему читается. |
| `remoteFolder` | — | Папка с файлами сессий. |
| `secrets` | — | Google Drive: ровно три значения — ClientID, ClientSecret, RefreshToken, в этом порядке. Template: значения, доступные как `{secret0}`, `{secret1}`, …. S3: AccessKeyID, SecretAccessKey и при необходимости SessionToken. |
| `template` | — | Только для template: операции `auth`, `put`, `get`, `list` и `delete` API хранилища. |
| `s3` | — | Только для s3: `endpoint` (URL http(s)), `region`, `bucket` и `pathStyle` (по умолчанию `true`; `false` переносит бакет в имя хоста). `remoteFolder` — префикс объектов. |
| тонкая настройка | значения ядра | `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; требуется пароль, имя хоста и имена игроков
опциональны), а также только инбаундная `filter`.
- **UDP-маски** — `salamander`, `mkcp-legacy`, `header-custom`, `xdns`, `xicmp`,
`noise`, `sudoku`, `realm`, а также только клиентская `udphop` и только инбаундная
`filter`. (`mkcp-legacy`
воспроизводит старую обфускацию заголовка mKCP; `udphop` меняет удалённый порт —
и при желании удалённый IP — по интервалу или для каждого соединения, чтобы
обходить блокировку портов.)
- **Параметры QUIC** — управление перегрузкой (`reno`, `bbr`, `brutal`,
`force-brutal`), скорости отдачи/приёма Brutal и настройка окна приёма. На
инбаунде **UDP Hop** задаёт диапазон портов, который объявляется клиентам
(`mport` в ссылке и маска `udphop` в JSON-подписке); сам сервер слушает свой
порт. Начиная с Xray 26.9.9 клиент меняет порт только через маску `udphop`,
поэтому панель преобразует старый клиентский `quicParams.udpHop` в неё.
`filter` (Xray 26.10.21) отбрасывает соединения инбаунда по IP источника:
`allowedSourceIPs` пропускает только перечисленные источники, `blockedSourceIPs`
отбрасывает свои, а совпадение с блок-листом имеет приоритет. Оба принимают CIDR или
записи `geoip:`. Ссылки и JSON-подписки её не содержат, ведь она действует только на
слушающей стороне.
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>