Sync RU branch (#592)
parent
c1830ae5f8
commit
a3800c7a73
|
@ -64,9 +64,9 @@ export const sidebarRu: SidebarConfig = {
|
|||
text: 'Транспортный уровень',
|
||||
children: [
|
||||
'/ru/config/transports/grpc.md',
|
||||
'/ru/config/transports/h2.md',
|
||||
'/ru/config/transports/http.md',
|
||||
'/ru/config/transports/mkcp.md',
|
||||
'/ru/config/transports/tcp.md',
|
||||
'/ru/config/transports/raw.md',
|
||||
'/ru/config/transports/websocket.md',
|
||||
'/ru/config/transports/httpupgrade.md',
|
||||
'/ru/config/transports/splithttp.md'
|
||||
|
|
|
@ -62,6 +62,7 @@ Freedom будет принудительно отправлять все дан
|
|||
> `fragment`: map
|
||||
|
||||
Несколько пар «ключ-значение», используемых для управления исходящей фрагментацией TCP. В некоторых случаях это может обмануть системы цензуры, например, обойти черные списки SNI.
|
||||
`"length"` и `"interval"` относятся к типу [Int32Range](../../development/intro/guide.md#int32range)
|
||||
|
||||
`"packets"`: поддерживаются два режима фрагментации: "1-3" — фрагментация потока TCP, применяется к первым трем операциям записи данных на стороне клиента; "tlshello" — фрагментация пакета TLS-рукопожатия.
|
||||
|
||||
|
@ -85,7 +86,7 @@ UDP-шум, используемый для отправки случайных
|
|||
- Если `type` равен `str`, здесь указывается строка для отправки.
|
||||
- Если `type` равен `base64`, здесь указываются двоичные данные, закодированные в Base64.
|
||||
|
||||
`"delay"`: задержка в миллисекундах. После отправки этого пакета шума ядро будет ожидать указанное время, прежде чем отправить следующий пакет шума или реальные данные. По умолчанию ожидание отсутствует. Можно установить целое число, например `100`, или строку с диапазоном значений, например `"50-150"`.
|
||||
`"delay"`: **задержка**, в миллисекундах. После отправки этого пакета шума ядро будет ждать указанное время, прежде чем отправить следующий пакет шума или реальные данные. По умолчанию ожидание отсутствует. Тип: [Int32Range](../../development/intro/guide.md#int32range)
|
||||
|
||||
> `proxyProtocol`: number
|
||||
|
||||
|
|
|
@ -46,6 +46,9 @@
|
|||
> `network`: "raw" | "ws" | "h2" | "grpc" | "kcp" | "httpupgrade" | "splithttp"
|
||||
|
||||
Тип способа передачи, используемого потоком данных соединения, по умолчанию `"raw"`
|
||||
::: tip
|
||||
**Начиная с версии v24.9.30**, для более точного отражения фактического поведения, тип передачи `tcp` был переименован в `raw`. Для обеспечения совместимости `"network": "raw"` и `"network": "tcp"`, `rawSettings` и `tcpSettings` являются синонимами.
|
||||
:::
|
||||
|
||||
::: tip
|
||||
"h2" можно записать как "http", "grpc" можно записать как "gun", "kcp" можно записать как "mkcp".
|
||||
|
@ -83,9 +86,9 @@ Reality — это самое безопасное на данный момен
|
|||
|
||||
Конфигурация WebSocket для текущего соединения, действительна только если это соединение использует WebSocket.
|
||||
|
||||
> `httpSettings`: [HttpObject](./transports/h2.md)
|
||||
> `httpSettings`: [HttpObject](./transports/http.md)
|
||||
|
||||
Конфигурация HTTP/2 для текущего соединения, действительна только если это соединение использует HTTP/2.
|
||||
Конфигурация HTTP для текущего соединения, действительна только если это соединение использует HTTP.
|
||||
|
||||
> `grpcSettings`: [GRPCObject](./transports/grpc.md)
|
||||
|
||||
|
|
|
@ -1,86 +0,0 @@
|
|||
# HTTP/2
|
||||
|
||||
Способ передачи данных на основе HTTP/2.
|
||||
|
||||
Он полностью реализован в соответствии со стандартом HTTP/2 и может быть перенаправлен через другие HTTP-серверы (например, Nginx).
|
||||
|
||||
В соответствии с рекомендациями HTTP/2, клиент и сервер должны одновременно включать TLS для нормальной работы этого способа передачи.
|
||||
|
||||
HTTP/2 имеет встроенное мультиплексирование, не рекомендуется включать mux.cool при использовании HTTP/2.
|
||||
|
||||
::: tip
|
||||
Текущая версия способа передачи HTTP/2 **не требует**, чтобы **входящее соединение** (**сервер**) имело конфигурацию TLS.
|
||||
Это позволяет в среде развертывания с разделением трафика для специальных целей использовать внешний шлюз для обработки TLS-соединения, в то время как Xray будет использоваться в качестве серверного приложения, а связь между шлюзом и Xray будет осуществляться по незашифрованному протоколу http/2, который называется `h2c`.
|
||||
:::
|
||||
|
||||
::: warning
|
||||
⚠️ Если вы используете fallback, обратите внимание на следующие моменты:
|
||||
|
||||
- Убедитесь, что (x)tlsSettings.alpn содержит h2, иначе HTTP/2 не сможет завершить TLS-рукопожатие.
|
||||
- HTTP/2 не может быть разделен по пути, рекомендуется использовать SNI-разделение.
|
||||
:::
|
||||
|
||||
## HttpObject
|
||||
|
||||
`HttpObject` соответствует элементу `httpSettings` конфигурации передачи.
|
||||
|
||||
```json
|
||||
{
|
||||
"host": ["xray.com"],
|
||||
"path": "/random/path",
|
||||
"read_idle_timeout": 10,
|
||||
"health_check_timeout": 15,
|
||||
"method": "PUT",
|
||||
"headers": {
|
||||
"Header": ["value"]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
> `host`: \[string\]
|
||||
|
||||
Массив строк, каждый элемент которого является доменным именем.
|
||||
|
||||
Клиент будет случайным образом выбирать доменное имя из списка для связи, а сервер будет проверять, находится ли доменное имя в списке.
|
||||
|
||||
::: tip
|
||||
Если не указать `"httpSettings"` или оставить значение `"host": []` пустым, то будет использоваться значение по умолчанию `"www.example.com"`. Для успешного подключения значение `"host"` должно быть одинаковым на обеих сторонах. `"host": [""]` не является пустым значением.
|
||||
:::
|
||||
|
||||
> `path`: string
|
||||
|
||||
HTTP-путь, начинающийся с `/`, должен быть одинаковым у клиента и сервера.
|
||||
|
||||
Значение по умолчанию: `"/"`.
|
||||
|
||||
> `read_idle_timeout`: number
|
||||
|
||||
Время в секундах, по истечении которого, если данные не были получены, будет выполнена проверка работоспособности.
|
||||
|
||||
По умолчанию проверка работоспособности **не включена**.
|
||||
|
||||
::: tip
|
||||
Настройка требуется **только** на стороне **исходящего соединения** (**клиента**).
|
||||
:::
|
||||
|
||||
::: tip
|
||||
Может решить некоторые проблемы с "обрывом" соединения.
|
||||
:::
|
||||
|
||||
> `health_check_timeout`: number
|
||||
|
||||
Время ожидания ответа проверки работоспособности в секундах. Если в течение этого времени проверка работоспособности не будет завершена, она будет считаться неудачной. Значение по умолчанию: `15`.
|
||||
|
||||
::: tip
|
||||
Настройка требуется **только** на стороне **исходящего соединения** (**клиента**).
|
||||
:::
|
||||
|
||||
> `method`: string
|
||||
|
||||
HTTP-метод. Значение по умолчанию: `"PUT"`.
|
||||
|
||||
При настройке следует использовать значения, перечисленные [здесь](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods).
|
||||
|
||||
> `headers`: map{ string: \[string\] }
|
||||
|
||||
Пользовательские HTTP-заголовки, пара ключ-значение, где каждый ключ представляет собой имя HTTP-заголовка, а значение представляет собой массив.
|
|
@ -0,0 +1,88 @@
|
|||
# HTTP
|
||||
|
||||
Тип транспорта, основанный на HTTP/2 или HTTP/3.
|
||||
|
||||
Он полностью реализован в соответствии со стандартом HTTP и может быть проксирован через другие HTTP-серверы (например, Nginx).
|
||||
|
||||
Клиент должен включить TLS для корректной работы этого типа транспорта.
|
||||
|
||||
HTTP/2 и 3 имеют встроенное мультиплексирование, поэтому не рекомендуется включать mux.cool при их использовании.
|
||||
|
||||
::: tip
|
||||
**В текущей версии для транспорта HTTP/2 не требуется обязательная настройка TLS на стороне сервера.**
|
||||
|
||||
Это позволяет использовать Xray в качестве бэкенд-приложения в специальных сценариях развертывания с разделением трафика, где внешний шлюз обрабатывает TLS-соединение, а связь между шлюзом и Xray осуществляется по протоколу HTTP без шифрования.
|
||||
:::
|
||||
|
||||
::: tip
|
||||
Этот транспорт будет работать в режиме h3, только если alpn содержит только `h3`.
|
||||
:::
|
||||
|
||||
::: warning
|
||||
- HTTP/2 и HTTP/3 не могут быть разделены по путям отката Xray. Использование разделения по путям отката не рекомендуется.
|
||||
:::
|
||||
|
||||
## HttpObject
|
||||
|
||||
`HttpObject` соответствует элементу `httpSettings` в конфигурации транспорта.
|
||||
|
||||
```json
|
||||
{
|
||||
"host": ["xray.com"],
|
||||
"path": "/random/path",
|
||||
"read_idle_timeout": 10,
|
||||
"health_check_timeout": 15,
|
||||
"method": "PUT",
|
||||
"headers": {
|
||||
"Header": ["value"]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
> `host`: \[string\]
|
||||
|
||||
Массив строк, каждый элемент которого является доменным именем.
|
||||
|
||||
Клиент случайным образом выбирает доменное имя из списка для связи, а сервер проверяет, находится ли доменное имя в списке.
|
||||
|
||||
::: tip
|
||||
Если не указывать `"httpSettings"` или оставить `"host": []` пустым, будет использоваться значение по умолчанию `"www.example.com"`. Для успешного подключения необходимо, чтобы значения `"host"` на обеих сторонах совпадали. `"host": [""]` не является пустым значением.
|
||||
:::
|
||||
|
||||
> `path`: string
|
||||
|
||||
Путь HTTP, начинающийся с `/`. Должен совпадать на клиенте и сервере.
|
||||
|
||||
Значение по умолчанию: `"/"`.
|
||||
|
||||
> `read_idle_timeout`: number
|
||||
|
||||
Время ожидания чтения в секундах. Если в течение этого времени не получено никаких данных, будет выполнена проверка работоспособности.
|
||||
|
||||
По умолчанию проверка работоспособности **отключена**.
|
||||
|
||||
::: tip
|
||||
Настраивается **только** на стороне **клиента**.
|
||||
:::
|
||||
|
||||
::: tip
|
||||
Может помочь решить некоторые проблемы с "обрывом соединения".
|
||||
:::
|
||||
|
||||
> `health_check_timeout`: number
|
||||
|
||||
Время ожидания проверки работоспособности в секундах. Если проверка работоспособности не будет завершена в течение этого времени, она считается неудачной. Значение по умолчанию: `15`.
|
||||
|
||||
::: tip
|
||||
Настраивается **только** на стороне **клиента**.
|
||||
:::
|
||||
|
||||
> `method`: string
|
||||
|
||||
HTTP-метод. Значение по умолчанию: `"PUT"`.
|
||||
|
||||
При настройке следует руководствоваться значениями, перечисленными [здесь](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods).
|
||||
|
||||
> `headers`: map{ string: \[string\] }
|
||||
|
||||
**Только для клиента.** Пользовательские HTTP-заголовки. Представляет собой пару ключ-значение, где каждый ключ является именем HTTP-заголовка, а значением является массив.
|
|
@ -87,7 +87,7 @@
|
|||
|
||||
> `xPaddingBytes`: int | string
|
||||
|
||||
Задает размер заполнения для запросов (исходящих) и ответов (входящих), чтобы уменьшить цифровой след запроса. Единица измерения — байты. Значение по умолчанию — `"100-1000"`, каждый раз будет выбираться случайное число из этого диапазона. Также может быть одним числом, например `"200"` или `200`.
|
||||
Задает размер заполнения для запросов (исходящих) и ответов (входящих), используемый для уменьшения отпечатка запроса. Единица измерения: байты. Значение по умолчанию: `"100-1000"`. При каждом запросе случайным образом выбирается число из этого диапазона. Тип: [Int32Range](../../development/intro/guide.md#int32range)
|
||||
|
||||
Значение `-1` полностью отключает заполнение.
|
||||
|
||||
|
@ -112,7 +112,7 @@
|
|||
|
||||
Объяснение терминов:
|
||||
- Потоки будут мультиплексироваться в физические соединения, например: Соединение 1 (Поток 1, Поток 2, Поток 3) Соединение 2 (Поток 4, Поток 5, Поток 6) ... и так далее. В других источниках вы можете встретить описание "соединение-подключение", это то же самое.
|
||||
- Все поля, описанные ниже, имеют тип int/string и поддерживают как фиксированные значения (например, `16`), так и диапазоны значений (например, `"8-32"`).
|
||||
- Все следующие поля имеют тип [Int32Range](../../development/intro/guide.md#int32range):
|
||||
|
||||
> `maxConcurrency`: int/string
|
||||
|
||||
|
|
|
@ -130,6 +130,24 @@ Xray-core
|
|||
- Один файл должен содержать один основной тип и связанные с ним приватные функции.
|
||||
- Тестовые файлы, такие как Mock и другие утилиты, помещайте в подкаталог testing.
|
||||
|
||||
#### Int32Range
|
||||
|
||||
**Для конечного пользователя**
|
||||
|
||||
Значение, представляющее собой необязательный диапазон. Возможные варианты записи:
|
||||
|
||||
- Отдельное число или диапазон, заключенные в кавычки:
|
||||
- `""` (считается как 0). Обратите внимание, что полное отсутствие настройки поля и установка пустого значения могут иметь разное значение.
|
||||
- `"114"`
|
||||
- `"114-514"`
|
||||
- Отдельное целое число (int). В этом случае возможно указать только одно число:
|
||||
- `114`
|
||||
|
||||
**Для разработчика**
|
||||
|
||||
Если вам нужно использовать диапазон в файле конфигурации, используйте тип `Int32Range`. Для получения значений используйте `.From` и `.To` вместо использования строкового типа (`string`) и последующего ручного разбора.
|
||||
|
||||
Метод `.EnsureOrder()` можно использовать для обмена значений From и To, если From больше, чем To (при необходимости).
|
||||
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue