У WireGuard есть свойство, которое из достоинства превращается в проблему: он предельно узнаваем. Протокол не пытается притворяться чем-то другим, и его пакеты имеют строго определённую структуру.
AmneziaWG — форк WireGuard от команды Amnezia, который решает ровно одну задачу: сделать трафик неотличимым от произвольного потока данных, сохранив при этом скорость оригинала.
Почему WireGuard легко распознать
Каждый пакет WireGuard начинается с байта, обозначающего тип сообщения. Их всего четыре:
| Значение | Тип сообщения |
|---|---|
| 1 | инициация рукопожатия |
| 2 | ответ на рукопожатие |
| 3 | cookie-ответ |
| 4 | передача данных |
Дальше идут поля фиксированной длины. Пакет инициации рукопожатия всегда занимает ровно 148 байт, ответа — 92 байта.
Для системы анализа трафика этого более чем достаточно. Правило детектирования формулируется в одну строку: «UDP-пакет длиной 148 байт, первый байт равен 1, следующие три — нули». Ложных срабатываний почти нет, вычислительная стоимость проверки минимальна. Ровно так WireGuard и определяют.
Дополнительно поток выдаёт себя поведением: обмен строго определёнными пакетами в начале сессии, keepalive-пакеты фиксированного размера через равные промежутки времени.
Что меняет AmneziaWG
Протокол добавляет несколько независимых механизмов маскировки. Каждый настраивается параметром в конфигурации.
Мусорные пакеты перед рукопожатием (Jc, Jmin, Jmax). Перед началом обмена клиент отправляет несколько пакетов случайной длины со случайным содержимым. Параметр Jc задаёт их количество, Jmin и Jmax — границы размера. Анализатор видит не «сразу рукопожатие WireGuard», а невнятный поток данных.
Изменение размеров служебных пакетов (S1, S2). К пакетам инициации и ответа добавляется случайный заполнитель. Сигнатура «ровно 148 байт» перестаёт работать.
Подмена типов сообщений (H1–H4). Числа 1, 2, 3, 4 заменяются на произвольные 32-битные значения, согласованные между клиентом и сервером. Проверка «первый байт равен единице» не срабатывает.
Криптография при этом не трогается вовсе. Curve25519, ChaCha20, Poly1305, BLAKE2s — всё как в оригинале. Меняется только внешний вид пакетов на проводе, поэтому уровень защиты данных остаётся прежним.
Цена вопроса
Обфускация обычно означает потерю скорости — обёртка в TLS или HTTP добавляет накладные расходы на каждый пакет. У AmneziaWG расходы иные по природе.
Мусорные пакеты отправляются один раз при установке соединения, а не постоянно. Заполнители добавляются только к служебным пакетам рукопожатия. Пакеты с данными не меняются вообще — они проходят по тому же пути, что и в оригинальном WireGuard, с той же обработкой в ядре.
Практический итог: подключение занимает на десятки миллисекунд дольше, а пропускная способность после установки соединения остаётся на уровне обычного WireGuard. Это выгодно отличает AmneziaWG от схем вида «WireGuard внутри TLS внутри TCP», где страдает каждый переданный байт.
Ограничения, о которых стоит знать
Нужна поддержка с обеих сторон. Обычный клиент WireGuard к серверу AmneziaWG не подключится: параметры маскировки должны совпадать. Требуется либо клиент Amnezia, либо совместимая реализация.
Параметры должны различаться между установками. Если все серверы используют один и тот же набор значений Jc, H1–H4, этот набор сам становится сигнатурой. Уникальность конфигурации — часть защиты, поэтому серьёзные сервисы генерируют параметры индивидуально.
Это маскировка, а не анонимность. Провайдер не определит протокол, но увидит факт обмена данными с конкретным IP-адресом. Смешивать эти задачи не стоит — подробнее в статье о разнице между доступностью, приватностью и анонимностью.
Меньше зрелость. WireGuard прошёл множество независимых аудитов, AmneziaWG значительно моложе. Криптографическое ядро наследуется без изменений, что снижает риски, но код обвязки менее изучен.
AmneziaWG против других способов маскировки
| Подход | Накладные расходы | Устойчивость | Сложность настройки |
|---|---|---|---|
| AmneziaWG | минимальные | высокая | низкая |
| WireGuard в TLS-туннеле | заметные | средняя | средняя |
| VLESS + Reality | небольшие | очень высокая | высокая |
| Shadowsocks | небольшие | средняя | низкая |
| OpenVPN по TCP/443 | высокие | низкая | низкая |
AmneziaWG занимает удобную позицию: почти даром по производительности и без сложной серверной обвязки.
Когда его использовать
- Обычный WireGuard подключается, но соединение рвётся через несколько минут — типичный признак того, что поток распознали.
- Мобильный оператор режет VPN-трафик, тогда как домашний провайдер пропускает.
- Нужна скорость WireGuard там, где он в чистом виде не работает.
Если же WireGuard работает стабильно, переходить не нужно: маскировка не добавляет защиты данным, она лишь скрывает тип трафика.
Коротко
AmneziaWG — точечное решение единственной проблемы WireGuard. Криптография не изменилась, скорость передачи данных не изменилась, изменился только внешний вид пакетов. Для сетей, где VPN-трафик фильтруется, это самый дешёвый по производительности способ остаться на связи.