Files
2026-09-17 01:42:16 +08:00

19 KiB

Конфигурация транспорта

Конфигурация транспорта определяет, как текущий экземпляр Xray взаимодействует с другой стороной. Этой стороной может быть как другой узел Xray, так и любой обычный публичный адрес назначения.

Она описывает часть ниже самого прокси-протокола: способ переноса потока, защиту транспорта и дополнительные низкоуровневые настройки.

Эти три группы относятся к разным уровням и в определенных пределах могут комбинироваться:

  • Способы передачи определяют, как именно переносится поток данных, например через RAW, WebSocket, gRPC, Hysteria и другие.
  • Безопасность транспорта определяет механизм защиты, например TLS или REALITY.
  • Дополнительные настройки управляют низкоуровневым сетевым поведением и финальной маскировкой трафика.

Часть параметров транспорта напрямую влияет на способ установления соединения с удаленной стороной. Для параметров, которые требуют согласования, обе стороны обычно должны использовать совместимые настройки. Например, если одна сторона использует WebSocket, другая тоже должна использовать WebSocket, иначе соединение не будет установлено.

Для прямых исходящих соединений, таких как Freedom, другой стороной обычно является любой обычный публичный адрес назначения, например сайт Amazon или серверы WeChat. В этом случае конфигурация транспорта не требует согласования с другой стороной и, как правило, почти не может использоваться для этого; вместо этого она управляет поведением локального исходящего соединения. В таком сценарии доступен только sockopt.

StreamSettingsObject

StreamSettingsObject соответствует полю streamSettings в InboundObject или OutboundObject. Каждый inbound или outbound может иметь собственную конфигурацию транспорта.

{
  // пример для outbound, аналогично применимо к inbound
  "outbounds": [
    {
      // ...
      // [!field focus]
      "streamSettings": {
        // Способы передачи
        "method": "raw",
        "rawSettings": {},
        "xhttpSettings": {},
        "kcpSettings": {},
        "grpcSettings": {},
        "wsSettings": {},
        "httpupgradeSettings": {},
        "hysteriaSettings": {},
        // Безопасность транспорта
        "security": "none",
        "realitySettings": {},
        "tlsSettings": {},
        // Дополнительные настройки
        "finalmask": {},
        "sockopt": {}
      }
    }
  ]
}

Способы передачи

method: "raw" | "xhttp" | "mkcp" | "grpc" | "websocket" | "httpupgrade" | "hysteria"

Способ передачи, используемый потоком данных. Значение по умолчанию — raw.

rawSettings: RawObject

Настройки RAW для потока данных. Действуют только когда method равно raw.

xhttpSettings: XHTTPObject

Настройки XHTTP для потока данных. Действуют только когда method равно xhttp.

kcpSettings: KcpObject

Настройки mKCP для потока данных. Действуют только когда method равно mkcp.

grpcSettings: GRPCObject

Настройки gRPC для потока данных. Действуют только когда method равно grpc.

wsSettings: WebSocketObject

Настройки WebSocket для потока данных. Действуют только когда method равно websocket.

httpupgradeSettings: HTTPUpgradeObject

Настройки HTTPUpgrade для потока данных. Действуют только когда method равно httpupgrade.

hysteriaSettings: HysteriaObject

Настройки Hysteria для потока данных. Действуют только когда method равно hysteria.

Безопасность транспорта

security: "none" | "reality" | "tls"

Включать ли защиту транспорта. Поддерживаются следующие значения:

  • "none" означает, что защита отключена (значение по умолчанию)
  • "reality" означает использование REALITY
  • "tls" означает использование TLS

realitySettings: RealityObject

Настройки REALITY. REALITY — это модификация TLS, которая использует внешний вид и характеристики рукопожатия целевого сайта как маскировку.

Действуют только когда security равно reality. REALITY можно использовать только вместе с транспортами RAW, XHTTP и gRPC.

::: tip REALITY сейчас является одной из самых сильных схем защиты транспорта, а снаружи такой трафик выглядит максимально похоже на обычный веб-трафик. В сочетании с подходящим режимом XTLS Vision можно также получить прирост производительности в несколько раз или даже больше чем в десять раз. :::

tlsSettings: TLSObject

Настройки TLS. Реализация TLS предоставляется Go. В обычных условиях переговоры обычно приходят к TLS 1.3. DTLS не поддерживается.

Действуют только когда security равно tls. Поддерживается использование вместе с транспортами RAW, XHTTP, mKCP, gRPC, WebSocket, HTTPUpgrade и Hysteria.

Дополнительные настройки

finalmask: FinalMaskObject

Настройки FinalMask для финальной маскировки трафика.

sockopt: SockoptObject

Настройки низкоуровневого сетевого поведения.

Краткая таблица совместимости транспорта

Для входящих и исходящих подключений способ передачи и безопасность транспорта настраиваются через streamSettings. В реальной конфигурации прокси-протокол, способ передачи и безопасность транспорта должны быть совместимы друг с другом.

Входящие/исходящие протоколы и способы передачи

Эта таблица соответствует сочетанию protocol + streamSettings.method.

raw xhttp grpc websocket httpupgrade mkcp hysteria
http Поддерживается Поддерживается Поддерживается Поддерживается Поддерживается Поддерживается Поддерживается
socks [1] Ограниченно Ограниченно Ограниченно Ограниченно Ограниченно Ограниченно Ограниченно
shadowsocks [1] Ограниченно Ограниченно Ограниченно Ограниченно Ограниченно Ограниченно Ограниченно
vmess Поддерживается Поддерживается Поддерживается Поддерживается Поддерживается Поддерживается Поддерживается
vless Поддерживается Поддерживается Поддерживается Поддерживается Поддерживается Поддерживается Поддерживается
trojan Поддерживается Поддерживается Поддерживается Поддерживается Поддерживается Поддерживается Поддерживается
hysteria Неприменимо Неприменимо Неприменимо Неприменимо Неприменимо Неприменимо Поддерживается
wireguard Неприменимо Неприменимо Неприменимо Неприменимо Неприменимо Неприменимо Неприменимо

[1] Если XUDP не включен для Socks или Shadowsocks, UDP-трафик использует собственный UDP-маршрут протокола и обходит настроенный способ передачи; на TCP-трафик это ограничение не распространяется. См. XUDP.

Способы передачи и безопасность транспорта

Эта таблица соответствует сочетанию streamSettings.method + streamSettings.security.

none tls reality
raw Поддерживается Поддерживается Поддерживается
xhttp Поддерживается Поддерживается Поддерживается
grpc Поддерживается Поддерживается Поддерживается
websocket Поддерживается Поддерживается Не поддерживается
httpupgrade Поддерживается Поддерживается Не поддерживается
mkcp Поддерживается Поддерживается Не поддерживается
hysteria Не поддерживается Обязательно Не поддерживается

Входящие/исходящие протоколы и безопасность транспорта

Эта таблица соответствует сочетанию protocol + streamSettings.security.

none tls reality Безопасность на уровне протокола
http Поддерживается Поддерживается Поддерживается Нет
socks Поддерживается Ограниченно [1] Ограниченно [1] Нет
shadowsocks Поддерживается Ограниченно [1] Ограниченно [1] Шифрование и целостность полезной нагрузки [2]
vmess Поддерживается Поддерживается Поддерживается Аутентификация рукопожатия и шифрование полезной нагрузки [2]
vless Ограниченно [3] Поддерживается Поддерживается Опциональное Encryption [4]
trojan Ограниченно [3] Поддерживается Поддерживается Только аутентификация
hysteria Не поддерживается Обязательно Не поддерживается Нет (зависит от TLS)
wireguard Неприменимо Неприменимо Неприменимо Зашифрованный туннель [2]

[1] Если XUDP не включен для Socks или Shadowsocks, UDP-трафик использует собственный UDP-маршрут протокола и обходит настроенный TLS или REALITY; на TCP-трафик это ограничение не распространяется. См. XUDP.
[2] Shadowsocks и VMess защищают полезную нагрузку, но не обеспечивают прямую секретность уровня TLS 1.3, а их трафик по-прежнему поддается классификации. Криптография WireGuard достаточно надежна, но характерный и неизменный UDP-профиль легко распознать и заблокировать. Ни один из этих трех протоколов не создает видимость обычного HTTPS-трафика, которую обеспечивают TLS/REALITY, поэтому они не подходят для прямого обхода блокировок.
[3] Когда streamSettings.security имеет значение none, VLESS (без включенного Encryption) и Trojan могут подключаться только к адресам частной сети.
[4] VLESS Encryption является опциональным и по умолчанию отключен (encryption: "none"). После включения он позволяет подключаться к публичным сетевым адресам, даже если streamSettings.security имеет значение none. Он защищает полезную нагрузку VLESS, но не создает видимость обычного HTTPS-трафика как TLS/REALITY, поэтому не подходит для прямого обхода блокировок.