Максимальная скорость

Протокол WireGuard

WireGuard — самый быстрый из массовых протоколов туннелирования: около четырёх тысяч строк кода, работа внутри ядра системы и единственный набор шифров без переговоров при подключении.

Обновлено

Протокол WireGuard

Профиль по четырём осям

Скорость96
Незаметность42
Стабильность88
Простота настройки84

Оценки сравнительные, в пределах этой таблицы: 100 — лучший показатель среди рассмотренных протоколов, а не абсолютная величина.

Когда выбиратьБерите WireGuard там, где сеть спокойная и нужна максимальная скорость: домашний интернет, роутер, передача больших объёмов.

Ключевые характеристики

Год появления2016, в ядре Linux с версии 5.6 (2020)
ТранспортТолько UDP
ШифрованиеChaCha20-Poly1305, обмен ключами Curve25519
ХешированиеBLAKE2s, HKDF для выработки сеансовых ключей
Объём кодаОколо 4000 строк против сотен тысяч у OpenVPN
РукопожатиеПолтора круга сообщений, обычно менее 100 мс
Смена ключейАвтоматическая каждые 2 минуты активной сессии

Сильные стороны

  • Наивысшая пропускная способность в классе: на гигабитном канале 780–900 Мбит/с против 350–500 у OpenVPN.
  • Компактная кодовая база, которую реально прочитать целиком, и независимый аудит за плечами.
  • Мгновенное восстановление после смены сети — важно на телефоне и в дороге.
  • Минимальный расход батареи: нет постоянного служебного обмена, при отсутствии трафика туннель молчит.
  • Встроен в ядро Linux и поддерживается практически всеми роутерными прошивками.

Ограничения

  • Фиксированная и хорошо описанная структура пакета: первый байт типа сообщения и постоянные длины рукопожатия узнаются простым правилом.
  • Только UDP, а UDP первым попадает под ограничение полосы на загруженной или строго настроенной сети.
  • Адрес узла и назначенный адрес внутри туннеля хранятся в конфигурации в открытом виде.
  • Никакой встроенной маскировки: протокол честно решает свою задачу и не притворяется чем-то другим.
Схема работы протокола WireGuard
Как проходит соединение: от клиента до целевого сервиса
Устройство

Что отличает WireGuard

Работа внутри ядра

Пакет не копируется в пользовательское пространство и обратно. Это убирает два переключения контекста на каждый пакет и даёт основной прирост скорости относительно OpenVPN.

Криптомаршрутизация

Каждому публичному ключу сопоставлен список разрешённых адресов. Пакет с чужого ключа отбрасывается молча, отдельных списков доступа и правил аутентификации не нужно.

Роуминг без разрыва

Сервер узнаёт клиента по ключу, а не по адресу. Переход с Wi-Fi на мобильную сеть не рвёт туннель: следующий же пакет с нового адреса продолжает ту же сессию.

Без согласования шифров

Набор криптопримитивов зафиксирован в спецификации. Договариваться не о чем, значит нельзя и продавить соединение на слабый шифр — целый класс атак отпадает.

Четыре тысячи строк и почему это важно

Кодовая база OpenVPN вместе с OpenSSL — это сотни тысяч строк. Аудит такого объёма занимает месяцы и стоит десятки тысяч долларов, а результат устаревает с каждым релизом. WireGuard умещается примерно в четыре тысячи строк, и это осознанное проектное ограничение, а не случайность.

Малый объём достигнут отказом от гибкости. В протоколе нет выбора шифров, нет поддержки сертификатов, нет режимов совместимости со старым оборудованием, нет собственной системы управления пользователями. Всё, что можно было вынести наружу, вынесено наружу.

Практическое следствие для пользователя: меньше кода — меньше поверхности для ошибок и быстрее реакция на найденные проблемы. Обратная сторона — задачи вроде выдачи и отзыва ключей приходится решать внешними средствами, сам протокол об этом ничего не знает.

Криптомаршрутизация вместо списков доступа

В классических решениях аутентификация и маршрутизация разнесены: сначала пользователь доказывает, кто он, потом отдельная подсистема решает, куда его пускать. WireGuard объединяет эти шаги. Каждому публичному ключу сопоставлен список адресов, и это одновременно правило доступа и правило маршрута.

Работает это в обе стороны. Исходящий пакет уходит тому узлу, чей список покрывает адрес назначения. Входящий пакет проверяется наоборот: если расшифрованный пакет пришёл с адреса, которого нет в списке для этого ключа, он отбрасывается без ответа.

Побочный эффект — протокол не отвечает на пакеты, которые не проходят криптографическую проверку. Для стороннего сканера порт выглядит закрытым: обращение просто уходит в пустоту. Это не маскировка, но заметно снижает интерес автоматических сканеров.

Роуминг: смена сети без разрыва

Сервер идентифицирует собеседника не по IP-адресу, а по публичному ключу в пакете. Когда телефон уходит из домашнего Wi-Fi в сотовую сеть и получает другой внешний адрес, сервер видит знакомый ключ с нового адреса и просто обновляет запись.

Разрыва сессии при этом не происходит: TCP-соединения внутри туннеля продолжают жить, потому что внутренний адрес не менялся. Загрузка файла или видеозвонок переживают переход, теряя лишь несколько пакетов на время смены сети.

Для узла за NAT предусмотрен служебный обмен раз в 25 секунд — он удерживает запись в таблице трансляции провайдера. По умолчанию он выключен, потому что нужен не всем и добавляет 32 байта в каждые полминуты плюс небольшой расход батареи.

Где WireGuard не подходит

Главная слабость — узнаваемость. Первый байт каждого пакета несёт тип сообщения из четырёх возможных значений, рукопожатие состоит из сообщений фиксированной длины 148 и 92 байта. Правило, отличающее такой поток от прочего UDP, пишется в одну строку и не требует расшифровки.

Вторая слабость следует из выбора транспорта. UDP не имеет встроенного контроля перегрузки на уровне протокола, поэтому при нехватке полосы оборудование ограничивает именно его в первую очередь. На перегруженной сети туннель может держаться, но отдавать вчетверо меньше ожидаемого.

Третье — приватность конфигурации. Файл настроек содержит адрес сервера, порт, приватный ключ клиента и назначенный ему внутренний адрес открытым текстом. Утечка такого файла означает не только компрометацию ключа, но и раскрытие всей топологии.

Вопросы

Частые вопросы

WireGuard быстрее OpenVPN и насколько?
Да, и разрыв большой. На одинаковом гигабитном канале WireGuard выдаёт 780–900 Мбит/с, OpenVPN в режиме UDP — 350–500 Мбит/с. Причина в работе внутри ядра: пакет не путешествует между пространством ядра и пользовательским процессом.
Почему WireGuard не использует TCP?
Сознательное решение авторов. Туннелирование TCP внутри TCP приводит к наложению двух механизмов повторной передачи: при потере пакета оба слоя начинают восстанавливать одно и то же, и скорость обваливается. Проблему называют TCP meltdown.
Можно ли скрыть, что используется именно WireGuard?
Не средствами самого протокола: маскировки в нём нет по замыслу. Задачу решают внешние обёртки, но это уже отдельный слой со своими накладными расходами. Если незаметность важнее скорости, разумнее взять транспорт, спроектированный под неё.
Что означает смена ключей каждые две минуты?
Сеансовые ключи обновляются автоматически по времени и по объёму переданного. Даже если ключ когда-нибудь будет раскрыт, он позволит прочитать лишь короткий отрезок сессии. Пользователь этого не замечает: обмен проходит фоново.
Подходит ли WireGuard для роутера?
Да, это едва ли не лучший вариант для домашнего роутера. Реализация есть в OpenWrt, Keenetic, MikroTik и большинстве современных прошивок, а низкая нагрузка на процессор важна для устройств со слабым железом.
Все протоколы в одном клиенте

WireGuard включён во все платные тарифы

Транспорт выбирается в настройках клиента одним пунктом, доплаты за него нет. Если WireGuard в вашей сети перестал подниматься, соседний протокол обычно работает — переключение занимает секунды и не требует переустановки.

Подписка оформляется в Telegram-канале сервиса · Безлимитный трафик · Поддержка круглосуточно