From 6deb427a5a11fccc3ff916863f05c64347a2cca1 Mon Sep 17 00:00:00 2001 From: Nikita Korotaev Date: Tue, 16 Jul 2024 18:26:34 +0500 Subject: [PATCH] translate /config/outbounds/*.md --- docs/ru/config/outbounds/shadowsocks.md | 123 +++++++++++++++++ docs/ru/config/outbounds/socks.md | 94 +++++++++++++ docs/ru/config/outbounds/trojan.md | 67 ++++++++++ docs/ru/config/outbounds/vless.md | 139 +++++++++++++++++++ docs/ru/config/outbounds/vmess.md | 124 +++++++++++++++++ docs/ru/config/outbounds/wireguard.md | 169 ++++++++++++++++++++++++ 6 files changed, 716 insertions(+) create mode 100644 docs/ru/config/outbounds/shadowsocks.md create mode 100644 docs/ru/config/outbounds/socks.md create mode 100644 docs/ru/config/outbounds/trojan.md create mode 100644 docs/ru/config/outbounds/vless.md create mode 100644 docs/ru/config/outbounds/vmess.md create mode 100644 docs/ru/config/outbounds/wireguard.md diff --git a/docs/ru/config/outbounds/shadowsocks.md b/docs/ru/config/outbounds/shadowsocks.md new file mode 100644 index 0000000..0cac2c6 --- /dev/null +++ b/docs/ru/config/outbounds/shadowsocks.md @@ -0,0 +1,123 @@ +# Shadowsocks + +Протокол [Shadowsocks](https://ru.wikipedia.org/wiki/Shadowsocks), совместимый с большинством других реализаций. + +Текущая совместимость: + +- Поддерживает пересылку пакетов TCP и UDP, при этом UDP можно выборочно отключить; +- Рекомендуемые методы шифрования: + - 2022-blake3-aes-128-gcm + - 2022-blake3-aes-256-gcm + - 2022-blake3-chacha20-poly1305 +- Другие методы шифрования: + - aes-256-gcm + - aes-128-gcm + - chacha20-poly1305 или chacha20-ietf-poly1305 + - xchacha20-poly1305 или xchacha20-ietf-poly1305 + - none или plain + +Новый формат протокола Shadowsocks 2022 повышает производительность и обеспечивает полную защиту от повторов, решая следующие проблемы безопасности старого протокола: + +- [Серьезные уязвимости в шифровании Shadowsocks AEAD, которые не могут гарантировать целостность содержимого](https://github.com/shadowsocks/shadowsocks-org/issues/183) +- Возрастающий коэффициент ложных срабатываний исходного фильтра повторов TCP с течением времени +- Отсутствие защиты от повторов UDP +- Поведение TCP, которое можно использовать для активного зондирования + +::: danger +При использовании метода шифрования "none" трафик передается в открытом виде. В целях безопасности не используйте этот метод в общедоступных сетях. +::: + +## 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", + "address": "127.0.0.1", + "port": 1234, + "method": "метод_шифрования", + "password": "пароль", + "uot": true, + "UoTVersion": 2, + "level": 0 +} +``` + +> `email`: string + +Адрес электронной почты, необязательный параметр, используется для идентификации пользователя. + +> `address`: address + +Адрес сервера Shadowsocks, поддерживаются IPv4, IPv6 и доменные имена. Обязательный параметр. + +> `port`: number + +Порт сервера Shadowsocks. Обязательный параметр. + +> `method`: string + +Обязательный параметр. + +> `password`: string + +Обязательный параметр. + +> `uot`: bool + +Включить `udp over tcp`. + +> `UoTVersion`: number + +Версия реализации `UDP over TCP`. + +Допустимые значения: `1`, `2`. + +- Shadowsocks 2022 + +В качестве пароля используется предварительный общий ключ, аналогичный ключам WireGuard. + +Используйте `openssl rand -base64 <длина>`, чтобы сгенерировать ключ, совместимый с shadowsocks-rust, длина зависит от используемого метода шифрования. + +| Метод шифрования | Длина ключа | +| ------------------------------------ | ----------: | +| 2022-blake3-aes-128-gcm | 16 | +| 2022-blake3-aes-256-gcm | 32 | +| 2022-blake3-chacha20-poly1305 | 32 | + +В реализации Go всегда работают 32-битные ключи. + +- Другие методы шифрования + +Любая строка. Длина пароля не ограничена, но короткие пароли более уязвимы для взлома, рекомендуется использовать пароли длиной 16 символов или более. + +> `level`: number + +Уровень пользователя, для соединения будет использоваться [локальная политика](../policy.md#levelpolicyobject), соответствующая этому уровню пользователя. + +Значение `level` соответствует значению `level` в разделе [policy](../policy.md#policyobject). Если не указано, используется значение по умолчанию - 0. + + + diff --git a/docs/ru/config/outbounds/socks.md b/docs/ru/config/outbounds/socks.md new file mode 100644 index 0000000..1828485 --- /dev/null +++ b/docs/ru/config/outbounds/socks.md @@ -0,0 +1,94 @@ +# Socks + +Стандартная реализация протокола Socks, совместимая с [Socks 4](http://ftp.icm.edu.pl/packages/socks/socks4/SOCKS4.protocol), [Socks 4a](https://ftp.icm.edu.pl/packages/socks/socks4/SOCKS4A.protocol) и Socks 5. + +::: danger +**Протокол Socks не обеспечивает шифрования передачи, поэтому он не подходит для передачи данных через общедоступные сети.** +::: + +## 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 + } + ] +} +``` + +> `address`: address + +Адрес сервера, обязательный параметр. + +::: tip +Поддерживается подключение только к Socks 5 серверам. +::: + +> `port`: number + +Порт сервера, обязательный параметр. + +> `users`: \[ [UserObject](#userobject) \] + +Массив, представляющий список пользователей, где каждый элемент представляет собой конфигурацию пользователя. + +Если список не пуст, Socks-клиент будет использовать информацию о пользователе для аутентификации; если не указан, аутентификация не выполняется. + +Значение по умолчанию: пустой массив. + +#### UserObject + +```json +{ + "user": "test user", + "pass": "test pass", + "level": 0 +} +``` + +> `user`: string + +Имя пользователя, тип данных: строка. Обязательный параметр. + +> `pass`: string + +Пароль, тип данных: строка. Обязательный параметр. + +> `level`: number + +Уровень пользователя, для соединения будет использоваться [локальная политика](../policy.md#levelpolicyobject), соответствующая этому уровню пользователя. + +Значение userLevel соответствует значению `level` в разделе [policy](../policy.md#policyobject). Если не указано, используется значение по умолчанию - 0. + + + diff --git a/docs/ru/config/outbounds/trojan.md b/docs/ru/config/outbounds/trojan.md new file mode 100644 index 0000000..62cc269 --- /dev/null +++ b/docs/ru/config/outbounds/trojan.md @@ -0,0 +1,67 @@ +# Trojan + +Протокол [Trojan](https://trojan-gfw.github.io/trojan/protocol). + +::: danger +Trojan предназначен для работы в правильно настроенном зашифрованном TLS-туннеле. +::: + + +## 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 +{ + "address": "127.0.0.1", + "port": 1234, + "password": "password", + "email": "love@xray.com", + "level": 0 +} +``` + +> `address`: address + +Адрес сервера, поддерживаются IPv4, IPv6 и доменные имена. Обязательный параметр. + +> `port`: number + +Порт сервера, обычно тот же, что и порт, прослушиваемый сервером. + +> `password`: string + +Пароль. Обязательный параметр, любая строка. + +> `email`: string + +Адрес электронной почты, необязательный параметр, используется для идентификации пользователя. + +> `level`: number + +Уровень пользователя, для соединения будет использоваться [локальная политика](../policy.md#levelpolicyobject), соответствующая этому уровню пользователя. + +Значение level соответствует значению `level` в разделе [policy](../policy.md#policyobject). Если не указано, используется значение по умолчанию - 0. + + + + + diff --git a/docs/ru/config/outbounds/vless.md b/docs/ru/config/outbounds/vless.md new file mode 100644 index 0000000..2cb72ca --- /dev/null +++ b/docs/ru/config/outbounds/vless.md @@ -0,0 +1,139 @@ +# VLESS + +::: danger +VLESS не предусматривает встроенного шифрования, поэтому обязательным условием для его использования является наличие надежного канала, такого как TLS или REALITY. +::: + +VLESS - это легкий транспортный протокол без сохранения состояния, который разделен на входящую и исходящую части и может служить мостом между клиентом и сервером Xray. + +В отличие от [VMess](./vmess.md), VLESS не зависит от системного времени, аутентификация также осуществляется с помощью UUID. + + +## OutboundConfigurationObject + +```json +{ + "vnext": [ + { + "address": "example.com", + "port": 443, + "users": [ + { + "id": "5783a3e7-e373-51cd-8642-c83782b807c5", + "encryption": "none", + "flow": "xtls-rprx-vision", + "level": 0 + } + ] + } + ] +} +``` + +> `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 + } + ] +} +``` + +> `address`: address + +Адрес сервера, указывающий на сервер, поддерживаются доменные имена, IPv4 и IPv6. + +> `port`: number + +Порт сервера, обычно тот же, что и порт, прослушиваемый сервером. + +> `users`: \[ [UserObject](#userobject) \] + +Массив, представляющий список пользователей, распознаваемых сервером, где каждый элемент является конфигурацией пользователя. + +### UserObject + +```json +{ + "id": "5783a3e7-e373-51cd-8642-c83782b807c5", + "encryption": "none", + "flow": "xtls-rprx-vision", + "level": 0 +} +``` + +> `id`: string + +Идентификатор пользователя VLESS, может быть любой строкой длиной менее 30 байт или допустимым UUID. +Пользовательская строка и ее UUID-отображение эквивалентны, это означает, что вы можете использовать следующие способы записи id в файле конфигурации для идентификации одного и того же пользователя: + +- Напишите `"id": "Я люблю арбуз учителя 1314"`, +- Или напишите `"id": "5783a3e7-e373-51cd-8642-c83782b807c5"` (этот UUID является UUID-отображением строки "Я люблю арбуз учителя 1314") + +Стандарт сопоставления описан в [VLESS UUID Mapping Standard: Mapping Custom Strings to a UUIDv5](https://github.com/XTLS/Xray-core/issues/158). + +Вы можете использовать команду `xray uuid -i "Пользовательская строка"` для генерации UUID, соответствующего пользовательской строке. Вы также можете использовать команду `xray uuid` для генерации случайного UUID. + +> `encryption`: "none" + +Необходимо указать `"none"`, значение не может быть пустым. + +Это требование призвано напомнить пользователю об отсутствии шифрования, а также предотвратить ошибки пользователей при вводе имени атрибута или его расположения в будущем, когда будут доступны методы шифрования. + +Если значение encryption установлено неверно, при использовании Xray или -test будет выдано сообщение об ошибке. + +> `flow`: string + +Режим управления потоком, используется для выбора алгоритма XTLS. + +В настоящее время для исходящего протокола доступны следующие режимы управления потоком: + +- Отсутствует `flow` или пустая строка: используется обычный TLS-прокси. +- `xtls-rprx-vision`: используется новый режим XTLS, включает случайное заполнение внутреннего рукопожатия, поддерживает uTLS для имитации отпечатка клиента. +- `xtls-rprx-vision-udp443`: аналогично `xtls-rprx-vision`, но разрешает UDP-трафик, направленный на порт 443. + +Кроме того, в настоящее время XTLS поддерживает только три транспортных протокола: TCP, mKCP и DomainSocket. + + +::: tip О режимах управления потоком xtls-rprx-*-udp443 + +Когда XTLS в Xray-core включен, трафик, направленный на UDP-порт 443 (обычно QUIC), по умолчанию блокируется, чтобы приложение не использовало QUIC, а использовало TLS, чтобы XTLS действительно вступил в силу. Фактически, QUIC сам по себе не подходит для проксирования, поскольку QUIC имеет встроенные функции TCP, и когда он передается по протоколу VLESS как UDP-трафик, базовый протокол - TCP, что эквивалентно двум уровням TCP. + +Если блокировка не требуется, укажите `xtls-rprx-*-udp443` на стороне клиента, на стороне сервера оставляйте без изменений. +::: + +::: tip О режиме Splice + +Splice - это функция, предоставляемая ядром Linux, где ядро системы напрямую пересылает TCP, минуя память Xray, что значительно сокращает количество операций копирования данных и переключения контекста процессора. + +Ограничения использования режима Splice: + +- Среда Linux. +- Входящий протокол: `Dokodemo door`, `Socks`, `HTTP` и другие чистые TCP-соединения или другие входящие протоколы, использующие XTLS. +- Исходящий протокол: VLESS + XTLS. +- Обратите внимание, что при использовании протокола mKCP Splice не будет использоваться (да, хотя ошибки и нет, на самом деле он не используется). + +Кроме того, при использовании Splice отображение скорости сети будет запаздывать, это особенность, а не ошибка. + +При использовании режима Vision Splice будет включен автоматически, если выполнены вышеуказанные условия. +::: + +> `level`: number + +Уровень пользователя, для соединения будет использоваться [локальная политика](../policy.md#levelpolicyobject), соответствующая этому уровню пользователя. + +Значение level соответствует значению `level` в разделе [policy](../policy.md#policyobject). Если не указано, используется значение по умолчанию - 0. + + diff --git a/docs/ru/config/outbounds/vmess.md b/docs/ru/config/outbounds/vmess.md new file mode 100644 index 0000000..5c09264 --- /dev/null +++ b/docs/ru/config/outbounds/vmess.md @@ -0,0 +1,124 @@ +# VMess + +[VMess](../../development/protocols/vmess.md) - это зашифрованный транспортный протокол, который обычно используется в качестве моста между клиентами и серверами Xray. + +::: danger +VMess полагается на системное время. Убедитесь, что системное время UTC, используемое Xray, находится в пределах 120 секунд от фактического времени, независимо от часового пояса. В системах Linux вы можете установить службу `ntp` для автоматической синхронизации системного времени. +::: + +## OutboundConfigurationObject + +```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": [] +} +``` + +> `address`: address + +Адрес сервера, поддерживается IP-адрес или доменное имя. + +> `port`: number + +Номер порта, который прослушивает сервер, обязательный параметр. + +> `users`: \[ [UserObject](#userobject) \] + +Массив, представляющий группу пользователей, распознаваемых сервером. + +Каждый элемент - это пользователь [UserObject](#userobject). + +#### UserObject + +```json +{ + "id": "5783a3e7-e373-51cd-8642-c83782b807c5", + "security": "auto", + "level": 0, + "experiments": "" +} +``` + +> `id`: string + +Идентификатор пользователя VMess, может быть любой строкой длиной менее 30 байт или допустимым UUID. + +Пользовательская строка и соответствующий ей UUID эквивалентны, что означает, что вы можете использовать любой из следующих вариантов в файле конфигурации для идентификации одного и того же пользователя: + +- Напишите `"id": "Я люблю арбуз учителя 1314"`, +- Или напишите `"id": "5783a3e7-e373-51cd-8642-c83782b807c5"` (этот UUID является сопоставлением строки "Я люблю арбуз учителя 1314") + +Стандарт сопоставления описан в [VLESS UUID Mapping Standard: Mapping Custom Strings to a UUIDv5](https://github.com/XTLS/Xray-core/issues/158). + +Вы можете использовать команду `xray uuid -i "пользовательская строка"` для создания UUID, соответствующего пользовательской строке. Вы также можете использовать команду `xray uuid` для создания случайного UUID. + +> `level`: number + +Уровень пользователя, для соединения будет использоваться [локальная политика](../policy.md#levelpolicyobject), соответствующая этому уровню пользователя. + +Значение level соответствует значению `level` в разделе [policy](../policy.md#policyobject). Если не указано, используется значение по умолчанию - 0. + +> `security`: "aes-128-gcm" | "chacha20-poly1305" | "auto" | "none" | "zero" + +Метод шифрования. Клиент будет отправлять данные с использованием настроенного метода шифрования, сервер автоматически распознает его, настройка на сервере не требуется. + +- `"aes-128-gcm"`: рекомендуется для использования на ПК. +- `"chacha20-poly1305"`: рекомендуется для использования на мобильных устройствах. +- `"auto"`: значение по умолчанию, автоматический выбор (метод шифрования aes-128-gcm, если платформа выполнения - AMD64, ARM64 или s390x, в противном случае - Chacha20-Poly1305). +- `"none"`: без шифрования. + +* `"zero"`: без шифрования и проверки подлинности сообщений (v1.4.0+). + +::: tip +Рекомендуется использовать метод шифрования `"auto"`, чтобы обеспечить безопасность и совместимость в долгосрочной перспективе. + +Метод псевдошифрования `"none"` будет вычислять и проверять контрольные суммы пакетов данных, но поскольку алгоритм аутентификации не имеет аппаратной поддержки, на некоторых платформах он может быть медленнее, чем `"aes-128-gcm"` с аппаратным ускорением. + +Метод псевдошифрования `"zero"` не шифрует сообщения и не вычисляет контрольные суммы данных, поэтому теоретически он должен быть быстрее любого другого метода шифрования. Фактическая скорость может зависеть от других факторов. + +Не рекомендуется использовать методы псевдошифрования `"none"` и `"zero"` без включенного TLS-шифрования и обязательной проверки сертификатов. +Если для установления соединения используется CDN или другая промежуточная платформа, расшифровывающая TLS, или сетевая среда, не рекомендуется использовать методы псевдошифрования `"none"` и `"zero"`. + +Независимо от используемого метода шифрования, заголовок пакета VMess защищен шифрованием и аутентификацией. +::: + +> `experiments`: string + +Включенные экспериментальные функции протокола VMess. (Функции здесь нестабильны и могут быть удалены в любое время). Несколько включенных экспериментов можно разделить символом |, например, "AuthenticatedLength|NoTerminationSignal". + +"AuthenticatedLength" включает эксперимент с аутентифицированной длиной пакета. Этот эксперимент необходимо включить одновременно на клиенте и сервере, а также запустить одну и ту же версию программы. + +"NoTerminationSignal" включает эксперимент с отключением сигнала завершения соединения. Этот эксперимент может повлиять на стабильность проксируемого соединения. + + + + diff --git a/docs/ru/config/outbounds/wireguard.md b/docs/ru/config/outbounds/wireguard.md new file mode 100644 index 0000000..a06fe8f --- /dev/null +++ b/docs/ru/config/outbounds/wireguard.md @@ -0,0 +1,169 @@ +# WireGuard + +Стандартная реализация протокола WireGuard. + +::: danger +**Протокол WireGuard не предназначен для обхода блокировок, и его использование может привести к блокировке сервера из-за наличия характерных признаков.** +::: + +## OutboundConfigurationObject + +```json +{ + "secretKey": "PRIVATE_KEY", + "address": [ + // необязательно, по умолчанию ["10.0.0.1", "fd59:7153:2388:b5fd:0000:0000:0000:0001"] + "IPv4_CIDR", + "IPv6_CIDR", + "и так далее..." + ], + "peers": [ + { + "endpoint": "ENDPOINT_ADDR", + "publicKey": "PUBLIC_KEY" + } + ], + "kernelMode": true, // необязательно, по умолчанию true, если поддерживается и есть достаточные права + "mtu": 1420, // необязательно, по умолчанию 1420 + "reserved": [1, 2, 3], + "workers": 2, // необязательно, по умолчанию runtime.NumCPU() + "domainStrategy": "ForceIP" +} +``` + +::: tip +В настоящее время в исходящем протоколе WireGuard не поддерживается настройка `streamSettings`. +::: + +> `secretKey`: string + +Приватный ключ пользователя. Обязательный параметр. + +> `address`: string array + +WireGuard создаст виртуальный сетевой интерфейс TUN на локальном компьютере. Используйте один или несколько IP-адресов, IPv6 поддерживается. + +> `kernelMode`: true | false + +Использовать ли TUN виртуального сетевого интерфейса ядра Linux.
+Для использования TUN виртуального сетевого интерфейса ядра Linux требуется поддержка системы и права root, после использования будет занята 1023-я таблица маршрутизации IPv6.
+ +::: tip +Если в 1023-й таблице маршрутизации IPv6 уже есть записи маршрутов и значение `kernelMode` равно `true`, нормальная работа будет невозможна. +::: + +> `mtu`: int + +Размер фрагментации TUN нижнего уровня WireGuard. + +
+Как рассчитать MTU + +Структура пакета WireGuard выглядит следующим образом: + +``` +- 20-байтовый заголовок IPv4 или 40-байтовый заголовок IPv6 +- 8-байтовый заголовок UDP +- 4 байта типа +- 4 байта индекса ключа +- 8 байтов nonce +- N байтов зашифрованных данных +- 16-байтовый тег аутентификации +``` + +`N байтов зашифрованных данных` - это значение MTU, которое нам нужно. В зависимости от того, использует ли конечная точка IPv4 или IPv6, конкретное значение может быть 1440 (IPv4) или 1420 (IPv6), и его можно дополнительно уменьшить, если это необходимо в особых условиях (например, PPPoE для домашнего интернета требует дополнительного вычитания 8). +
+ +> `reserved` \[ number \] + +Зарезервированные байты WireGuard. + +Новый параметр в Xray-core v1.8.0.
+При подключении к Warp через WireGuard из-за ограничений Cloudflare для некоторых IP-адресов в Гонконге и Лос-Анджелесе требуется значение `reserved` для успешного подключения.
+Значение `reserved` можно получить с помощью сторонних инструментов, таких как: [warp-reg](https://github.com/badafans/warp-reg), [warp-reg.sh](https://github.com/chise0713/warp-reg.sh). + +> `workers`: int + +Количество потоков, используемых WireGuard. + +> `peers`: \[ [Peers](#peers) \] + +Список серверов WireGuard, где каждый элемент является конфигурацией сервера. + +> `domainStrategy`: "ForceIPv6v4" | "ForceIPv6" | "ForceIPv4v6" | "ForceIPv4" | "ForceIP" + +Новый параметр в Xray-core v1.8.6.
+Если этот параметр не указан или оставлен пустым, используется значение по умолчанию `"ForceIP"`.
+Если целевой адрес является доменным именем, для получения IP-адреса используется [встроенный DNS-сервер](../dns.md) Xray-core (если конфигурация `"dns"` не указана, используется системный DNS), и этот IP-адрес отправляется через WireGuard для установления соединения.
+ +::: tip +Если значение `domainStrategy` конфликтует со значением `"queryStrategy"` в конфигурации `"dns"`, это может привести к ошибкам при открытии веб-сайтов. +::: + +```json + "dns": { + "servers": [ + "https://1.1.1.1/dns-query", + { + "address": "https://1.1.1.1/dns-query", + "domains": [ + "geosite:openai" + ], + "skipFallback": true, + "queryStrategy": "UseIPv6" // Запрашивать только записи AAAA + } + ], + "queryStrategy": "UseIP" // Запрашивать записи A и AAAA одновременно, если этот параметр не указан, значение по умолчанию - UseIP + }, +``` + +Если `domainStrategy: "ForceIPv4"`, а в поле DNS, управляющем запросами домена geosite:openai, используется `"queryStrategy": "UseIPv6"`, это приведет к ошибкам при открытии веб-сайтов geosite:openai. + +::: tip +В Xray-core v1.8.0 - v1.8.4 нет `"domainStrategy"`.
+Если целевой адрес является доменным именем, для получения IP-адреса используется встроенный DNS-сервер Xray-core. Значение `"queryStrategy"` в конфигурации `"dns"` используется для управления приоритетом IPv4 или IPv6.
+Если конфигурация `"dns"` не указана, для получения IP-адреса используется системный DNS, а приоритет IPv4 или IPv6 определяется системой. +::: + +### Peers + +```json +{ + "endpoint": "ENDPOINT_ADDR", + "publicKey": "PUBLIC_KEY", + "preSharedKey": "PRE_SHARED_KEY", // необязательно, по умолчанию "0000000000000000000000000000000000000000000000000000000000000000" + "keepAlive": 0, // необязательно, по умолчанию 0 + "allowedIPs": ["0.0.0.0/0"] // необязательно, по умолчанию ["0.0.0.0/0", "::/0"] +} +``` + +> `endpoint`: address + +Адрес сервера, обязательный параметр. + +Формат URL:порт, например, `engage.cloudflareclient.com:2408`
+Формат IP:порт, например, `162.159.192.1:2408` или `[2606:4700:d0::a29f:c001]:2408`. + +::: tip +Если целевой адрес имеет тип URL, для получения IP-адреса будет использоваться встроенный DNS-сервер Xray-core, приоритет IPv4 или IPv6 определяется значением `domainStrategy`.
+Если конфигурация `"dns"` не указана, для получения IP-адреса будет использоваться системный DNS, а приоритет IPv4 или IPv6 будет определяться системой. +::: + +> `publicKey`: string + +Публичный ключ сервера, используемый для аутентификации, обязательный параметр. + +> `preSharedKey`: string + +Дополнительный ключ симметричного шифрования. + +> `keepAlive`: int + +Интервал отправки keep-alive пакетов в секундах, значение по умолчанию - 0, что означает отсутствие keep-alive. + +> `allowedIPs`: string array + +WireGuard разрешает трафик только от определенных исходных IP-адресов. + + +