RU sync docs (#740)

* Reverse: Correct mux.cool

* Rename and update ECH

* Tunnel: Add portMap

* Tunnel: Correct something

* Core: Add version

* more rename

* Vmess inbound: Correct desc of "none" and update chacha20 performance tip

* Outbound: Add sendThrough "origin" UDP tip

* fallback: Add localhost tip

* Routing: Remove unused fields

* Route: Add vlessRoute and some local things
pull/742/head
Nikita Korotaev 2025-08-30 10:02:31 +05:00 committed by GitHub
parent ee9f907616
commit cd23cae212
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
10 changed files with 94 additions and 54 deletions

View File

@ -34,7 +34,7 @@ export const sidebarRu: SidebarConfig = {
{
text: "Входящие подключения",
children: [
"/ru/config/inbounds/dokodemo.md",
"/ru/config/inbounds/tunnel.md",
"/ru/config/inbounds/http.md",
"/ru/config/inbounds/shadowsocks.md",
"/ru/config/inbounds/socks.md",

View File

@ -12,6 +12,7 @@ lang: ru-RU
```json
{
"version":{},
"log": {},
"api": {},
"dns": {},
@ -35,6 +36,21 @@ lang: ru-RU
## Основные модули конфигурации
> `version`
Опционально, контролирует версию, на которой может работать данный `config`. При обмене `config`-файлами это предотвращает случайный запуск на нежелательных версиях клиента. Во время выполнения клиент будет проверять, соответствует ли его текущая версия данному требованию.
```
"version": {
"min": "25.8.3",
"max": ""
}
```
Поля `min` и `max` являются опциональными. Если они не установлены или оставлены пустыми, это означает отсутствие ограничений. Указанные версии не обязательно должны реально существовать, достаточно, чтобы они соответствовали синтаксису номера версии `Xray` `x.y.z`.
`25.8.3` — это версия `Xray`, в которой была добавлена данная функция. Установка версии ниже этой не имеет смысла (старые версии не будут выполнять проверку).
> log: [LogObject](./log.md)
Настройка журнала, управляющая способом вывода журналов Xray.

View File

@ -78,8 +78,9 @@ VLESS будет перенаправлять трафик с длиной пе
1. TCP, формат `"addr:port"`, где addr поддерживает IPv4, доменное имя, IPv6, если указано доменное имя, TCP-соединение будет установлено напрямую (без использования встроенного DNS).
2. Unix domain socket, формат - абсолютный путь, например, `"/dev/shm/domain.socket"`, в начале можно добавить `@` для обозначения [abstract](https://www.man7.org/linux/man-pages/man7/unix.7.html), `@@` - для обозначения abstract с заполнением.
Если указан только порт, можно использовать число или строку, например, `80`, `"80"`, обычно указывает на службу http в открытом виде (addr будет дополнен до `"127.0.0.1"`).
Если указан только `port`, можно использовать как число, так и строку, например `80` или `"80"`. Обычно это указывает на `http`-сервис, работающий в открытом виде (`addr` будет автоматически дополнен как `"localhost"`).
Примечание: Начиная с версии `v25.7.26`, `dest`, содержащий только `port`, указывает на `localhost`, тогда как до этой версии он всегда указывал на `127.0.0.1`. После этого изменения фактической целью может стать `::1`. Некоторые шаблоны `webserver`, скопированные из интернета, могут прослушивать `::1`, но при этом разрешать доступ только с `127.0.0.1` или требовать применения `proxy protocol`, что может привести к различиям в поведении.
> `xver`: number
Отправка [PROXY protocol](https://www.haproxy.org/download/2.2/doc/proxy-protocol.txt), специально для передачи реального исходного IP-адреса и порта запроса, заполняется версией 1 или 2, по умолчанию 0, то есть не отправляется. При необходимости рекомендуется указать 1.

View File

@ -2,7 +2,7 @@
Xray поддерживает следующие входящие протоколы:
- [Dokodemo-Door](../inbounds/dokodemo.md)
- [Tunnel](../inbounds/tunnel.md)
- [HTTP](../inbounds/http.md)
- [Shadowsocks](../inbounds/shadowsocks.md)
- [Socks](../inbounds/socks.md)

View File

@ -1,6 +1,6 @@
# Dokodemo-Door
# Tunnel(Dokodemo-Door)
Dokodemo door может прослушивать локальный порт и отправлять все данные, поступающие на этот порт, на порт указанного сервера, тем самым реализуя перенаправление портов.
`Tunnel`, или `Dokodemo door`, может прослушивать локальный порт и все поступающие на этот порт данные отправлять через `outbound` на указанный порт сервера, тем самым достигая эффекта перенаправления портов.
## InboundConfigurationObject
@ -8,6 +8,11 @@ Dokodemo door может прослушивать локальный порт и
{
"address": "8.8.8.8",
"port": 53,
"portMap": {
"5555": "1.1.1.1:7777",
"5556": ":8888", // overrides port only
"5557": "example.com:" // overrides address only
},
"network": "tcp",
"followRedirect": false,
"userLevel": 0
@ -16,13 +21,17 @@ Dokodemo door может прослушивать локальный порт и
> `address`: address
Перенаправлять трафик на этот адрес. Может быть IP-адресом, например, `"1.2.3.4"`, или доменным именем, например, `"xray.com"`. Тип данных: строка.
Перенаправлять трафик на этот адрес. Может быть IP-адресом, например, `"1.2.3.4"`, или доменным именем, например, `"xray.com"`, по умолчанию `"localhost"`.
Если `followRedirect` (см. ниже) равно `true`, то `address` может быть пустым.
> `port`: number
Перенаправлять трафик на указанный порт целевого адреса, диапазон \[1, 65535\], тип данных: число. Обязательный параметр.
Перенаправляет трафик на указанный порт целевого адреса, диапазон `[0, 65535]`, числовой тип. Если не заполнено или равно `0`, по умолчанию используется порт прослушиваемого адреса.
> `portMap`: map[string]string
Представляет собой `map`, который сопоставляет локальные порты с требуемыми удаленными адресами/портами (в случае, если `inbound` прослушивает несколько портов). Если локальный порт не указан в этом `map`, обработка будет производиться в соответствии с настройками `address`/`port`.
> `network`: "tcp" | "udp" | "tcp,udp"
@ -52,7 +61,7 @@ Dokodemo door может прослушивать локальный порт и
{
"listen": "127.0.0.1",
"port": 25565,
"protocol": "dokodemo-door",
"protocol": "tunnel",
"settings": {
"address": "mc.hypixel.net",
"port": 25565,

View File

@ -43,6 +43,8 @@ Xray будет использовать случайный IP-адрес из
Например, если на машине есть целый блок IPv4-адресов `11.4.5.0/24` и прослушивается 0.0.0.0 (все IPv4 и IPv6 адреса на сетевой карте), и клиент подключается к локальной машине через `11.4.5.14`, то исходящие запросы также будут отправляться через `11.4.5.14`. Если же клиент использует `11.4.5.10` для подключения к локальной машине, то исходящие запросы будут отправляться через `11.4.5.10`. То же самое относится и к случаям, когда на машине есть целый блок/несколько IPv6-адресов.
Как и в описании для `inbound`, из-за особенностей `UDP` как протокола без установления соединения, `Xray` не может определить исходный целевой `IP`-адрес запроса, поступающего в ядро (например, в рамках одного и того же `QUIC`-соединения он может даже меняться), поэтому эта функция не может работать.
> `protocol`: string
Название протокола подключения.

View File

@ -91,25 +91,15 @@ VMess полагается на системное время. Убедитес
Метод шифрования. Клиент будет отправлять данные с использованием настроенного метода шифрования, сервер автоматически распознает его, настройка на сервере не требуется.
- `"aes-128-gcm"`: рекомендуется для использования на ПК.
- `"chacha20-poly1305"`: рекомендуется для использования на мобильных устройствах.
- `"auto"`: значение по умолчанию, автоматический выбор (метод шифрования aes-128-gcm, если платформа выполнения - AMD64, ARM64 или s390x, в противном случае - Chacha20-Poly1305).
- `"none"`: без шифрования.
* `"aes-128-gcm"`: Использовать алгоритм `AES-128-GCM`.
* `"chacha20-poly1305"`: Использовать алгоритм `Chacha20-Poly1305`.
* `"auto"`: Значение по умолчанию. Автоматический выбор (для архитектур `AMD64`, `ARM64` или `s390x` будет выбран метод шифрования `aes-128-gcm`, в остальных случаях — `Chacha20-Poly1305`).
* `"none"`: Без шифрования, сохраняется структура сообщения `VMess`.
* `"zero"`: Без шифрования, поток данных копируется напрямую (аналогично `VLESS`).
* `"zero"`: без шифрования и проверки подлинности сообщений (v1.4.0+).
Не рекомендуется использовать псевдошифрование `"none"` или `"zero"` без включенного `TLS` шифрования и принудительной проверки сертификата. Независимо от выбранного метода шифрования, заголовки пакетов `VMess` всегда защищены шифрованием и аутентификацией.
::: tip
Рекомендуется использовать метод шифрования `"auto"`, чтобы обеспечить безопасность и совместимость в долгосрочной перспективе.
Метод псевдошифрования `"none"` будет вычислять и проверять контрольные суммы пакетов данных, но поскольку алгоритм аутентификации не имеет аппаратной поддержки, на некоторых платформах он может быть медленнее, чем `"aes-128-gcm"` с аппаратным ускорением.
Метод псевдошифрования `"zero"` не шифрует сообщения и не вычисляет контрольные суммы данных, поэтому теоретически он должен быть быстрее любого другого метода шифрования. Фактическая скорость может зависеть от других факторов.
Не рекомендуется использовать методы псевдошифрования `"none"` и `"zero"` без включенного TLS-шифрования и обязательной проверки сертификатов.
Если для установления соединения используется CDN или другая промежуточная платформа, расшифровывающая TLS, или сетевая среда, не рекомендуется использовать методы псевдошифрования `"none"` и `"zero"`.
Независимо от используемого метода шифрования, заголовок пакета VMess защищен шифрованием и аутентификацией.
:::
Обратите внимание, что `auto` определяет поддержку аппаратного ускорения `AES` только на стороне клиента. Если сервер не поддерживает аппаратное ускорение `AES`, необходимо вручную установить `"chacha20-poly1305"`. Это очень важно, поскольку `Chacha20-Poly1305` на платформах с поддержкой ускорения `AES` работает примерно на 48% медленнее, чем `AES-128-GCM`, однако на платформах без аппаратного ускорения `AES`, `AES-128-GCM` будет работать более чем на 2000% медленнее, чем `Chacha20-Poly1305`.
> `experiments`: string

View File

@ -2,7 +2,7 @@
Обратный прокси может перенаправлять трафик с сервера на клиент, то есть выполнять обратную переадресацию трафика.
В основе его лежит протокол Mux.cool, который, будучи протоколом мультиплексирования, также обладает свойствами, подобными QUIC. Клиент и сервер равноправны, и обе стороны могут создавать новые подсоединения. Обычно только клиент открывает подсоединения, но здесь открытие подсоединения сервером используется для отправки запросов обратного прокси.
Его базовый протокол — `Mux.cool`, однако направление противоположное: сервер инициирует запросы к клиенту.
Принцип работы обратного прокси примерно следующий:

View File

@ -31,12 +31,6 @@
- Разрешенный IP-адрес используется только при выборе маршрута, в пересылаемых пакетах данных по-прежнему используется исходное доменное имя;
- `"IPOnDemand"`: если при сопоставлении встречается любое правило на основе IP-адреса, доменное имя немедленно разрешается в IP-адрес для сопоставления;
> `domainMatcher`: "hybrid" | "linear"
Алгоритм сопоставления доменных имен. Используются разные алгоритмы в зависимости от настройки. Этот параметр влияет на все `RuleObject`, для которых не указан отдельный алгоритм сопоставления.
- `"hybrid"`: используется новый алгоритм сопоставления доменных имен, который работает быстрее и занимает меньше места. Значение по умолчанию.
- `"linear"`: используется старый алгоритм сопоставления доменных имен.
> `rules`: \[[RuleObject](#ruleobject)\]
@ -58,15 +52,16 @@
```json
{
"domainMatcher": "hybrid",
"type": "field",
"domain": ["baidu.com", "qq.com", "geosite:cn"],
"ip": ["0.0.0.0/8", "10.0.0.0/8", "fc00::/7", "fe80::/10", "geoip:cn"],
"port": "53,443,1000-2000",
"sourcePort": "53,443,1000-2000",
"localPort": "53,443,1000-2000",
"network": "tcp",
"source": ["10.0.0.1"],
"sourceIP": ["10.0.0.1"],
"localIP": ["192.168.0.25"],
"user": ["love@xray.com"],
"vlessRoute": "53,443,1000-2000",
"inboundTag": ["tag-vmess"],
"protocol": ["http", "tls", "quic", "bittorrent"],
"attrs": { ":method": "GET" },
@ -80,21 +75,6 @@
Если указано несколько атрибутов, они должны выполняться **одновременно**, чтобы текущее правило вступило в силу.
:::
> `domainMatcher`: "hybrid" | "linear"
Алгоритм сопоставления доменных имен. Используются разные алгоритмы в зависимости от настройки. Этот параметр имеет приоритет над `domainMatcher`, настроенным в `RoutingObject`.
- `"hybrid"`: используется новый алгоритм сопоставления доменных имен, который работает быстрее и занимает меньше места. Значение по умолчанию.
- `"linear"`: используется старый алгоритм сопоставления доменных имен.
> `type`: "field"
В настоящее время поддерживается только опция `"field"`.
::: tip
Можно опустить эту строку в Xray-core v1.8.7 или более поздней версии.
:::
> `domain`: \[string\]
Массив, каждый элемент которого представляет собой сопоставление доменного имени. Возможны следующие форматы:
@ -137,6 +117,10 @@
- `a`: a является положительным целым числом, меньшим 65536. Правило вступает в силу, если порт источника равен a.
- Смесь двух вышеуказанных форматов, разделенных запятой ",". Например: `"53,443,1000-2000"`.
> `localPort`number | string
Порт локального `inbound`, формат соответствует `port`/`sourcePort`. Может быть полезно, когда `inbound` прослушивает диапазон портов.
> `network`: "tcp" | "udp" | "tcp,udp"
Допустимые значения: "tcp", "udp" или "tcp,udp". Правило вступает в силу, если тип соединения соответствует указанному.
@ -145,16 +129,37 @@
Конечно, другие варианты, явно подходящие для маршрутизации любого трафика, такие как указание диапазона портов **1-65535** или IP-адресов **0.0.0.0/0 + ::/0**, также имеют аналогичное действие.
> `source`: \[string\]
> `sourceIP`: \[string\]
Массив, каждый элемент которого представляет собой диапазон IP-адресов. Возможные форматы: IP-адрес, CIDR, GeoIP и загрузка IP-адресов из файла. Правило вступает в силу, если какой-либо элемент соответствует IP-адресу источника.
Псевдоним: `source`
> `localIP`: \[string\]
Формат такой же, как и у других IP. Используется для указания IP-адреса, используемого локальным `inbound` (при прослушивании всех IP-адресов с помощью `0.0.0.0` разные фактические входящие IP будут приводить к разным `localIP`).
Не работает для `UDP` (отслеживание невозможно из-за его дейтаграммной природы), всегда будет виден IP-адрес, на котором ведется прослушивание (`listen`).
> `user`: \[string\]
Массив, каждый элемент которого является адресом электронной почты. Правило вступает в силу, если какой-либо элемент соответствует пользователю-источнику.
Аналогично доменному имени, также поддерживается сопоставление с помощью регулярных выражений, начинающихся с `regexp:`. (Также необходимо заменить `\` на `\\`, см. объяснение в разделе `domain`)
> `vlessRoute` number | string
Когда седьмой и восьмой байты в конце `UUID` для `vless inbound` равны `00`, `vless` позволяет заменить эти две позиции любыми байтами и использовать их в качестве данных `vlessRoute`. Это дает пользователю возможность настраивать часть серверной маршрутизации по своему усмотрению, не изменяя никаких внешних полей.
```
--------------↓↓↓↓------------------
xxxxxxxx-xxxx-0000-xxxx-xxxxxxxxxxxx
```
В конфигурации используются данные, закодированные в `big-endian` как `uint16` (если вы не понимаете, что это значит, просто рассматривайте эти четыре символа как шестнадцатеричное число и преобразуйте его в десятичное). Например, `0001→1`, `000e→14`, `38b2→14514`. Причина такого подхода в том, что синтаксис здесь аналогичен `port`, что позволяет гибко указывать множество диапазонов для маршрутизации, так же как и для портов.
**Tip:** Это не влияет на безопасность аутентификации в других случаях. Для любого валидного `UUID`, 13-й символ очевидно не может быть `0` (поскольку он хранит версию `UUID`). Использование функции `Xray` для преобразования произвольной строки в `UUID` также не приведет к такому результату, поскольку генерируется `UUID v5`. Даже в этом случае для аутентификации остаются 14 байт.
> `inboundTag`: \[string\]
Массив, каждый элемент которого является тегом. Правило вступает в силу, если какой-либо элемент соответствует тегу входящего протокола.

View File

@ -121,7 +121,8 @@ Reality — это самое безопасное на данный момен
"curvePreferences": [""],
"masterKeyLog": "",
"echConfigList": "",
"echServerKeys": ""
"echServerKeys": "",
"echForceQuery": ""
}
```
@ -300,6 +301,21 @@ x25519Kyber768Draft00
Полученный Config можно опубликовать в HTTPS-записи DNS (см. пример в [Google DNS](https://dns.google/query?name=encryptedsni.com&rr_type=HTTPS) или RFC 9460).
Учтите: сервер, настроенный на использование ECH, всё ещё принимает обычные не-ECH-соединения. Но клиент, настроенный на ECH, при неудачной ECH-рукопожатии сразу завершит соединение, не откатываясь к открытому SNI.
> `echForceQuery` : string
Управляет политикой при использовании DNS-запросов для `ECH Config`, доступны опции `none`(по умолчанию), `half`, `full`.
`none`: Запрашивается один раз. Если не удалось получить действительный `ECH Config`, следующий запрос будет выполнен через пять минут. В случае неудачного запроса **`ECH` использоваться не будет**.
`half`: Запрашивается один раз. В случае неудачи, попытка запроса будет повторяться при каждом новом соединении. В случае неудачного запроса **`ECH` использоваться не будет**. Если запрос успешен, но ответ не содержит `ECH Config`, **`ECH` также использоваться не будет**, и повторных запросов не будет в течение пяти минут.
`full`: Запрашивается один раз, успешное соединение требует обязательного получения действительного `ECH Config`, в противном случае соединение не будет установлено. Этот вариант рекомендуется, если вы уверены в необходимости использования `ECH`. Первые два варианта имитируют поведение `fallback` для обеспечения доступности, но это может привести к отправке `SNI` в открытом виде.
Независимо от успеха запроса, только первое соединение будет блокироваться в ожидании ответа на DNS-запрос. Последующие обновления не будут блокировать соединения.
> `echSockopt` : [SockoptObject](#sockoptobject)
Настраивает параметры базового `socket` для соединения, используемого при выполнении DNS-запросов для записей `ECH`.
### RealityObject
@ -432,7 +448,8 @@ Reality лишь модифицирует TLS, и для реализации н
Рекомендации: Слишком большие значения `afterBytes` и `burstBytesPerSec` не приведут к желаемому эффекту ограничения скорости. Слишком маленькие значения `bytesPerSec` и `burstBytesPerSec` могут быть легко обнаружены.
Следует разумно подбирать параметры в зависимости от размера ресурсов веб-сайта-источника. Если внезапные скачки скорости нежелательны, установите для `burstBytesPerSec` значение 0. :::
Следует разумно подбирать параметры в зависимости от размера ресурсов веб-сайта-источника. Если внезапные скачки скорости нежелательны, установите для `burstBytesPerSec` значение 0.
:::
> `afterBytes` : number
@ -683,7 +700,7 @@ Reality лишь модифицирует TLS, и для реализации н
Для прозрачного проксирования требуются права root или `CAP_NET_ADMIN`.
::: danger
Если в [Dokodemo-door](./inbounds/dokodemo.md) указано `followRedirect: true` и `tproxy` в настройках Sockopt пуст, то значение `tproxy` в настройках Sockopt будет установлено в `"redirect"`.
Если в [Dokodemo-door](./inbounds/tunnel.md) указано `followRedirect: true` и `tproxy` в настройках Sockopt пуст, то значение `tproxy` в настройках Sockopt будет установлено в `"redirect"`.
:::
> `domainStrategy`: "AsIs"