Перейти к основному контенту

Настройка WireGuard на Windows

1. Установка приложения.

Скачиваем WireGuard с официального сайта по ссылке: https://download.wireguard.com/windows-client/wireguard-installer.exe
Запускаем скаченный файл и дожидаемся окончания установки программы.

2. Добавление записи в реестр.

Запустить Powershell под администратором. Через Powershell добавляем параметр в реестр:

# Добавление в реестр
reg add HKLM\Software\WireGuard /v DangerousScriptExecution /t REG_DWORD /d 1 /f

3. Настройка программы

Открыть программу со значка в трее. Добавить туннель. Добавить пустой туннель.
Внести конфигурацию в окно программы.

Ключи в документации указаны в качестве примера.

[Interface]
# Закрытый ключ шифрования
PrivateKey = GPBBpLTNd5WjAyAp0lPmKnPYT8/frU8NXVwRwxoi4mo=
# Локальный адрес в туннеле
Address = 172.16.0.2/32
# Исполняемый скрипт после поднятия туннеля
PostUp = powershell -Command "New-NetRoute -DestinationPrefix 192.168.0.0/24 -InterfaceIndex (Get-NetAdapter -Name $Env:WIREGUARD_TUNNEL_NAME).ifIndex -NextHop 172.16.0.1"
# Исполняемый скрипт после закрытия туннеля
PreDown = powershell -Command "Remove-NetRoute -DestinationPrefix 192.168.0.0/24 -InterfaceIndex (Get-NetAdapter -Name $Env:WIREGUARD_TUNNEL_NAME).ifIndex -NextHop 172.16.0.1 -Force"
# Выключение основного шлюза
Table = off

[Peer]
# Открытый ключ шифрования сервера
PublicKey = HdQ5Fk1ttEOejobKKIpyQSLOZ8vxrAKS7MbIR76YrV8=
# Разрешенные адреса с удаленной сети
AllowedIPs = 0.0.0.0/0
# Адрес и порт подключения к серверу
Endpoint = 1.2.3.4:13231
# Время для обмена пакетами поддержки.
PersistentKeepalive = 15

После внесения настроек, нажимаем "Подключится".

4. Пример с несколькими маршрутами.

[Interface]
PrivateKey = GPBBpLTNd5WjAyAp0lPmKnPYT8/frU8NXVwRwxoi4mo=
Address = 172.16.0.2/32
PostUp = powershell -Command "('10.0.0.0/8','172.16.0.0/12','192.168.0.0/16') | ForEach-Object { New-NetRoute -DestinationPrefix $_ -InterfaceIndex (Get-NetAdapter -Name $Env:WIREGUARD_TUNNEL_NAME).ifIndex -NextHop 172.16.3.1 }"
PreDown = powershell -Command "('10.0.0.0/8','172.16.0.0/12','192.168.0.0/16') | ForEach-Object { Remove-NetRoute -DestinationPrefix $_ -InterfaceIndex (Get-NetAdapter -Name $Env:WIREGUARD_TUNNEL_NAME).ifIndex -NextHop 172.16.3.1 -Force }"
Table = off

[Peer]
PublicKey = HdQ5Fk1ttEOejobKKIpyQSLOZ8vxrAKS7MbIR76YrV8=
AllowedIPs = 0.0.0.0/0
Endpoint = 1.2.3.4:13231
PersistentKeepalive = 15