Конфигурация WireGuard
Chute поддерживает WireGuard как протокол исходящего прокси. Вы можете задать параметры WireGuard прямо в строке раздела [Proxy] или определить именованный раздел [WireGuard] и ссылаться на него.
Раздел WireGuard
Раздел [WireGuard] определяет полную конфигурацию туннеля WireGuard, на которую можно ссылаться по имени из прокси-сервера WireGuard.
[WireGuard wg0]
private-key = base64_private_key
peer-public-key = base64_peer_public_key
self-ip = 10.0.0.2
self-ip-v6 = fd00::2
preshared-key = base64_preshared_key
server = example.com
port = 51820
wg-mtu = 1420
keepalive = 25
Параметры
| Ключ | Обязательно | Описание |
|---|---|---|
private-key |
Да | Закрытый ключ WireGuard в кодировке base64 |
peer-public-key |
Да | Открытый ключ пира в кодировке base64 |
self-ip |
Нет | Локальный IPv4-адрес для интерфейса WireGuard (по умолчанию 10.0.0.2, и для WireGuard, и для AmneziaWG) |
self-ip-v6 |
Нет | Локальный IPv6-адрес для интерфейса WireGuard |
preshared-key |
Нет | Предварительно разделённый ключ (PSK) для постквантовой устойчивости |
server |
Да* | Адрес удалённого сервера (используется, когда строка прокси его не указывает; строка прокси имеет приоритет) |
port |
Да* | Порт удалённого сервера (тот же приоритет, что и у server) |
wg-mtu |
Нет | MTU для интерфейса WireGuard (по умолчанию: 1420). mtu в разделе читается как wg-mtu; явно заданный wg-mtu имеет приоритет |
keepalive |
Нет | Интервал постоянного keepalive в секундах. Если не задан, keepalive не отправляется |
allowed-ips |
Нет | Адреса назначения, которые пропускает пир, — CIDR через запятую (например, allowed-ips = 10.0.0.0/8, 192.168.1.0/24). Соединение с адресом вне этих диапазонов отклоняется (TCP) или отбрасывается (UDP). Если ключа нет или в нём есть и 0.0.0.0/0, и ::/0, подразумеваются все адреса; запись, которая не является CIDR, игнорируется с предупреждением |
reserved |
Нет | Зарезервированные байты для заголовка рукопожатия WireGuard (например, reserved=0,1,2) — разбирается, но текущий движок его не применяет и пишет предупреждение |
* server и port должны присутствовать либо в разделе, либо в ссылающейся строке [Proxy]; в противном случае политика отклоняется как неполная.
Синтаксис peer из Surge
Раздел может описывать пира так, как это делает Surge:
[WireGuard wg0]
private-key = base64_private_key
self-ip = 10.0.0.2
mtu = 1280
peer = (public-key = base64_peer_public_key, endpoint = example.com:51820, preshared-key = base64_preshared_key, keepalive = 25, client-id = 1/2/3, allowed-ips = "0.0.0.0/0, ::/0")
public-keyстановитсяpeer-public-key,endpoint(host:portили[v6]:port) —serverиport,client-id = a/b/c—reserved, аpreshared-keyиkeepaliveсохраняют свои имена. Ключ, записанный прямо в разделе, имеет приоритет над тем же значением внутриpeer. Текущий движок разбираетreserved, но не применяет его.- Используется только один пир; второй сообщается как предупреждение и игнорируется.
allowed-ipsкомпилируется и применяется к TCP и UDP WireGuard: адрес вне CIDR-сетей пира отклоняется или отбрасывается, поскольку этот пир не может маршрутизировать его обратно. Ключи раздела Surgedns-serverиprefer-ipv6сохраняются без эффекта и попадают в уведомление о проигнорированных параметрах.- При сохранении конфигурации раздел записывается с перечисленными выше ключами вместо строки
peer = (…).
Использование
Ссылка на раздел из прокси-сервера:
[Proxy]
WG = wireguard, section-name=wg0
[Proxy Group]
WGGroup = select, WG
[Rule]
IP-CIDR,10.0.0.0/8,WGGroup
FINAL,DIRECT
Можно определить несколько разделов [WireGuard] для разных туннелей:
[WireGuard us]
private-key = ...
peer-public-key = ...
self-ip = 10.0.1.2
[WireGuard eu]
private-key = ...
peer-public-key = ...
self-ip = 10.0.2.2
Примечание: WireGuard работает через собственный UDP-туннель со стеком TCP/IP в пользовательском пространстве. Имена (например,
wg0) чувствительны к регистру.
Раздел AmneziaWG
Chute также поддерживает AmneziaWG — вариант WireGuard с обфускацией трафика. Раздел [AmneziaWG <name>] принимает те же ключи, что и раздел [WireGuard], плюс следующие параметры обфускации:
jc,jmin,jmax— количество мусорных пакетов и диапазон их размеров. Еслиjcбольше нуля, должны быть заданы иjmin, иjmax, причёмjmaxне может быть меньшеjmin, иначе туннель отклоняется.s1,s2,s3,s4— мусор, добавляемый в начало пакетов init/response/cookie/transport.s1–s3не могут превышать 64 байта (s4— 32), аs1 + 148должно отличаться отs2 + 92, иначе туннель отклоняется.h1,h2,h3,h4— пользовательские значения заголовка типа сообщения. Каждое — десятичное число или диапазонstart-endв пределах 32 бит, и оно должно быть больше 4, поскольку 1–4 — собственные типы сообщений WireGuard; четыре значения не должны пересекаться, иначе туннель отклоняется.i1,i2,i3,i4,i5— определения специальных мусорных пакетов. Определение, которое не удаётся разобрать, отклоняет туннель.
Отклонённое сочетание параметров записывается в журнал как WireGuard: AmneziaWG parameters rejected: <reason>, после чего туннель завершается ошибкой Failed to create BoringTun tunnel.
Политика ссылается на раздел через тип amneziawg (псевдоним awg):
[AmneziaWG awg0]
private-key = base64_private_key
peer-public-key = base64_peer_public_key
self-ip = 10.0.0.2
server = example.com
port = 51820
jc = 4
jmin = 40
jmax = 70
s1 = 15
s2 = 60
h1 = 123456
h2 = 67543
h3 = 32345
h4 = 123123
[Proxy]
AWG = amneziawg, section-name=awg0
Правила перекрестной проверки:
- Параметры AmneziaWG в обычном разделе
[WireGuard]— ошибка конфигурации; используйте вместо этого раздел[AmneziaWG]. reservedнельзя использовать в разделе[AmneziaWG]: он записывает те же байты заголовка, которые заменяетh4, поэтому такое сочетание отклоняется как ошибка.- Раздел
[AmneziaWG]без параметров обфускации получает предупреждение — он работает как обычный WireGuard.
Эта страница — перевод английской версии. При расхождениях приоритет имеет английская версия.