К содержанию
Малиновый диск с эмблемой дракона WireGuard

WireGuard

Быстрый, современный, безопасный VPN-туннель

Клиент 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 байта.
Curve25519ECDH. Открытые ключи являются точками 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. Ваш порт может быть другим.

Импортировать конфиг, в котором эти поля уже есть

WireGuard
Вкладка Tunnels с туннелем Active, кнопка Deactivate и счётчик передачи. Откройте изображение, чтобы рассмотреть его.

Клиент 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
Add Tunnel, Edit и Deactivate на туннеле Active. Откройте изображение, чтобы рассмотреть его.
Команды, описанные для администраторов
КомандаЧто делает
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 и 2025MSI или установщик, который его загружаетКлиент 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, если он не нужен.

Скачать 1.1.1 WireGuard illustration