Warning
This translation was modified on 16 July 2024 and an updated version (1 November 2024) is available on the source page. View the original page
WireGuard
Стандартная реализация протокола WireGuard.
Предупреждение
Протокол WireGuard не предназначен для обхода блокировок, и его использование может привести к блокировке сервера из-за наличия характерных признаков.
OutboundConfigurationObject
{
"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"
}
Подсказка
В настоящее время в исходящем протоколе WireGuard не поддерживается настройка streamSettings
.
secretKey
: string
Приватный ключ пользователя. Обязательный параметр.
address
: string array
WireGuard создаст виртуальный сетевой интерфейс TUN на локальном компьютере. Используйте один или несколько IP-адресов, IPv6 поддерживается.
kernelMode
: true | false
Использовать ли TUN виртуального сетевого интерфейса ядра Linux.
Для использования TUN виртуального сетевого интерфейса ядра Linux требуется поддержка системы и права root, после использования будет занята 1023-я таблица маршрутизации IPv6.
Подсказка
Если в 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, warp-reg.sh.
workers
: int
Количество потоков, используемых WireGuard.
peers
: [ Peers ]
Список серверов WireGuard, где каждый элемент является конфигурацией сервера.
domainStrategy
: "ForceIPv6v4" | "ForceIPv6" | "ForceIPv4v6" | "ForceIPv4" | "ForceIP"
Новый параметр в Xray-core v1.8.6.
Если этот параметр не указан или оставлен пустым, используется значение по умолчанию "ForceIP"
.
Если целевой адрес является доменным именем, для получения IP-адреса используется встроенный DNS-сервер Xray-core (если конфигурация "dns"
не указана, используется системный DNS), и этот IP-адрес отправляется через WireGuard для установления соединения.
Подсказка
Если значение domainStrategy
конфликтует со значением "queryStrategy"
в конфигурации "dns"
, это может привести к ошибкам при открытии веб-сайтов.
"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.
Подсказка
В Xray-core v1.8.0 - v1.8.4 нет "domainStrategy"
.
Если целевой адрес является доменным именем, для получения IP-адреса используется встроенный DNS-сервер Xray-core. Значение "queryStrategy"
в конфигурации "dns"
используется для управления приоритетом IPv4 или IPv6.
Если конфигурация "dns"
не указана, для получения IP-адреса используется системный DNS, а приоритет IPv4 или IPv6 определяется системой.
Peers
{
"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
.
Подсказка
Если целевой адрес имеет тип 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-адресов.