Клиент 1.1.1
Возможности WireGuard в протоколе и в клиенте Windows.
Cryptokey Routing встречают первой: открытый ключ и список AllowedIPs. Рукопожатие использует Noise_IKpsk2_25519_ChaChaPoly_BLAKE2s, с Curve25519, ChaCha20-Poly1305 и BLAKE2s. Сборка Windows для этой страницы имеет версию 1.1.1 от 20 сентября 2026.
Обновлено .
Криптография состоит из одной конструкции
Страница протокола задаёт фиксированный набор. Меню шифров нет. Необязательный предварительный общий ключ добавляет ещё один симметричный секрет. Если этого ключа нет, конструкция использует 32 нулевых байта. Рукопожатие рассчитано на совершенную прямую секретность, скрытие личности и защиту от повтора, и оно не выделяет состояние сессии для пакета, который не прошёл проверку mac1.
| Примитив | Роль |
|---|---|
| ChaCha20-Poly1305 | Шифрование с проверкой подлинности для пакетов, конструкция RFC 7539. |
| XChaCha20-Poly1305 | Используется там, где протоколу нужно случайное одноразовое число длиной 24 байта. |
| Curve25519 | ECDH. Открытые ключи являются точками Curve25519. |
| BLAKE2s | Хеш и хеш с ключом, RFC 7693. |
| SipHash24 | Ключи хеш-таблиц. |
| HKDF | Выработка ключей, RFC 5869. |
| Noise_IKpsk2 | Шаблон рукопожатия. Строка конструкции: Noise_IKpsk2_25519_ChaChaPoly_BLAKE2s. |
Технический документ указывает, что реализация для Linux занимает меньше 4000 строк, без криптографических примитивов, так что её может прочитать один человек. Более поздний публичный подсчёт дерева ядра дал чуть больше, когда включили заголовки файлов C. Linux 5.6, вышедший 29 марта 2020, включил туннель. Сторонняя проверка перед этим выпуском не нашла уязвимостей и добавила замечание о глубокой защите.
Cryptokey routing
У каждого интерфейса есть закрытый ключ и список узлов. У каждого узла есть открытый ключ и AllowedIPs. При отправке адрес назначения выбирает узел, пакет шифруется на этот открытый ключ, и UDP несёт его на Endpoint узла. При приёме пакет должен расшифроваться для известного узла, а внутренний адрес источника должен входить в AllowedIPs этого узла. Иначе пакет отбрасывается.
Поэтому правило межсетевого экрана часто может совпасть с условием «с этого адреса, на этом интерфейсе» и считать пакет уже проверенным. IPv4 и IPv6 могут использовать один узел. Обычный пример порта прослушивания: 51820. Ваш порт может быть другим.
Клиент Windows, WireGuardNT
Репозиторий Windows описывает этот клиент как официальный способ запускать WireGuard в Windows. Он использует WireGuardNT. Служба менеджера, WireGuardManager, владеет значком в трее. Каждый туннель является отдельной службой с именем WireGuardTunnel$ и именем конфига.
Импорт принимает файл .conf или .zip. Версия 1.1.1 отклоняет повторяющиеся имена в одном импорте. Менеджер следит за папкой конфигураций, шифрует новый файл в .conf.dpapi через CryptProtectData, ограничивает доступ учётной записью Local System и удаляет открытую копию. Экспорт из интерфейса снова записывает конфиги наружу.
Один узел с AllowedIPs 0.0.0.0/0 или ::/0 включает Block untunneled traffic (блокировать трафик вне туннеля). Маршруты /1 обходят это поведение межсетевого экрана. В редакторе для этого есть флажок. Шаги, если сеть замолкает
| Команда | Что делает |
|---|---|
| wireguard /installtunnelservice path.conf | Создаёт службу WireGuardTunnel$ и имя конфига. |
| wireguard /uninstalltunnelservice name | Удаляет эту службу туннеля. |
| wireguard /installmanagerservice | Устанавливает WireGuardManager для значка в трее. |
| wireguard /dumplog | Печатает общий кольцевой журнал. Добавьте /tail, чтобы следить за ним. |
| wireguard /update | Запускает обновление. Это можно сделать и из интерфейса. |
| wireguard /removedriver | Удаляет драйвер адаптера, когда адаптеров туннеля не осталось. |
PreUp, PostUp, PreDown и PostDown выполняются, только если задан ключ реестра администратора, который их разрешает. Для файла .conf.dpapi команда wg show требует Local System или администратора.
Где работает тот же туннель
| Система | Что устанавливать | Примечание |
|---|---|---|
| Windows 10, 11, Server 2016, 2019, 2022 и 2025 | MSI или установщик, который его загружает | Клиент 1.1.1. amd64 и x86 весят 3.3 MB. arm64 весит 2.9 MB. MIT. |
| Linux | Модуль ядра с версии 5.6 и wireguard-tools | В составе ядра с 29 марта 2020. Дистрибутивы пакуют утилиты. Условия GPL сборки ядра. |
| macOS | Клиент из App Store или wireguard-tools из Homebrew или MacPorts | Путь через утилиты даёт туннель в командной строке, это не MSI для Windows. |
| Android и iOS | Приложения магазинов. Для Android есть и прямой APK. | Телефоны могут импортировать QR-код. Клиент Windows вместо этого импортирует файл. |
| FreeBSD, OpenBSD | Пакет wireguard или wireguard-tools | Указаны на странице установки проекта вместе с другими системами. |
Файлы этого сайта являются MSI для Windows. Другие системы используют свои пакеты. Версия, размер и требования для Windows
Роуминг, PersistentKeepalive, контейнеры
Обе стороны отправляют пакеты на самый новый Endpoint, с которого пришёл подтверждённый пакет. Ноутбук может сменить сеть без нового конфига. Сервер узнаёт Endpoint клиента из первого успешного пакета, поэтому в конфиге сервера часто нет строки Endpoint для этого узла.
PersistentKeepalive по умолчанию равен 0. Ставьте 25, только если узел находится за NAT или межсетевым экраном с состоянием и должен принимать новые сессии после того, как трафик затих. Точная правка
В Linux интерфейс использует сетевое пространство имён, в котором он создан. Его можно перенести в пространство имён контейнера, чтобы единственный выход контейнера шёл через туннель.
[Interface]
PrivateKey = (stays on the machine that owns it)
Address = 10.10.10.2/32
[Peer]
PublicKey = gN65BkIKy1eCE9pP1wdc8ROUtkHLF2PfAqYdyYBz6EA=
AllowedIPs = 10.10.10.230/32
Endpoint = 192.95.5.69:51820
PersistentKeepalive = 25
Опубликованные примеры адресов и опубликованный пример открытого ключа. Не используйте этот ключ повторно. Не указывайте PersistentKeepalive, если он не нужен.