WireGuard — VPN-протокол и реализация защищённого сетевого туннеля. Он создаёт виртуальный интерфейс, шифрует IP-пакеты и передаёт их между узлами поверх UDP.

Модель узлов

Каждый участник имеет:

  • приватный ключ, который хранится только на узле;
  • публичный ключ, который передаётся другим участникам;
  • адрес виртуального интерфейса;
  • список AllowedIPs для каждого peer;
  • при необходимости внешний endpoint и keepalive.

WireGuard не использует логины, сертификаты или отдельный этап согласования алгоритмов. Идентичность peer определяется публичным ключом.

AllowedIPs

AllowedIPs выполняет две функции:

  1. определяет, какой трафик отправлять конкретному peer;
  2. ограничивает адреса источника, которые разрешено принимать от этого peer.

Пример клиентского peer:

[Peer]
PublicKey = SERVER_PUBLIC_KEY
Endpoint = vpn.example.com:51820
AllowedIPs = 10.10.0.0/24
PersistentKeepalive = 25

При AllowedIPs = 0.0.0.0/0, ::/0 весь IPv4- и IPv6-трафик направляется через туннель.

Передача данных

WireGuard использует UDP. После криптографического рукопожатия пакеты шифруются и инкапсулируются в UDP-датаграммы. Если endpoint peer изменился, WireGuard может запомнить новый адрес после успешного аутентифицированного пакета.

PersistentKeepalive полезен для peer за NAT: периодический пакет сохраняет запись трансляции и позволяет серверу отправлять трафик клиенту.

Маршрутизация

Создание туннеля не включает автоматически:

  • IP forwarding;
  • NAT для выхода клиентов в Интернет;
  • правила firewall;
  • DNS-настройку;
  • маршруты в удалённые локальные сети.

Эти элементы настраиваются отдельно в зависимости от сценария.

Диагностика

wg show
ip address show
ip route show
ss -lun

Проверяют время последнего handshake, объём переданных данных, endpoint, AllowedIPs, маршруты, UDP-порт, firewall и пересылку пакетов.

Если handshake отсутствует, проблема обычно связана с ключами, endpoint, портом или фильтрацией UDP. Если handshake есть, но трафик не проходит, проверяют маршрутизацию, AllowedIPs, NAT и firewall.

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