RU Outbound simplification

This commit is contained in:
iambabyninja
2025-10-20 17:54:32 +03:00
parent bc5d7231de
commit dcd5c1d602
11 changed files with 127 additions and 295 deletions

View File

@@ -19,11 +19,6 @@
"sniffing": {
"enabled": true,
"destOverride": ["http", "tls"]
},
"allocate": {
"strategy": "always",
"refresh": 5,
"concurrency": 3
}
}
]
@@ -60,7 +55,7 @@
Можно использовать запятые для разделения диапазонов, например `11,13,15-17`, что означает порты 11, 13, 15, 16 и 17 (5 портов).
Если указан только один порт, Xray будет прослушивать входящие подключения на этом порту.
Если указан диапазон портов, то фактическое поведение зависит от настройки `allocate`.
Если указан указан диапазон портов, Xray будет прослушивать все порты в этом диапазоне.
Обратите внимание, что прослушивание порта — это довольно ресурсоемкая операция. Прослушивание слишком большого диапазона портов может привести к значительному увеличению потребляемых ресурсов и даже нарушить нормальную работу Xray. Как правило, проблемы могут начаться, когда количество прослушиваемых портов приближается к четырехзначным числам. Если вам нужен большой диапазон, рассмотрите возможность использования iptables для перенаправления вместо того, чтобы настраивать его здесь.
@@ -103,10 +98,6 @@
Если в sniffing включен параметр `enabled`, Xray также сможет обнаруживать трафик типа bittorrent, а затем можно настроить правила маршрутизации по протоколу, чтобы обрабатывать трафик BT, например, блокировать его на сервере или перенаправлять его на определенный VPS на клиенте.
> `allocate`: [AllocateObject](#allocateobject)
Настройки выделения портов при указании нескольких портов.
### SniffingObject
```json
@@ -179,34 +170,4 @@ Xray будет использовать доменные имена, обнар
Если вы уверены, что **проксируемое соединение будет правильно разрешено DNS**, то при использовании `routeOnly` и включенном `destOverride` можно установить стратегию сопоставления маршрутов `domainStrategy` в `AsIs`, чтобы реализовать разделение трафика по доменам и IP-адресам без DNS-разрешения.
В этом случае при сопоставлении правил на основе IP-адресов будет использоваться исходный IP-адрес домена.
:::
### AllocateObject
```json
{
"strategy": "always",
"refresh": 5,
"concurrency": 3
}
```
> `strategy`: "always" | "random"
Стратегия выделения портов.
- `"always"` - всегда выделять все указанные порты.
Xray будет прослушивать все порты, указанные в `port`.
- `"random"` - случайным образом открывать порты.
Каждые `refresh` минут Xray будет случайным образом выбирать `concurrency` портов из диапазона, указанного в `port`, и прослушивать их.
> `refresh`: number
Интервал обновления случайных портов в минутах.
Минимальное значение - `2`, рекомендуемое значение - `5`.
Этот параметр действителен только при `strategy` = `"random"`.
> `concurrency`: number
Количество случайных портов.
Минимальное значение - `1`, максимальное значение - треть от диапазона портов, указанного в `port`.
Рекомендуемое значение - `3`.
ы

View File

@@ -19,9 +19,6 @@ VMess полагается на системное время. Убедитес
],
"default": {
"level": 0
},
"detour": {
"to": "tag_to_detour"
}
}
```
@@ -34,10 +31,6 @@ VMess полагается на системное время. Убедитес
Когда эта конфигурация используется для динамических портов, Xray будет автоматически создавать пользователей.
> `detour`: [DetourObject](#detourobject)
Указывает, что для соответствующего исходящего протокола следует использовать другой сервер.
> `default`: [DefaultObject](#defaultobject)
Необязательно. Конфигурация по умолчанию для клиентов. Действует только при использовании с `detour`.
@@ -78,18 +71,6 @@ VMess полагается на системное время. Убедитес
Адрес электронной почты пользователя, используемый для разделения трафика от разных пользователей.
### DetourObject
```json
{
"to": "tag_to_detour"
}
```
> `to`: string
`Тег` входящего соединения, определяющий входящее соединение, использующее протокол VMess.
### DefaultObject
```json

View File

@@ -14,18 +14,12 @@
```json
{
"servers": [
{
"address": "192.168.108.1",
"port": 3128,
"users": [
{
"user": "my-username",
"pass": "my-password"
}
]
}
],
"address": "192.168.108.1",
"port": 3128,
"user": "my-username",
"pass": "my-password",
"level": 0,
"email": "love@xray.com",
"headers": {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36",
"Accept-Language": "zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2"
@@ -37,29 +31,6 @@
В настоящее время в исходящем HTTP-протоколе действительна конфигурация `streamSettings` с параметрами `security` и `tlsSettings`.
:::
> `servers`: \[ [ServerObject](#serverobject) \]
Список HTTP-серверов, каждый элемент которого является конфигурацией сервера. Если настроено несколько серверов, они используются по кругу (RoundRobin).
> `headers`: map{ string, string }
HTTP-заголовки, пара "ключ-значение". Каждый ключ представляет собой имя HTTP-заголовка, все пары "ключ-значение" будут прикрепляться к каждому запросу.
### ServerObject
```json
{
"address": "192.168.108.1",
"port": 3128,
"users": [
{
"user": "my-username",
"pass": "my-password"
}
]
}
```
> `address`: string
Адрес HTTP-прокси-сервера, обязательный параметр.
@@ -68,23 +39,24 @@ HTTP-заголовки, пара "ключ-значение". Каждый кл
Порт HTTP-прокси-сервера, обязательный параметр.
> `user`: \[[AccountObject](#accountobject)\]
Массив, каждый элемент которого представляет собой учетную запись пользователя. Значение по умолчанию: пустой массив.
#### AccountObject
```json
{
"user": "my-username",
"pass": "my-password"
}
```
> `user`: string
Имя пользователя, тип данных: строка. Обязательный параметр.
Имя пользователя, строковый тип. Обязательно, если для подключения к серверу требуется аутентификация, в противном случае не включайте этот пункт.
> `pass`: string
Пароль, тип данных: строка. Обязательный параметр.
Пароль, строковый тип. Обязательно, если для подключения к серверу требуется аутентификация, в противном случае не включайте этот пункт.
> `level`: number
Уровень пользователя. Соединение будет использовать [локальную политику](../policy.md#levelpolicyobject), соответствующую этому уровню пользователя. Необязательно, если для подключения к серверу требуется аутентификация, в противном случае не включайте этот пункт.
Значение `userLevel` соответствует значению `level` в [policy](../policy.md#policyobject). Если не указано, по умолчанию используется 0.
> `email`: string
Адрес электронной почты, используемый для идентификации пользователя. Необязательно, если для подключения к серверу требуется аутентификация, в противном случае не включайте этот пункт.
> `headers`: map{ string, string }
Заголовки HTTP, представляющие собой пары ключ-значение. Каждый ключ обозначает имя заголовка HTTP, и все пары ключ-значение будут прикрепляться к каждому запросу.

View File

@@ -29,29 +29,6 @@
## OutboundConfigurationObject
```json
{
"servers": [
{
"email": "love@xray.com",
"address": "127.0.0.1",
"port": 1234,
"method": етод_шифрования",
"password": "пароль",
"uot": true,
"UoTVersion": 2,
"level": 0
}
]
}
```
> `servers`: \[[ServerObject](#serverobject)\]
Массив, представляющий собой набор настроек сервера Shadowsocks, каждый элемент которого является [ServerObject](#serverobject).
### ServerObject
```json
{
"email": "love@xray.com",

View File

@@ -8,41 +8,14 @@
## OutboundConfigurationObject
```json
{
"servers": [
{
"address": "127.0.0.1",
"port": 1234,
"users": [
{
"user": "test user",
"pass": "test pass",
"level": 0
}
]
}
]
}
```
> `servers`: \[ [ServerObject](#serverobject) \]
Список Socks-серверов, где каждый элемент представляет собой конфигурацию сервера.
### ServerObject
```json
{
"address": "127.0.0.1",
"port": 1234,
"users": [
{
"user": "test user",
"pass": "test pass",
"level": 0
}
]
"user": "test user",
"pass": "test pass",
"level": 0,
"email": "love@xray.com"
}
```
@@ -58,23 +31,6 @@
Порт сервера, обязательный параметр.
> `users`: \[ [UserObject](#userobject) \]
Массив, представляющий список пользователей, где каждый элемент представляет собой конфигурацию пользователя.
Если список не пуст, Socks-клиент будет использовать информацию о пользователе для аутентификации; если не указан, аутентификация не выполняется.
Значение по умолчанию: пустой массив.
#### UserObject
```json
{
"user": "test user",
"pass": "test pass",
"level": 0
}
```
> `user`: string
@@ -89,3 +45,7 @@
Уровень пользователя, для соединения будет использоваться [локальная политика](../policy.md#levelpolicyobject), соответствующая этому уровню пользователя.
Значение userLevel соответствует значению `level` в разделе [policy](../policy.md#policyobject). Если не указано, используется значение по умолчанию - 0.
> `email`: string
Адрес электронной почты, используемый для идентификации пользователя.

View File

@@ -8,25 +8,7 @@ Trojan предназначен для работы в правильно нас
## OutboundConfigurationObject
```json
{
"servers": [
{
"address": "127.0.0.1",
"port": 1234,
"password": "password",
"email": "love@xray.com",
"level": 0
}
]
}
```
> `servers`: \[ [ServerObject](#serverobject) \]
Массив, каждый элемент которого является [ServerObject](#serverobject).
### ServerObject
```json
{

View File

@@ -6,45 +6,16 @@ VLESS - это легкий транспортный протокол без с
## OutboundConfigurationObject
```json
{
"vnext": [
{
"address": "example.com",
"port": 443,
"users": [
{
"id": "5783a3e7-e373-51cd-8642-c83782b807c5",
"encryption": "none",
"flow": "xtls-rprx-vision",
"level": 0,
"reverse": {}
}
]
}
]
}
```
> `vnext`: \[ [ServerObject](#serverobject) \]
Массив, представляющий список серверов VLESS, содержащий набор конфигураций, указывающих на сервер, где каждый элемент является конфигурацией сервера.
### ServerObject
```json
{
"address": "example.com",
"port": 443,
"users": [
{
"id": "5783a3e7-e373-51cd-8642-c83782b807c5",
"encryption": "none",
"flow": "xtls-rprx-vision",
"level": 0,
"reverse": {}
}
]
"id": "5783a3e7-e373-51cd-8642-c83782b807c5",
"encryption": "none",
"flow": "xtls-rprx-vision",
"level": 0,
"reverse": {}
}
```
@@ -56,21 +27,6 @@ VLESS - это легкий транспортный протокол без с
Порт сервера, обычно тот же, что и порт, прослушиваемый сервером.
> `users`: \[ [UserObject](#userobject) \]
Массив, представляющий список пользователей, распознаваемых сервером, где каждый элемент является конфигурацией пользователя.
### UserObject
```json
{
"id": "5783a3e7-e373-51cd-8642-c83782b807c5",
"encryption": "none",
"flow": "xtls-rprx-vision",
"level": 0
}
```
> `id`: string
Идентификатор пользователя VLESS, может быть любой строкой длиной менее 30 байт или допустимым UUID.

View File

@@ -10,36 +10,10 @@ VMess полагается на системное время. Убедитес
```json
{
"vnext": [
{
"address": "127.0.0.1",
"port": 37192,
"users": [
{
"id": "5783a3e7-e373-51cd-8642-c83782b807c5",
"security": "auto",
"level": 0,
"experiments": ""
}
]
}
]
}
```
> `vnext`: \[ [ServerObject](#serverobject) \]
Массив, содержащий набор конфигураций сервера.
Каждый элемент - это конфигурация сервера [ServerObject](#serverobject).
### ServerObject
```json
{
"address": "127.0.0.1",
"port": 37192,
"users": []
"id": "5783a3e7-e373-51cd-8642-c83782b807c5",
"security": "auto",
"level": 0,
"experiments": ""
}
```

View File

@@ -35,13 +35,13 @@ go env -w GOPROXY=https://goproxy.io,direct
```powershell
$env:CGO_ENABLED=0
go build -o xray.exe -trimpath -ldflags "-s -w -buildid=" ./main
go build -o xray.exe -trimpath -buildvcs=false -ldflags "-s -w -buildid=" ./main
```
### macOS, Linux:
```bash
CGO_ENABLED=0 go build -o xray -trimpath -ldflags "-s -w -buildid=" ./main
CGO_ENABLED=0 go build -o xray -trimpath -buildvcs=false -ldflags "-s -w -buildid=" ./main
```
Выполнение этих команд создаст исполняемый файл xray в текущем каталоге.
@@ -63,7 +63,7 @@ $env:CGO_ENABLED=0
$env:GOOS="linux"
$env:GOARCH="amd64"
go build -o xray -trimpath -ldflags "-s -w -buildid=" ./main
go build -o xray -trimpath -buildvcs=false -ldflags "-s -w -buildid=" ./main
```
После загрузки на сервер не забудьте выполнить команду `chmod +x xray` в терминале сервера.
@@ -74,8 +74,22 @@ go build -o xray -trimpath -ldflags "-s -w -buildid=" ./main
## Воспроизводимая сборка:
Выполнив описанные выше шаги, вы можете собрать бинарный файл, идентичный тому, что находится в релизе.
Используйте следующие команды для сборки (`<short commit ID>` следует заменить на соответствующие первые семь символов SHA-256 коммита):
```bash
CGO_ENABLED=0 go build -o xray -trimpath -buildvcs=false -gcflags="all=-l=4" -ldflags="-X github.com/xtls/xray-core/core.build=<short commit ID> -s -w -buildid=" -v ./main
```
Для архитектур MIPS/MIPSLE следует использовать:
```bash
CGO_ENABLED=0 go build -o xray -trimpath -buildvcs=false -gcflags="-l=4" -ldflags="-X github.com/xtls/xray-core/core.build=<short commit ID> -s -w -buildid=" -v ./main
```
::: warning
Убедитесь, что вы используете ту же версию Golang, что и для сборки релиза.
Пожалуйста, сначала убедитесь, что версия Golang, которую вы используете, соответствует версии, использованной для компиляции релизов.
:::
## Компиляция версии для Windows 7
Замените инструментарий Golang на версию, предоставленную в [go-win7](https://github.com/XTLS/go-win7), а затем выполните компиляцию, следуя шагам выше.

View File

@@ -17,14 +17,17 @@ Usage:
The commands are:
run Run Xray with config, the default command
version Show current version of Xray
api Call an API in an Xray process
tls TLS tools
uuid Generate UUIDv4 or UUIDv5
x25519 Generate key pair for x25519 key exchange
wg Generate key pair for wireguard key exchange
run Запустить Xray с конфигурацией
version Показать текущую версию Xray
api Вызвать API в процессе Xray
tls Инструменты TLS
uuid Сгенерировать UUIDv4 или UUIDv5 (VLESS)
x25519 Сгенерировать ключевую пару для обмена ключами X25519 (REALITY, VLESS Encryption)
wg Сгенерировать ключевую пару для обмена ключами X25519 (WireGuard)
mldsa65 Сгенерировать ключевую пару для постквантовой подписи ML-DSA-65 (REALITY)
mlkem768 Сгенерировать ключевую пару для постквантового обмена ключами ML-KEM-768 (VLESS Encryption)
vlessenc Сгенерировать пару json для дешифрования/шифрования (VLESS Encryption)
Use "xray help <command>" for more information about a command.
```
@@ -66,6 +69,12 @@ The -dump flag tells Xray to print the merged config.
Помимо формата JSON по умолчанию, файлы конфигурации также могут быть в формате TOML или YAML. Если формат не указан явно, он определяется по расширению файла.
:::
::: tip
Когда `-config` не указан, Xray последовательно попытается загрузить `config.json` из следующих путей:
- Рабочий каталог (Working Directory)
- Путь, указанный в переменной окружения `Xray.location.asset` в [переменных окружения](../config/features/env.md#Путь-к-файлам-ресурсов)
:::
```
xray run -dump
```
@@ -121,10 +130,10 @@ The commands are:
Sub-command `pb`
```bash
# Usage: xray convert pb [-debug] [-type] [json file] [json file] ...
# Usage: xray convert pb [-outpbfile out.pb] [-debug] [-type] [json file] [json file] ...
# mix three config files to mix.pb
xray convert pb c1.json c2.json c3.json > mix.pb
xray convert pb -outpbfile mix.pb c1.json c2.json c3.json
# Use -debug option to view the content of mix.pb
xray convert pb -debug mix.pb
@@ -210,3 +219,33 @@ xray wg [-i "(base64.StdEncoding)"]
- Рабочий каталог (Working Directory);
- Путь, указанный в переменной окружения `Xray.location.asset` (см. [Переменные окружения](../config/features/env.md#ресурсные-файлы)).
:::
### xray mldsa65
Генерирует пару ключей для постквантовой подписи MLDSA-65, используемой в REALITY.
Использование:
```
xray mldsa65 [-i "seed (base64.StdEncoding)"]
```
### xray mlkem768
Генерирует пару ключей для постквантового обмена ключами ML-KEM-768, используемую в VLESS Encryption.
Использование:
```
xray mlkem768 [-i "seed (base64.StdEncoding)"]
```
### xray vlessenc
Генерирует содержимое опций `encryption`/`decryption`, которые могут быть непосредственно использованы в VLESS Encryption. В сгенерированной конфигурации достаточно использовать один из двух методов аутентификации: X25519 или ML-KEM-768, но сервер и клиент должны использовать один и тот же метод аутентификации. Обмен временными ключами остается постквантово безопасным, независимо от метода аутентификации.
Использование:
```
xray vlessenc
```

View File

@@ -120,25 +120,41 @@ Xray предлагает два способа проверки:
- [PassWall](https://github.com/xiaorouji/openwrt-passwall), [PassWall 2](https://github.com/xiaorouji/openwrt-passwall2)
- [ShadowSocksR Plus+](https://github.com/fw876/helloworld)
- [luci-app-xray](https://github.com/yichya/luci-app-xray) ([openwrt-xray](https://github.com/yichya/openwrt-xray))
- Asuswrt-Merlin
- [XRAYUI](https://github.com/DanielLavrushin/asuswrt-merlin-xrayui)
- Windows
- [v2rayA](https://github.com/v2rayA/v2rayA)
- [v2rayN](https://github.com/2dust/v2rayN)
- [Furious](https://github.com/LorenEteval/Furious)
- [Invisible Man - Xray](https://github.com/InvisibleManVPN/InvisibleMan-XRayClient)
- [AnyPortal](https://github.com/AnyPortal/AnyPortal)
- Android
- [v2rayNG](https://github.com/2dust/v2rayNG)
- [X-flutter](https://github.com/XTLS/X-flutter)
- [SaeedDev94/Xray](https://github.com/SaeedDev94/Xray)
- iOS & macOS arm64
- [SimpleXray](https://github.com/lhear/SimpleXray)
- [AnyPortal](https://github.com/AnyPortal/AnyPortal)
- iOS & macOS arm64 & tvOS
- [Happ](https://apps.apple.com/app/happ-proxy-utility/id6504287215) ([tvOS](https://apps.apple.com/us/app/happ-proxy-utility-for-tv/id6748297274))
- [FoXray](https://apps.apple.com/app/foxray/id6448898396)
- [Streisand](https://apps.apple.com/app/streisand/id6450534064)
- macOS arm64 & x64
- [Happ](https://apps.apple.com/app/happ-proxy-utility/id6504287215)
- [v2rayA](https://github.com/v2rayA/v2rayA)
- [v2rayN](https://github.com/2dust/v2rayN)
- [V2rayU](https://github.com/yanue/V2rayU)
- [V2RayXS](https://github.com/tzmax/V2RayXS)
- [Furious](https://github.com/LorenEteval/Furious)
- [FoXray](https://apps.apple.com/app/foxray/id6448898396)
- [OneXray](https://github.com/OneXray/OneXray)
- [GoXRay](https://github.com/goxray/desktop)
- [AnyPortal](https://github.com/AnyPortal/AnyPortal)
- Linux
- [v2rayA](https://github.com/v2rayA/v2rayA)
- [v2rayN](https://github.com/2dust/v2rayN)
- [Furious](https://github.com/LorenEteval/Furious)
- [GorzRay](https://github.com/ketetefid/GorzRay)
- [GoXRay](https://github.com/goxray/desktop)
- [AnyPortal](https://github.com/AnyPortal/AnyPortal)
# Генератор UUID