translate /config/outbounds/*.md
parent
1cf58c7906
commit
6deb427a5a
|
@ -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.
|
||||
|
||||
|
||||
|
|
@ -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.
|
||||
|
||||
|
||||
|
|
@ -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.
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -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.
|
||||
|
||||
<!-- prettier-ignore -->
|
||||
::: 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.
|
||||
|
||||
|
|
@ -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" включает эксперимент с отключением сигнала завершения соединения. Этот эксперимент может повлиять на стабильность проксируемого соединения.
|
||||
|
||||
|
||||
|
||||
|
|
@ -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.<br>
|
||||
Для использования TUN виртуального сетевого интерфейса ядра Linux требуется поддержка системы и права root, после использования будет занята 1023-я таблица маршрутизации IPv6.<br>
|
||||
|
||||
::: tip
|
||||
Если в 1023-й таблице маршрутизации IPv6 уже есть записи маршрутов и значение `kernelMode` равно `true`, нормальная работа будет невозможна.
|
||||
:::
|
||||
|
||||
> `mtu`: int
|
||||
|
||||
Размер фрагментации TUN нижнего уровня WireGuard.
|
||||
|
||||
<details>
|
||||
<summary>Как рассчитать MTU</summary>
|
||||
|
||||
Структура пакета WireGuard выглядит следующим образом:
|
||||
|
||||
```
|
||||
- 20-байтовый заголовок IPv4 или 40-байтовый заголовок IPv6
|
||||
- 8-байтовый заголовок UDP
|
||||
- 4 байта типа
|
||||
- 4 байта индекса ключа
|
||||
- 8 байтов nonce
|
||||
- N байтов зашифрованных данных
|
||||
- 16-байтовый тег аутентификации
|
||||
```
|
||||
|
||||
`N байтов зашифрованных данных` - это значение MTU, которое нам нужно. В зависимости от того, использует ли конечная точка IPv4 или IPv6, конкретное значение может быть 1440 (IPv4) или 1420 (IPv6), и его можно дополнительно уменьшить, если это необходимо в особых условиях (например, PPPoE для домашнего интернета требует дополнительного вычитания 8).
|
||||
</details>
|
||||
|
||||
> `reserved` \[ number \]
|
||||
|
||||
Зарезервированные байты WireGuard.
|
||||
|
||||
Новый параметр в Xray-core v1.8.0.<br>
|
||||
При подключении к Warp через WireGuard из-за ограничений Cloudflare для некоторых IP-адресов в Гонконге и Лос-Анджелесе требуется значение `reserved` для успешного подключения.<br>
|
||||
Значение `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.<br>
|
||||
Если этот параметр не указан или оставлен пустым, используется значение по умолчанию `"ForceIP"`.<br>
|
||||
Если целевой адрес является доменным именем, для получения IP-адреса используется [встроенный DNS-сервер](../dns.md) Xray-core (если конфигурация `"dns"` не указана, используется системный DNS), и этот IP-адрес отправляется через WireGuard для установления соединения.<br>
|
||||
|
||||
::: 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"`.<br>
|
||||
Если целевой адрес является доменным именем, для получения IP-адреса используется встроенный DNS-сервер Xray-core. Значение `"queryStrategy"` в конфигурации `"dns"` используется для управления приоритетом IPv4 или IPv6.<br>
|
||||
Если конфигурация `"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`<br>
|
||||
Формат IP:порт, например, `162.159.192.1:2408` или `[2606:4700:d0::a29f:c001]:2408`.
|
||||
|
||||
::: tip
|
||||
Если целевой адрес имеет тип URL, для получения IP-адреса будет использоваться встроенный DNS-сервер Xray-core, приоритет IPv4 или IPv6 определяется значением `domainStrategy`.<br>
|
||||
Если конфигурация `"dns"` не указана, для получения IP-адреса будет использоваться системный DNS, а приоритет IPv4 или IPv6 будет определяться системой.
|
||||
:::
|
||||
|
||||
> `publicKey`: string
|
||||
|
||||
Публичный ключ сервера, используемый для аутентификации, обязательный параметр.
|
||||
|
||||
> `preSharedKey`: string
|
||||
|
||||
Дополнительный ключ симметричного шифрования.
|
||||
|
||||
> `keepAlive`: int
|
||||
|
||||
Интервал отправки keep-alive пакетов в секундах, значение по умолчанию - 0, что означает отсутствие keep-alive.
|
||||
|
||||
> `allowedIPs`: string array
|
||||
|
||||
WireGuard разрешает трафик только от определенных исходных IP-адресов.
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue