Files
3x-ui/docs/content/docs/ru/config/transports.mdx
T
MHSanaei 814cda3fb4 feat(xray): update xray-core to v26.7.11 and adapt panel
Bump xtls/xray-core to 50231eaf (v26.7.11) and the three binary pins
(DockerInit.sh, release.yml x2) in lockstep.

Adapt the panel to the upstream changes:

- Shadowsocks "none"/"plain" and VMess "none"/"zero" were removed from
  the core. A migration rewrites stored none/plain SS methods to a
  supported cipher and none/zero VMess security to "auto" (on both the
  clients column and inbound settings JSON); the SS build-time heal does
  the same so a row injected after boot cannot brick startup. The removed
  values are dropped from every frontend option list, schema and adapter,
  and coerced to "auto" at the Go link/sub/Clash emit sites and both link
  importers. Fix the CipherType_NONE sentinel that no longer compiles.

- Unencrypted vless/trojan outbounds to a public address are now refused
  by the core. Validate outbounds through the vendored config loader when
  saving the xray template and when storing/merging outbound
  subscriptions, so one such outbound cannot keep the core from starting.

- New TCP finalmask type "xmc" (Minecraft mimicry): add it to the sub
  link allowlist, the frontend enum and the FinalMask form (hostname,
  usernames, required password), and document it.

- streamSettings gained a "method" alias for "network"; canonicalize it
  to "network" at inbound save time and in the form adapters/schema so a
  method-keyed config keeps its transport.

- New root "env" config key is passed through xray.Config, compared in
  Equals, and forces a restart in the hot diff.

- REALITY now defaults minClientVer to 26.3.27; update the form
  placeholder.
2026-07-12 00:30:47 +02:00

208 lines
18 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 — с их настройками, а также обфускация 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>