diff --git a/docs/.vuepress/config/sidebar/en.ts b/docs/.vuepress/config/sidebar/en.ts index 1ed403055..ac74469d5 100755 --- a/docs/.vuepress/config/sidebar/en.ts +++ b/docs/.vuepress/config/sidebar/en.ts @@ -63,11 +63,9 @@ export const sidebarEn: SidebarConfig = { { text: 'transport', children: [ - '/en/config/transports/domainsocket.md', '/en/config/transports/grpc.md', '/en/config/transports/h2.md', '/en/config/transports/mkcp.md', - '/en/config/transports/quic.md', '/en/config/transports/tcp.md', '/en/config/transports/websocket.md', '/en/config/transports/httpupgrade.md', diff --git a/docs/.vuepress/config/sidebar/ru.ts b/docs/.vuepress/config/sidebar/ru.ts index 459d068e0..a3345a3ea 100644 --- a/docs/.vuepress/config/sidebar/ru.ts +++ b/docs/.vuepress/config/sidebar/ru.ts @@ -62,11 +62,9 @@ export const sidebarRu: SidebarConfig = { { text: 'Транспортный уровень', children: [ - '/ru/config/transports/domainsocket.md', '/ru/config/transports/grpc.md', '/ru/config/transports/h2.md', '/ru/config/transports/mkcp.md', - '/ru/config/transports/quic.md', '/ru/config/transports/tcp.md', '/ru/config/transports/websocket.md', '/ru/config/transports/httpupgrade.md', diff --git a/docs/config/transport.md b/docs/config/transport.md index 0f3069d1f..8c1691e6d 100644 --- a/docs/config/transport.md +++ b/docs/config/transport.md @@ -17,8 +17,6 @@ "kcpSettings": {}, "wsSettings": {}, "httpSettings": {}, - "quicSettings": {}, - "dsSettings": {}, "grpcSettings": {}, "httpupgradeSettings": {}, "splithttpSettings": {}, @@ -43,7 +41,7 @@ } ``` -> `network`: "tcp" | "ws" | "h2" | "grpc" | "quic" | "kcp" | "httpupgrade" | "splithttp" +> `network`: "tcp" | "ws" | "h2" | "grpc" | "kcp" | "httpupgrade" | "splithttp" 连接的数据流所使用的传输方式类型,默认值为 `"tcp"` @@ -88,10 +86,6 @@ Reality 是目前最安全的传输加密方案, 且外部看来流量类型和 当前连接的 HTTP/2 配置,仅当此连接使用 HTTP/2 时有效。 -> `quicSettings`: [QUICObject](./transports/quic.md) - -当前连接的 QUIC 配置,仅当此连接使用 QUIC 时有效。 - > `grpcSettings`: [GRPCObject](./transports/grpc.md) 当前连接的 gRPC 配置,仅当此连接使用 gRPC 时有效。。 diff --git a/docs/en/config/transport.md b/docs/en/config/transport.md index 0e58213e4..3a62f3030 100644 --- a/docs/en/config/transport.md +++ b/docs/en/config/transport.md @@ -4,75 +4,6 @@ Transports specify how Xray communicates with peers. Transports specify how to achieve stable data transmission. Both ends of a connection often need to specify the same transport protocol to successfully establish a connection. Like, if one end uses WebSocket, the other end must also use WebSocket, or else the connection cannot be established. -Transport configuration consists of two parts: - -1. ~~Global config ([TransportObject](#transportobject)) (deprecated)~~ -2. Local config ([StreamSettingsObject](#streamsettingsobject)). - -- When locally configured, you can specify how each inbound or outbound connection is transmitted individually. -- Server inbounds and client outbounds often need to use the same transport protocol. When a transport protocol is specified without local configs, the transport will fall back to global transport configs. - -
-Global configuration (deprecated) - -## TransportObject (deprecated) - -The `TransportObject` corresponds to the `transport` property in the config root. - -```json -{ - "transport": { - "tcpSettings": {}, - "kcpSettings": {}, - "wsSettings": {}, - "httpSettings": {}, - "quicSettings": {}, - "dsSettings": {}, - "grpcSettings": {}, - "httpupgradeSettings": {} - "splithttpSettings": {} - } -} -``` - -> `tcpSettings`: [TcpObject](./transports/tcp.md) - -Configures TCP connections. - -> `kcpSettings`: [KcpObject](./transports/mkcp.md) - -Configures mKCP connections. - -> `wsSettings`: [WebSocketObject](./transports/websocket.md) - -Configures WebSocket connections. - -> `httpSettings`: [HttpObject](./transports/h2.md) - -Configures HTTP/2 connections. - -> `quicSettings`: [QuicObject](./transports/quic.md) - -Configures QUIC connections. - -> `grpcSettings`: [GRPCObject](./transports/grpc.md) - -Configures gRPC connections. - -> `httpupgradeSettings`: [HttpUpgradeObject](./transports/httpupgrade.md) - -Configures HTTPUpgrade connections. - -> `dsSettings`: [DomainSocketObject](./transports/domainsocket.md) - -Configures Domain Socket connections. - -> `splithttpSettings`: [SplitHttpObject](./transports/splithttp.md) - -Configures SplitHTTP connections. - -
- ## StreamSettingsObject `StreamSettingsObject` corresponds to the `streamSettings` property in the inbound or outbound config. Each inbound or outbound can be configured with different transports and can use `streamSettings` to specify local configs. @@ -86,8 +17,6 @@ Configures SplitHTTP connections. "kcpSettings": {}, "wsSettings": {}, "httpSettings": {}, - "quicSettings": {}, - "dsSettings": {}, "grpcSettings": {}, "httpupgradeSettings": {}, "splithttpSettings": {}, @@ -112,7 +41,7 @@ Configures SplitHTTP connections. } ``` -> `network`: "tcp" | "kcp" | "ws" | "http" | "quic" | "grpc" | "httpupgrade" | "splithttp" +> `network`: "tcp" | "kcp" | "ws" | "http" | "grpc" | "httpupgrade" | "splithttp" The underlying protocol of the transport used by the data stream of the connection, defaulting to `"tcp"`. @@ -152,18 +81,10 @@ Configures the current WebSocket connection. Valid only when WebSocket is used. Configures the current HTTP/2 connection. Valid only when HTTP/2 is used. Same schema as global. -> `quicSettings`: [QUICObject](./transports/quic.md) - -Configures the current QUIC connection. Valid only when QUIC is used. Same schema as global. - > `grpcSettings`: [GRPCObject](./transports/grpc.md) Configures the current gRPC connection. Valid only when gRPC is used. Same schema as global. -> `dsSettings`: [DomainSocketObject](./transports/domainsocket.md) - -Configures the current Domain Socket connection. Valid only when Domain Socket is used. Same schema as global. - > `httpupgradeSettings`: [HttpUpgradeObject](./transports/httpupgrade.md) Configures the current HTTPUpgrade connection. Valid only when HTTPUpgrade is used. Same schema as global. diff --git a/docs/en/config/transports/domainsocket.md b/docs/en/config/transports/domainsocket.md deleted file mode 100644 index 606d1d9e9..000000000 --- a/docs/en/config/transports/domainsocket.md +++ /dev/null @@ -1,43 +0,0 @@ -# Domain Socket - -::: danger -We recommend writing it to the `listen` field in [inbounds](../inbound.md)and the transport mode can be TCP, WebSocket, or HTTP/2. - -Note that the DomainSocket option here may be deprecated in the future. -::: - -Domain Socket uses standard Unix domain sockets to transmit data. - -The advantage of using DomainSocket is that it uses the built-in transport channel of the operating system and does not occupy the network cache. Theoretically, it is slightly faster than local loopback networks. - -Currently, it can only be used on platforms that support Unix domain sockets, such as Linux and macOS. It is not available until Windows 10 Build 17036. - -If DomainSocket is specified as the transport mode, the ports and IP addresses configured in the inbound and outbound proxies will be invalidated, and all transports will be replaced by DomainSocket. - -## DomainSocketObject - -`DomainSocketObject` corresponds to the `dsSettings` item. - -```json -{ - "path": "/path/to/ds/file", - "abstract": false, - "padding": false -} -``` - -> `path`: string - -A valid file path. - -::: danger -This file must not exist before running Xray. -::: - -> `abstract`: true | false - -Whether it is an abstract domain socket, with a default value of `false`. - -> `padding`: true | false - -Whether the abstract domain socket has padding, with a default value of `false`. diff --git a/docs/en/config/transports/quic.md b/docs/en/config/transports/quic.md deleted file mode 100644 index 16da713c5..000000000 --- a/docs/en/config/transports/quic.md +++ /dev/null @@ -1,75 +0,0 @@ -# QUIC - -QUIC (Quick UDP Internet Connection) is a protocol proposed by Google for multiplexed and concurrent transmission using UDP. Its main advantages are: - -1. Reduced number of roundtrips in handshake phase. (1-RTT or 0-RTT) -2. Multiplexing, and no [Head-of-Line blocking](https://calendar.perfplanet.com/2020/head-of-line-blocking-in-quic-and-http-3-the-details/) problem. -3. Connection migration, (mainly on the client side) when switching from Wifi to 4G, the connection will not be interrupted. - -QUIC is currently in the experimental phase and uses IETF implementation that is still being standardized, so compatibility with the final version cannot be guaranteed. - -- Default settings: - - 12-byte Connection ID - - Automatically disconnect the connection if no data is transmitted for 30 seconds (which may affect the use of some [persistent connections](https://en.wikipedia.org/wiki/HTTP_persistent_connection)). - -## QuicObject - -`QuicObject` corresponds to the `quicSettings` item in the [Transport Protocol](../transport.md). - -::: danger -The configurations of both endpoints must be identical, otherwise the connection will fail. - -QUIC requires TLS to be enabled and if it is not enabled in the [Transport Protocol](../transport.md), Xray will issue a self-signed certificate for TLS communication. -::: - -```json -{ - "security": "none", - "key": "", - "header": { - "type": "none" - } -} -``` - -> `security`: "none" | "aes-128-gcm" | "chacha20-poly1305" - -Encryption method. - -Extra encryption over entire QUIC packet, include the frame head part. Default value is "none" for no encryption. After being encrypted, QUIC packets will not be detected as QUIC but some other unknown traffic. - -The default value is `none` - -> `key`: string - -Encryption key used for encryption. - -It can be any string and is effective when "security" is not set to "none". - -> `header`: [HeaderObject](#headerobject) - -Packet header obfuscation settings. - -### HeaderObject - -```json -{ - "type": "none" -} -``` - -> `type`: string - -Type of obfuscation. Corresponding inbound and outbound proxy must have the same settings. Choices are: - -- `"none"`: Default value. No obfuscation is used. -- `"srtp"`: Obfuscated as SRTP traffic. It may be recognized as video calls such as Facetime. -- `"utp"`: Obfuscated as uTP traffic. It may be recognized as Bittorrent traffic. -- `"wechat-video"`: Obfuscated to WeChat traffic. -- `"dtls"`: Obfuscated as DTLS 1.2 packets. -- `"wireguard"`: Obfuscated as WireGuard packets. (NOT true WireGuard protocol) - -::: tip -When neither encryption nor obfuscation is enabled, QUIC transport is compatible with other QUIC tools. -However it is recommended to enable either or both for better undetectable communication. -::: diff --git a/docs/ru/config/transport.md b/docs/ru/config/transport.md index 39df650bb..63efd5114 100644 --- a/docs/ru/config/transport.md +++ b/docs/ru/config/transport.md @@ -5,76 +5,6 @@ Транспорт определяет способ передачи данных. Обычно оба конца сетевого подключения должны использовать одинаковый транспорт. Например, если один конец использует WebSocket, то другой конец также должен использовать WebSocket, иначе соединение не будет установлено. -Настройка транспорта (transport) состоит из двух частей: - -1. ~~Глобальные настройки ([TransportObject](#transportobject)) (устарело)~~ -2. Локальные настройки ([StreamSettingsObject](#streamsettingsobject)). - -- Локальные настройки позволяют указать способ передачи данных для каждого отдельного входящего или исходящего подключения. -- Обычно клиент и сервер должны использовать одинаковый транспорт для соответствующих входящих и исходящих подключений. - Если в настройках указан тип транспорта, но не указаны конкретные параметры, будут использованы настройки из глобальной конфигурации. - -
-Глобальные настройки - - -## TransportObject (устарело) - -`TransportObject` соответствует полю `transport` в конфигурационном файле. - -```json -{ - "transport": { - "tcpSettings": {}, - "kcpSettings": {}, - "wsSettings": {}, - "httpSettings": {}, - "quicSettings": {}, - "dsSettings": {}, - "grpcSettings": {}, - "httpupgradeSettings": {} - } -} -``` - -> `tcpSettings`: [TcpObject](./transports/tcp.md) - -Настройки TCP-подключений. - -> `kcpSettings`: [KcpObject](./transports/mkcp.md) - -Настройки mKCP-подключений. - -> `wsSettings`: [WebSocketObject](./transports/websocket.md) - -Настройки WebSocket-подключений. - -> `httpSettings`: [HttpObject](./transports/h2.md) - -Настройки HTTP/2-подключений. - -> `quicSettings`: [QuicObject](./transports/quic.md) - -Настройки QUIC-подключений. - -> `grpcSettings`: [GRPCObject](./transports/grpc.md) - -Настройки gRPC-подключений. - -> `httpupgradeSettings`: [HttpUpgradeObject](./transports/httpupgrade.md) - -Настройки HTTPUpgrade-подключений. - -> `splithttpSettings`: [SplitHttpObject](./transports/splithttp.md) - -Настройки SplitHTTP-подключений. - -> `dsSettings`: [DomainSocketObject](./transports/domainsocket.md) - -Настройки Domain Socket-подключений. - -
- ## StreamSettingsObject `StreamSettingsObject` соответствует полю `streamSettings` во входящем или исходящем подключении. @@ -89,8 +19,6 @@ "kcpSettings": {}, "wsSettings": {}, "httpSettings": {}, - "quicSettings": {}, - "dsSettings": {}, "grpcSettings": {}, "httpupgradeSettings": {}, "splithttpSettings": {}, @@ -116,7 +44,7 @@ } ``` -> `network`: "tcp" | "ws" | "h2" | "grpc" | "quic" | "kcp" | "httpupgrade" | "splithttp" +> `network`: "tcp" | "ws" | "h2" | "grpc" | "kcp" | "httpupgrade" | "splithttp" Тип транспорта, используемый для передачи данных. Значение по умолчанию - `"tcp"`. @@ -171,21 +99,11 @@ Reality - это самый безопасный на данный момент Настройки HTTP/2 для текущего подключения, действуют только при использовании HTTP/2. Настройки аналогичны глобальным настройкам, описанным выше. -> `quicSettings`: [QUICObject](./transports/quic.md) - -Настройки QUIC для текущего подключения, действуют только при использовании QUIC. -Настройки аналогичны глобальным настройкам, описанным выше. - > `grpcSettings`: [GRPCObject](./transports/grpc.md) Настройки gRPC для текущего подключения, действуют только при использовании gRPC. Настройки аналогичны глобальным настройкам, описанным выше. -> `dsSettings`: [DomainSocketObject](./transports/domainsocket.md) - -Настройки Domain socket для текущего подключения, действуют только при использовании Domain socket. -Настройки аналогичны глобальным настройкам, описанным выше. - > `httpupgradeSettings`: [HttpUpgradeObject](./transports/httpupgrade.md) Настройки HTTPUpgrade для текущего подключения, действуют только при использовании HTTPUpgrade. diff --git a/docs/ru/config/transports/domainsocket.md b/docs/ru/config/transports/domainsocket.md deleted file mode 100644 index c4864cbec..000000000 --- a/docs/ru/config/transports/domainsocket.md +++ /dev/null @@ -1,43 +0,0 @@ -# DomainSocket - -::: danger -Рекомендуется прописать в разделе `listen` файла [inbounds](../inbound.md). В качестве способа передачи можно выбрать TCP, WebSocket, HTTP/2. -В будущем использование DomainSocket может быть прекращено. -::: - -DomainSocket использует стандартные доменные сокеты Unix для передачи данных. - -Его преимущество заключается в использовании встроенного в операционную систему канала передачи, не занимающего сетевой буфер. -Теоретически, по сравнению с локальной петлей (local loopback), доменный сокет работает немного быстрее. - -В настоящее время он доступен только на платформах, поддерживающих доменные сокеты Unix, таких как Linux и macOS. Недоступно в Windows 10 до сборки 17036. - -Если в качестве способа передачи указан DomainSocket, то порт и IP-адрес, настроенные во входящем и исходящем прокси, будут недействительны, и вся передача будет осуществляться через DomainSocket. - -## DomainSocketObject - -`DomainSocketObject` соответствует элементу `dsSettings` конфигурации передачи. - -```json -{ - "path": "/path/to/ds/file", - "abstract": false, - "padding": false -} -``` - -> `path`: string - -Допустимый путь к файлу. - -::: danger -Этот файл не должен существовать до запуска Xray. -::: - -> `abstract`: true | false - -Является ли сокет абстрактным доменным сокетом, значение по умолчанию `false`. - -> `padding`: true | false - -Использовать ли padding для абстрактного доменного сокета, значение по умолчанию `false`. diff --git a/docs/ru/config/transports/quic.md b/docs/ru/config/transports/quic.md deleted file mode 100644 index 80274d6d2..000000000 --- a/docs/ru/config/transports/quic.md +++ /dev/null @@ -1,75 +0,0 @@ -# QUIC - -QUIC (Quick UDP Internet Connection) — это протокол, предложенный Google для многоканальной передачи данных по UDP. Его основные преимущества: - -1. Сокращение времени установки соединения (1-RTT или 0-RTT). -2. Многоканальность и отсутствие проблем с блокировкой, как у TCP. -3. Миграция соединений (в основном на стороне клиента): при переходе с Wi-Fi на 4G соединение не разрывается. - -QUIC в настоящее время находится в экспериментальной стадии и использует реализацию IETF, которая находится в процессе стандартизации, поэтому совместимость с финальной версией не гарантируется. - -- По умолчанию: - - 12-байтовый Connection ID. - - Автоматическое отключение соединения через 30 секунд бездействия (может повлиять на работу некоторых долгоживущих соединений). - -## QuicObject - -`QuicObject` соответствует элементу `quicSettings` в конфигурации транспорта. - -::: danger -Конфигурация на обоих концах соединения должна быть полностью идентичной, иначе соединение установить не удастся. -QUIC требует включения TLS. Если TLS не включён в настройках транспорта, Xray сгенерирует самоподписанный сертификат для использования TLS. -::: - -```json -{ - "security": "none", - "key": "", - "header": { - "type": "none" - } -} -``` - -> `security`: "none" | "aes-128-gcm" | "chacha20-poly1305" - -Метод шифрования. - -Это шифрование применяется к пакетам данных QUIC. Зашифрованные пакеты не могут быть распознаны. - -Значение по умолчанию: без шифрования. - -> `key`: string - -Ключ шифрования. - -Может быть любой строкой. Используется только если `security` не равен `"none"`. - -> `header`: [HeaderObject](#headerobject) - -Настройки маскировки заголовков пакетов. - -### HeaderObject - -```json -{ - "type": "none" -} -``` - -> `type`: string - -Тип маскировки. Допустимые значения: - -- `"none"`: значение по умолчанию, маскировка не используется, отправляемые данные не имеют характерных признаков. -- `"srtp"`: маскировка под SRTP-трафик (например, FaceTime). -- `"utp"`: маскировка под uTP-трафик (например, BitTorrent). -- `"wechat-video"`: маскировка под видеозвонки WeChat. -- `"dtls"`: маскировка под DTLS 1.2. -- `"wireguard"`: маскировка под WireGuard (не является настоящим WireGuard). - -::: tip -Если ни шифрование, ни маскировка не включены, то пакеты QUIC отправляются в исходном виде и могут быть распознаны другими инструментами QUIC. - -Для предотвращения обнаружения рекомендуется включить хотя бы шифрование или маскировку. -:::