07 мая 2020

Как я WireGuard в Windows 10 настраивал.


Сервер у меня успешно завёлся и работает. Теперь надо разобраться с клиентами. Прежде всего я захотел наладить работу туннеля в Windows так, чтобы он сам при загрузке поднимался и показывал своё присутствие только наличием сетевого адаптера и службы. Никаких окон и никаких иконок в области уведомлений.

Я скачал и поставил официальный клиент со страницы загрузки. При установке в систему добавился новый драйвер, а в недрах "Program files\WireGuard" появился огромный файл "wireguard.exe", который тут отвечает вообще за всё. Он рисует пользовательский интерфейс, он же работает службой. Похоже, что и драйверы на сетевой адаптер он тоже из себя извергает, потому что внутри msi-пакета никакого намёка на файлы драйвера я не нашёл.

Сначала я пошёл путём, который для настройки проложили разработчики, т.е. задал все необходимые настройки туннеля через графический интерфейс. Туннель поднимался, трафик циркулировал, но каждый раз запускать всё руками мне не очень удобно. Я начал искать способ установки службы, которая всё будет делать в фоне при включении. Оказалось, что служба в системе уже есть и даже работает. Я обрадовался, закрыл графическое приложение, но вместе с ним из системы пропала и обе службы (управление и сам туннель). Так дела не делаются, если служба есть, то её кто-то ставит. Погуглив ещё, я нашёл команду для установки службы вручную. А потом узнал, что по команде "wireguard.exe /?" выводится справка по ключам в виде окошка:
Usage: C:\Program Files\WireGuard\wireguard.exe [
    (no argument): elevate and install manager service
    /installmanagerservice
    /installtunnelservice CONFIG_PATH
    /uninstallmanagerservice
    /uninstalltunnelservice TUNNEL_NAME
    /managerservice
    /tunnelservice CONFIG_PATH
    /ui CMD_READ_HANDLE CMD_WRITE_HANDLE CMD_EVENT_HANDLE LOG_MAPPING_HANDLE
    /dumplog OUTPUT_PATH
]
Отсюда нам нужен ключ "/installtunnelservice"

Конфигурационные файлы хранятся в системном профиле в зашифрованном виде по пути "C:\Windows\Sysnative\config\systemprofile\AppData\Local\WireGuard\Configurations\", поэтому писать конфигурацию придётся заново. Теоретически можно взять и готовые файлы, но тогда редактировать их будет довольно сложно.

Конфигурационный файл имеет точно такой же формат, что файл для wg-quick. Описывать его здесь второй раз я не буду.

Готовый файл или файлы, если туннелей несколько можно сложить в каталог "C:\WireGuard", например. Теперь необходимо установить службы командой:
C:\Program Files\WireGuard\wireguard.exe /installtunnelservice C:\WireGuard\wg0.conf
В списке должна появиться запись с именем "WireGuardTunnel$wg0" и отображаемым именем "WireGuard Tunnel: wg0", которая тут же запустится.

-->