mirror of
https://github.com/XTLS/Xray-docs-next.git
synced 2025-01-20 17:51:40 +03:00
3b23ce3ea2
* add Russian lang support --------- Co-authored-by: 风扇滑翔翼 <Fangliding.fshxy@outlook.com>
170 lines
8.9 KiB
Markdown
170 lines
8.9 KiB
Markdown
# 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-адресов.
|
||
|
||
|
||
|