diff --git a/docs/ru/config/inbound.md b/docs/ru/config/inbound.md index fef651a..13299c3 100644 --- a/docs/ru/config/inbound.md +++ b/docs/ru/config/inbound.md @@ -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`. +ы \ No newline at end of file diff --git a/docs/ru/config/inbounds/vmess.md b/docs/ru/config/inbounds/vmess.md index 737a4f1..414093c 100644 --- a/docs/ru/config/inbounds/vmess.md +++ b/docs/ru/config/inbounds/vmess.md @@ -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 diff --git a/docs/ru/config/outbounds/http.md b/docs/ru/config/outbounds/http.md index 279f94d..d2cb3e0 100644 --- a/docs/ru/config/outbounds/http.md +++ b/docs/ru/config/outbounds/http.md @@ -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, и все пары ключ-значение будут прикрепляться к каждому запросу. \ No newline at end of file diff --git a/docs/ru/config/outbounds/shadowsocks.md b/docs/ru/config/outbounds/shadowsocks.md index fb17fc9..6edfaf9 100644 --- a/docs/ru/config/outbounds/shadowsocks.md +++ b/docs/ru/config/outbounds/shadowsocks.md @@ -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", diff --git a/docs/ru/config/outbounds/socks.md b/docs/ru/config/outbounds/socks.md index 35162c2..8ddeb99 100644 --- a/docs/ru/config/outbounds/socks.md +++ b/docs/ru/config/outbounds/socks.md @@ -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 + +Адрес электронной почты, используемый для идентификации пользователя. \ No newline at end of file diff --git a/docs/ru/config/outbounds/trojan.md b/docs/ru/config/outbounds/trojan.md index fb082ce..6cf9de8 100644 --- a/docs/ru/config/outbounds/trojan.md +++ b/docs/ru/config/outbounds/trojan.md @@ -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 { diff --git a/docs/ru/config/outbounds/vless.md b/docs/ru/config/outbounds/vless.md index 06253ea..07ef1c5 100644 --- a/docs/ru/config/outbounds/vless.md +++ b/docs/ru/config/outbounds/vless.md @@ -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. diff --git a/docs/ru/config/outbounds/vmess.md b/docs/ru/config/outbounds/vmess.md index 8a6830f..6de0dc4 100644 --- a/docs/ru/config/outbounds/vmess.md +++ b/docs/ru/config/outbounds/vmess.md @@ -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": "" } ``` diff --git a/docs/ru/development/intro/compile.md b/docs/ru/development/intro/compile.md index fdcc84f..a61064f 100644 --- a/docs/ru/development/intro/compile.md +++ b/docs/ru/development/intro/compile.md @@ -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 ## Воспроизводимая сборка: -Выполнив описанные выше шаги, вы можете собрать бинарный файл, идентичный тому, что находится в релизе. +Используйте следующие команды для сборки (`` следует заменить на соответствующие первые семь символов 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= -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= -s -w -buildid=" -v ./main +``` ::: warning -Убедитесь, что вы используете ту же версию Golang, что и для сборки релиза. +Пожалуйста, сначала убедитесь, что версия Golang, которую вы используете, соответствует версии, использованной для компиляции релизов. ::: + +## Компиляция версии для Windows 7 + +Замените инструментарий Golang на версию, предоставленную в [go-win7](https://github.com/XTLS/go-win7), а затем выполните компиляцию, следуя шагам выше. \ No newline at end of file diff --git a/docs/ru/document/command.md b/docs/ru/document/command.md index b0cea55..5191330 100644 --- a/docs/ru/document/command.md +++ b/docs/ru/document/command.md @@ -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 " 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 +``` \ No newline at end of file diff --git a/docs/ru/document/install.md b/docs/ru/document/install.md index 2ecd593..67c3db7 100644 --- a/docs/ru/document/install.md +++ b/docs/ru/document/install.md @@ -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