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-адресов.