From cc6b081adc5bce66f14e170bc8c610b3484bd315 Mon Sep 17 00:00:00 2001 From: Nikita Korotaev <104270279+iambabyninja@users.noreply.github.com> Date: Wed, 14 Jan 2026 10:37:47 +0500 Subject: [PATCH] RU Add hysteria & TUN (#799) --- .vitepress/config.mts | 1 + docs/ru/config/inbounds/tun.md | 36 ++++++++++++ docs/ru/config/outbounds/hysteria2.md | 22 ++++++++ docs/ru/config/transports/hysteria.md | 79 +++++++++++++++++++++++++++ 4 files changed, 138 insertions(+) create mode 100644 docs/ru/config/inbounds/tun.md create mode 100644 docs/ru/config/outbounds/hysteria2.md create mode 100644 docs/ru/config/transports/hysteria.md diff --git a/.vitepress/config.mts b/.vitepress/config.mts index eacdca6f..78912d55 100644 --- a/.vitepress/config.mts +++ b/.vitepress/config.mts @@ -943,6 +943,7 @@ export default defineConfig({ }, { text: "VMess", link: "/ru/config/inbounds/vmess.md" }, { text: "Wireguard", link: "/ru/config/inbounds/wireguard.md" }, + { text: "TUN", link: "/ru/config/inbounds/tun.md" }, ], }, { diff --git a/docs/ru/config/inbounds/tun.md b/docs/ru/config/inbounds/tun.md new file mode 100644 index 00000000..8478b221 --- /dev/null +++ b/docs/ru/config/inbounds/tun.md @@ -0,0 +1,36 @@ +# TUN + +Создает интерфейс TUN. Трафик, направленный на этот интерфейс, будет обрабатываться Xray. В настоящее время поддерживаются только Windows, Linux, Android. + +## InboundConfigurationObject + +```json +{ + "name": "xray0", + "MTU": 1500, + "UserLevel": 0 +} +``` + +> `name`: string +Имя создаваемого TUN интерфейса. По умолчанию `"xray0"`. + +> `MTU`: number +Значение MTU интерфейса. По умолчанию `1500`. + +> `userLevel`: number +Уровень пользователя. Соединения будут использовать [локальные политики](../policy.md#levelpolicyobject), соответствующую этому уровню пользователя. + +Значение userLevel соответствует значению `level` в [policy](../policy.md#policyobject). Если не указано, по умолчанию равно 0. + +## Советы по использованию + +В настоящее время Xray не изменяет системную таблицу маршрутизации автоматически. Необходимо вручную настроить маршрутизацию для направления трафика на созданный интерфейс TUN, иначе он останется просто интерфейсом. + +Если вы хотите проксировать только один или несколько процессов, будет очень полезна маршрутизация по имени процесса в системе маршрутизации Xray. + +::: warning +Остерегайтесь возможных проблем с петлями трафика (traffic loops). После настройки маршрутизации запросы, отправляемые Xray, могут быть направлены обратно в Xray, создавая петлю! +Используйте `interface` в `sockopt` для привязки к реальному физическому сетевому интерфейсу, чтобы избежать этой проблемы. Команды `ipconfig` (Windows) и `ip a` (Linux) помогут найти имя нужного вам интерфейса. +Или используйте `sendThrough` для исходящих соединений. Он доступен непосредственно в OutboundObject и не имеет такой глубокой вложенности, как `sockOpt.interface`. Здесь необходимо использовать IP-адрес сетевой карты, например 192.168.1.2 (как видите, его недостатком является отсутствие автоматической поддержки dual-stack, пожалуйста, выбирайте в соответствии с фактически используемым IP для исходящего трафика). +::: \ No newline at end of file diff --git a/docs/ru/config/outbounds/hysteria2.md b/docs/ru/config/outbounds/hysteria2.md new file mode 100644 index 00000000..c61865d4 --- /dev/null +++ b/docs/ru/config/outbounds/hysteria2.md @@ -0,0 +1,22 @@ +# Hysteria2 + +Реализация клиента протокола Hysteria2. + +Эта страница очень проста, так как протокол hysteria2 фактически разделен на простой протокол управления прокси и оптимизированный низкоуровневый транспорт QUIC. В Xray протокол прокси и низкоуровневый транспорт разделены, подробности см. в разделе [hysteriaSettings](../transports/hysteria.md) низкоуровневого транспорта. + +## OutboundConfigurationObject + +```json +{ + "address": "192.168.108.1", + "port": 3128, +} +``` + +> `address`: string + +Адрес прокси-сервера Hysteria2, обязательно. + +> `port`: int + +Порт прокси-сервера Hysteria2, обязательно. \ No newline at end of file diff --git a/docs/ru/config/transports/hysteria.md b/docs/ru/config/transports/hysteria.md new file mode 100644 index 00000000..52087d4b --- /dev/null +++ b/docs/ru/config/transports/hysteria.md @@ -0,0 +1,79 @@ +# Hysteria + +Реализация низкоуровневого транспорта QUIC для Hysteria2 в Xray. Обычно используется в сочетании с [исходящим протоколом hysteria2](../outbounds/hysteria2.md). + +## HysteriaObject + +`HysteriaObject` соответствует пункту `hysteriaSettings` в конфигурации транспорта. + +```json +{ + "version": 2, + "auth": "password", + "up": "0", + "down": "0", + "udphop": { + "port": "1145-1919", + "interval": "30s" + }, + "initStreamReceiveWindow": 8388608, + "maxStreamReceiveWindow": 8388608, + "initConnectionReceiveWindow": 20971520, + "maxConnectionReceiveWindow": 20971520, + "maxIdleTimeout": 30, + "keepAlivePeriod": 0, + "disablePathMTUDiscovery": false +} +``` + +> `version`: number + +Версия Hysteria, должна быть равна 2. + +> `auth`: string + +Пароль аутентификации Hysteria, должен совпадать на сервере и клиенте. + +> `up`: string + +> `down`: string + +Ограничение скорости загрузки/скачивания (upload/download). Значение по умолчанию 0. + +Формат удобен для пользователя, поддерживает различные распространенные записи бит в секунду, включая `1000000`, `100kb`, `20 mb`, `100 mbps`, `1g`, `1 tbps` и т.д. Регистр не важен, пробелы между единицами необязательны. Без единиц измерения по умолчанию используется bps (бит в секунду), значение не может быть ниже 65535 bps. + +Поведение согласования соответствует оригинальной Hysteria: + +Значение на сервере ограничивает максимальную скорость режима Brutal, которую может выбрать клиент; 0 означает отсутствие ограничений для клиента. + +Если на клиенте 0, используется режим BBR; если не 0, используется режим Brutal, который будет ограничен сервером. + +Обратите внимание на относительность: загрузка (upload) сервера — это скачивание (download) клиента, а скачивание (download) сервера — это загрузка (upload) клиента. + +> `udphop`: {"port": string, "interval": string} + +Конфигурация скачков портов UDP (UDP port hopping). + +`port` — это диапазон портов для скачков. Может быть строкой с числом, например `"1234"`; или числовым диапазоном, например `"1145-1919"`, что означает 775 портов от 1145 до 1919. Можно использовать запятые для разделения, например `11,13,15-17` означает 5 портов: 11, 13, и с 15 по 17. + +> `initStreamReceiveWindow`: number + +> `maxStreamReceiveWindow`: number + +> `initConnectionReceiveWindow`: number + +> `maxConnectionReceiveWindow`: number + +Эти четыре параметра являются конкретными параметрами окна QUIC. **Не рекомендуется изменять эти значения, если вы не понимаете полностью, что делаете**. Если вы все же меняете их, рекомендуется сохранять соотношение окна приема потока к окну приема соединения как 2:5. + +> `maxIdleTimeout`: number + +Максимальное время ожидания простоя (в секундах). Через какое время сервер закроет соединение, если не получит никаких данных от клиента. Диапазон 4~120 секунд, по умолчанию 30 секунд. + +> `keepAlivePeriod`: number + +Интервал QUIC KeepAlive (в секундах). Диапазон 2~60 секунд. По умолчанию отключено. + +> `disablePathMTUDiscovery`: bool + +Отключить ли обнаружение Path MTU Discovery. \ No newline at end of file