From 0adc98a792f49159a92613b0ddbff8c8ac9a4d1a Mon Sep 17 00:00:00 2001 From: Nikita Korotaev Date: Mon, 15 Jul 2024 19:20:02 +0500 Subject: [PATCH] translate /config/transports/grpc.md --- docs/ru/config/transports/grpc.md | 126 ++++++++++++++++++++++++++++++ 1 file changed, 126 insertions(+) create mode 100644 docs/ru/config/transports/grpc.md diff --git a/docs/ru/config/transports/grpc.md b/docs/ru/config/transports/grpc.md new file mode 100644 index 0000000..f0a7ed3 --- /dev/null +++ b/docs/ru/config/transports/grpc.md @@ -0,0 +1,126 @@ +# gRPC + +Режим передачи данных, основанный на HTTP/2, полностью соответствует стандарту HTTP/2 и может быть ретранслирован другими HTTP-серверами (такими как Nginx). + +gRPC (HTTP/2) имеет встроенное мультиплексирование, не рекомендуется включать mux.cool при использовании gRPC и HTTP/2. + +::: warning ⚠⚠⚠ + +- gRPC не поддерживает указание Host. Пожалуйста, укажите **правильное доменное имя** в адресе исходящего прокси или укажите `ServerName` в `(x)tlsSettings`, иначе подключение не будет установлено. +- gRPC не поддерживает fallback на другие сервисы. +- Существует риск активного сканирования сервисов gRPC. Рекомендуется использовать обратный прокси-сервер, такой как Caddy или Nginx, для предварительного разделения трафика по пути. + ::: + +::: tip +Если вы используете обратный прокси-сервер, такой как Caddy или Nginx, обратите внимание на следующие моменты: + +- Убедитесь, что на обратном прокси-сервере включен HTTP/2. +- Используйте HTTP/2 или h2c (Caddy), grpc_pass (Nginx) для подключения к Xray. +- Путь в обычном режиме: `/${serviceName}/Tun`, в режиме Multi: `/${serviceName}/TunMulti`. +- Если необходимо получать IP-адрес клиента, его можно передать через заголовок `X-Real-IP`, отправленный Caddy / Nginx. + ::: + +::: tip +Если вы используете fallback, обратите внимание на следующие моменты: + +- Не рекомендуется использовать fallback на gRPC, так как существует риск активного сканирования. +- Убедитесь, что `h2` находится на первом месте в (x)tlsSettings.alpn, иначе gRPC (HTTP/2) может не завершить TLS-рукопожатие. +- gRPC не поддерживает маршрутизацию на основе path с помощью Xray. + ::: + +## GRPCObject + +`GRPCObject` соответствует элементу `grpcSettings` конфигурации передачи. + +```json +{ + "authority": "grpc.example.com", + "serviceName": "name", + "multiMode": false, + "user_agent": "custom user agent", + "idle_timeout": 60, + "health_check_timeout": 20, + "permit_without_stream": false, + "initial_windows_size": 0 +} +``` + +> `authority`: string + +Строка, которая может использоваться как Host для реализации некоторых других целей. + +> `serviceName`: string + +Строка, указывающая имя сервиса, **аналогично** пути в HTTP/2. +Клиент будет использовать это имя для связи, а сервер будет проверять, совпадает ли имя сервиса. + +::: tip +Когда `serviceName` начинается с косой черты, можно настроить собственный путь, используя как минимум две косые черты.
+Например, если на сервере указано `"serviceName": "/my/sample/path1|path2"`, то на клиенте можно указать `"serviceName": "/my/sample/path1"` или `"/my/sample/path2"`. +::: + +> `user_agent`: string + +::: tip +**Необходимо настроить только** в `outbound` **(клиент)**. +::: + +Установка пользовательского агента gRPC, может предотвратить блокировку трафика gRPC некоторыми CDN. + +> `multiMode`: true | false + +`true` включает `multiMode`, значение по умолчанию: `false`. + +Это **экспериментальная** опция, которая может быть удалена в будущем, и ее совместимость между версиями не гарантируется. Этот режим может обеспечить прирост производительности примерно на 20% **в тестовой среде**, фактическая производительность зависит от скорости передачи. + +::: tip +**Необходимо настроить только** в `outbound` **(клиент)**. +::: + +> `idle_timeout`: number + +Проверка работоспособности выполняется, если в течение определенного периода времени, измеряемого в секундах, не происходит передача данных. Если это значение меньше `10`, то в качестве минимального значения будет использоваться `10`. + +::: tip +Если не используется обратный прокси-сервер, такой как Caddy или Nginx (**обычно не используется**), и это значение установлено меньше `60`, сервер может отправить непредвиденный кадр h2 GOAWAY, чтобы закрыть существующее соединение. +::: + +По умолчанию проверка работоспособности **отключена**. + +::: tip +**Необходимо настроить только** в `outbound` **(клиент)**. +::: + +::: tip +Может решить некоторые проблемы с "обрывом" соединения. +::: + +> `health_check_timeout`: number + +Время ожидания ответа проверки работоспособности в секундах. Если в течение этого времени проверка работоспособности не будет завершена и по-прежнему не будет передачи данных, проверка работоспособности будет считаться неудачной. Значение по умолчанию: `20`. + +::: tip +Настройка требуется **только** на стороне **исходящего соединения** (**клиента**). +::: + +> `permit_without_stream`: true | false + +`true` разрешает проверку работоспособности, если нет дочерних подключений. Значение по умолчанию: `false`. + +::: tip +**Необходимо настроить только** в `outbound` **(клиент)**. +::: + +> `initial_windows_size`: number + +Начальный размер окна h2 Stream. Если значение меньше или равно `0`, эта функция не действует. Если значение больше `65535`, механизм динамического окна будет отключен. Значение по умолчанию: `0`, то есть не действует. + +::: tip +**Необходимо настроить только** в `outbound` **(клиент)**. +::: + +::: tip +При использовании CDN Cloudflare можно установить значение `65536` или выше, чтобы отключить механизм динамического окна, что предотвратит отправку непредвиденных кадров h2 GOAWAY CDN Cloudflare для закрытия существующего соединения. +::: + +