Народный

Протоколы

WireGuard

Современный UDP-протокол VPN с минималистичной криптографией, разработанный Джейсоном Доненфельдом. Стандарт де-факто для self-hosted VPN.

Определение

WireGuard — это VPN-протокол, работающий поверх UDP, спроектированный с приоритетом простоты, скорости и аудитопригодности. Первый стабильный релиз — 2018 год; включён в Linux mainline с ядра 5.6 (2020). Автор — Jason A. Donenfeld. Опубликовано под лицензией GPL-2.0; код всей реализации — менее 4000 строк (сравнение: OpenVPN — около 100 000 строк).

WireGuard работает по модели «каждый peer знает публичный ключ другого peer’а». Нет CA, нет рукопожатий уровня TLS, нет переговоров о cipher suite — всё статически определено в протоколе.

Криптография

WireGuard использует фиксированный набор примитивов без переговоров — это и сила, и ограничение. Стек:

  • Curve25519 — Diffie-Hellman для обмена ключами.
  • ChaCha20-Poly1305AEAD для шифрования и аутентификации payload.
  • BLAKE2s — хэш-функция.
  • SipHash24 — для индексов сессий.
  • HKDF — для деривации ключей.
  • Noise Protocol Framework (паттерн IK) — для structure of handshake.

Криптонабор нельзя поменять — если в нём найдётся уязвимость, апгрейд требует обновления и клиента, и сервера. С другой стороны — нет downgrade-атак, нет неудачных переговоров, нет cipher-агильности.

Handshake

Полный handshake WireGuard — 1 RTT и 2 UDP-пакета. Шаги:

  1. Initiator → Responder. Initiator шлёт ephemeral-публичный ключ + ephemeral-id + AEAD-encrypted timestamp. Сообщение типа 0x01, длина 148 байт.
  2. Responder → Initiator. Responder шлёт свой ephemeral-публичный ключ + подтверждение. Тип 0x02, длина 92 байта.

После этого начинается обмен пакетами с данными (тип 0x04). Через каждые 2 минуты или после 2³⁵ байт идёт rekey (refresh-handshake).

Кейп-alive — пакет 32 байта каждые 25 секунд для поддержания NAT-трансляции.

WireGuard и DPI

Главная проблема WireGuard в условиях агрессивного DPI — статическая wire-сигнатура. ТСПУ и аналогичные системы ловят:

  • Длину первого UDP-пакета (148 байт) с типом 0x01.
  • Характерные тайминги handshake.
  • 32-байтные keepalive каждые 25 секунд.

На середину 2026 в РФ-сетях классический WG нестабилен на мобильных операторах — handshake режется в первые секунды, либо туннель работает 2-3 минуты и обрывается. Решения:

  • AmneziaWG — форк WG с рандомизированными заголовками и junk-пакетами.
  • WireGuard через wstunnel / udp2raw — UDP в TCP/TLS, ломает UDP-сигнатуру, но проигрывает в скорости.
  • WireGuard внутри Shadowsocks UDP — двойная упаковка.

Для self-hosted сценариев в России WG в чистом виде в 2026 году подходит только для домашнего/корпоративного интернета без активного DPI; для мобильного — нужен AWG или другой обход.

Где используется

WireGuard — основа большинства коммерческих VPN и self-hosted решений 2026.

  • Коммерческие VPN: Mullvad, IVPN, NordVPN (NordLynx), Surfshark, Proton VPN (через offering).
  • Self-hosted: Tailscale, Headscale, Netbird, WireGuard-Easy.
  • Routers: OpenWrt, MikroTik RouterOS 7, AsusWRT.
  • Mobile: официальные приложения WireGuard для iOS/Android.

Tailscale и аналогичные mesh-сети используют WG как транспорт + свой control plane для key distribution.

Производительность

На современном CPU WireGuard насыщает гигабитный канал на одном ядре и опережает OpenVPN/IPsec в 2-3 раза по throughput. Сравнение (Intel Xeon E-2276G, 1 Gbps NIC):

  • WireGuard: 940 Mbps, ~12% CPU.
  • OpenVPN (UDP+AES-GCM-256): 380 Mbps, ~85% CPU.
  • IPsec / IKEv2: 670 Mbps, ~30% CPU.

Преимущество — kernel-режим в Linux и небольшой crypto stack. На VPS большинство overhead’а вообще скрывается за NIC offload.

Источники

  • WireGuard whitepaper — wireguard.com/papers/wireguard.pdf.
  • Linux Kernel WireGuard documentation — Documentation/networking/wireguard.rst.
  • RFC draft-wireguard (informational, 2020).

Связанные термины

  • AmneziaWG — форк WG для обхода DPI.
  • OpenVPN — главный «конкурент» в нише.
  • DPI — что ловит классический WG.
  • Kill Switch — обязательная обвязка для WG-клиентов.