Почему простой маскировки больше недостаточно
Современные системы глубокого анализа трафика (DPI) научились распознавать не только стандартный WireGuard, но и многие обфусцированные протоколы. Провайдеры анализируют статистические паттерны, размеры пакетов и временные характеристики соединений. Простая замена заголовков, которую предлагала первая версия AmneziaWG, перестала быть эффективной — DPI запоминает фиксированные значения и блокирует трафик по сигнатуре.
AmneziaWG 2.0 — это ответ на эти вызовы. Вместо маскировки отдельных элементов протокол предлагает полную мимикрию: ваше VPN-соединение может выглядеть как обычный DNS-запрос, QUIC-соединение (HTTP/3) или SIP-звонок. Выбор протокола для имитации остаётся за пользователем.
Ключевые нововведения AmneziaWG 2.0
Версия 2.0 сохранила все возможности первой версии (мусорные пакеты Jc/Jmin/Jmax, padding handshake S1/S2, замена заголовков H1-H4) и добавила принципиально новые механизмы:
- Signature Packets (i1–i5): до пяти специальных пакетов, отправляемых перед каждым handshake. Они имитируют начало легитимного протокола — DPI видит, например, DNS-запрос, и пропускает трафик.
- Расширенный padding S3 и S4: S3 добавляет случайные байты к Cookie Reply (редкий пакет, но с фиксированным размером 64 байта), а S4 — к каждому транспортному data-пакету. Это делает размеры всех пакетов непредсказуемыми.
- Range-based заголовки H1–H4: вместо фиксированного числа теперь можно задать диапазон значений. Каждый пакет получает уникальный заголовок, что делает статистический анализ бесполезным.
Все эти механизмы работают вместе, создавая многоуровневую защиту от DPI.
Signature Packets: как работают i1–i5
Signature packets — это самое значительное нововведение. Перед каждым WireGuard handshake (который происходит раз в две минуты) клиент отправляет серверу до пяти специальных пакетов, которые выглядят как начало обычного DNS-запроса, QUIC-соединения или любого другого протокола.
Схема работы:
- Клиент → [Пакет, похожий на DNS] → Сервер
- Клиент → [Ещё данные DNS] → Сервер
- Клиент → [WireGuard Handshake с обфускацией] → Сервер
- DPI видит: «DNS трафик, всё нормально» → ПРОПУСК
Технические детали:
- Можно настроить до 5 signature packets (i1, i2, i3, i4, i5).
- Каждый пакет описывается в формате CPS (Custom Protocol Signature).
- Если i1 не настроен — signature packets не отправляются, обеспечивая обратную совместимость с версией 1.0.
- Пакеты отправляются перед каждым handshake, то есть примерно раз в 2 минуты.
Пример простой конфигурации для имитации DNS:
i1 = **Расширенный padding: S3 и S4
В версии 1.0 padding применялся только к handshake-пакетам (S1 и S2). Но handshake происходит редко, а основной объём трафика — это data-пакеты (загрузка сайтов, видео, файлы), которые оставались с предсказуемыми размерами.
S3 — Cookie Reply Padding Cookie Reply — это пакет, который сервер отправляет клиенту при высокой нагрузке (защита от DoS). Его стандартный размер — ровно 64 байта, что является отличным индикатором для DPI. S3 добавляет случайные байты к этому пакету.
- Когда работает: только когда сервер под нагрузкой.
- Пример: S3 = 32 — к 64 байтам добавится 32 случайных байта.
S4 — Transport Data Padding Самый важный новый параметр. S4 добавляет случайные байты к каждому зашифрованному транспортному пакету, несущему фактический интернет-трафик.
- Когда работает: постоянно, для всех data-пакетов.
- Компромисс: чем больше padding, тем выше маскировка, но ниже скорость.
Пример конфигурации:
S1 = 68
S2 = 149
S3 = 32
S4 = 16Range-based заголовки H1–H4
В WireGuard каждый пакет начинается с 4-байтового идентификатора типа (Type=1 — Handshake Initiation, Type=2 — Handshake Response, Type=3 — Cookie Reply, Type=4 — Transport Data). AmneziaWG 1.0 позволял заменить их на фиксированные значения через параметры H1–H4. Проблема: DPI запоминал эти значения и блокировал трафик.
Решение в версии 2.0 — диапазоны:
H1 = 471800590-471800690 # 101 возможный вариант
H4 = 1769581055-1869581055 # 100 миллионов вариантовКак это работает:
- При отправке: для каждого пакета случайно выбирается значение из указанного диапазона.
- При приёме: принимается любое значение из настроенного диапазона.
- Результат: каждый пакет имеет уникальный заголовок.
Важное ограничение: диапазоны H1, H2, H3 и H4 не должны пересекаться. Иначе невозможно будет понять, какой тип пакета пришёл.
Пример корректной настройки:
H1 = 471800590-471800690
H2 = 1246894907-1246895000
H3 = 923637689-923637690
H4 = 1769581055-1869581055Язык CPS: конструктор поддельных пакетов
CPS (Custom Protocol Signature) — это специальный формат для описания signature packets. Это «конструктор», который позволяет собрать пакет, неотличимый от легитимного трафика.
Доступные теги CPS:
**— вставляет точные байты (магические байты протокола).- `` — вставляет timestamp (4 байта Unix time).
- `` — N случайных байт.
- `` — N случайных букв/цифр [A-Za-z0-9].
- `` — N случайных цифр [0-9].
Пример сигнатуры QUIC:
i1 = **Разбор:
**— начало QUIC Initial packet (0xc7 — тип пакета, 0x00000001 — версия QUIC v1).- `` — 8 случайных символов для Connection ID (например, «aB3dEf9H»).
- `` — временная метка (разная для каждого handshake).
- `` — 50 случайных байт payload.
Результат: DPI видит начало QUIC-соединения и пропускает трафик.
Практическая настройка self-hosted сервера
Чтобы развернуть VPN с AmneziaWG 2.0 на собственном сервере, выполните следующие шаги:
- Обновите приложение AmneziaVPN до версии 4.8.12.9 или выше. Скачать можно с официальной страницы или зеркала.
- Откройте приложение и нажмите на название подключения.
- Нажмите на иконку шестерёнки справа от подключения к вашему серверу — отобразится список всех протоколов.
- Нажмите на иконку загрузки справа от протокола AmneziaWG, затем «Установить».
- После установки протокол станет доступным для выбора. По умолчанию устанавливается со случайным портом. Рекомендуется сменить порт на значение до 9999 (например, 585 или 1234), так как некоторые провайдеры блокируют UDP на высоких портах.
Важно:
- При установке AmneziaWG 2.0 потребуется сгенерировать новые гостевые конфигурации — старые ключи от версии 1.0 не подойдут.
- Если у вас уже установлен AmneziaWG 1.0, он будет отображаться как «AmneziaWG Legacy» и продолжит работать.
- Изменять параметры I1–I5 можно как на стороне сервера (для всех клиентов), так и на стороне клиента (для конкретного устройства).
Как самостоятельно найти сигнатуру протокола
Вы можете создать собственную сигнатуру для маскировки под любой UDP-протокол. Для этого понадобится Wireshark.
Пошаговая инструкция:
- Установите и запустите Wireshark.
- Выберите сетевой интерфейс, через который идёт ваш интернет-трафик.
- Нажмите «Start capturing packets».
- Введите в поле фильтра название нужного протокола (например,
quicилиdns). - Выберите пакет из списка (рекомендуется начальный или финальный пакет сессии).
- Кликните правой кнопкой мыши → Copy → …as Hex Stream.
Подготовка hex-строки для AmneziaVPN:
- Добавьте префикс
**. - Пример:
d10000000108c10f0131a077e7f01087...→**
Настройка в AmneziaVPN:
- Для сервера: откройте настройки сервера → AmneziaWG → настройки сервера → поле I1.
- Для клиента: откройте настройки подключения → AmneziaWG → настройки подключения → поле I1.
- Вставьте подготовленную строку и сохраните.
Ограничения и рекомендации
Несмотря на мощные возможности, AmneziaWG 2.0 имеет ряд ограничений:
- Совместимость: протокол поддерживается только в AmneziaVPN версии 4.8.12.9 и выше. Старые версии приложения не смогут подключиться к серверу с AWG 2.0.
- Производительность: использование padding (особенно S4) увеличивает объём передаваемых данных, что может снизить скорость соединения. Рекомендуется начинать с небольших значений (например, S4 = 16) и увеличивать при необходимости.
- Пересечение диапазонов H1–H4: обязательно проверяйте, что диапазоны не пересекаются, иначе сервер не сможет корректно определить тип пакета.
- Генерация новых ключей: при переходе с AWG 1.0 на 2.0 или при изменении серверных настроек (порт, протокол) необходимо заново создавать конфигурации для всех пользователей.
- Выбор порта: некоторые провайдеры блокируют UDP на высоких портах. Рекомендуется использовать порты до 9999.
Рекомендации по маскировке:
- Для регионов с жёсткой цензурой используйте комбинацию signature packets (i1–i5) и range-based заголовков.
- Экспериментируйте с разными протоколами для имитации: DNS, QUIC, SIP, STUN.
- Регулярно обновляйте приложение AmneziaVPN — разработчики постоянно улучшают протокол.
Вопросы и ответы
В чём разница между AmneziaWG 1.0 и 2.0?
AmneziaWG 1.0 позволял заменять заголовки пакетов на фиксированные значения и добавлять мусорные пакеты перед handshake. Версия 2.0 добавляет signature packets (i1–i5) для полной мимикрии под легитимные протоколы, range-based заголовки H1–H4 (каждый пакет получает уникальный идентификатор), а также padding S3 и S4 для всех типов пакетов, включая транспортные данные.
Можно ли обновить существующее подключение AWG 1.0 до 2.0?
Нет, потребуется сгенерировать новый файл конфигурации или ключ для подключения по протоколу AmneziaWG 2.0. Старые ключи от версии 1.0 не подойдут.
Какой протокол лучше всего имитировать для обхода DPI?
Выбор зависит от региона и провайдера. Наиболее популярные варианты: DNS (широко используется, редко блокируется), QUIC (HTTP/3, всё более распространён), SIP (голосовые звонки). Рекомендуется протестировать несколько вариантов и выбрать тот, который стабильно работает.
Влияет ли padding S4 на скорость соединения?
Да, S4 добавляет случайные байты к каждому data-пакету, увеличивая объём передаваемых данных. Чем больше значение S4, тем выше маскировка, но ниже скорость. Рекомендуется начинать с S4 = 16 и увеличивать при необходимости, контролируя производительность.
Что делать, если после установки AWG 2.0 подключение не работает?
Проверьте: 1) версию приложения (должна быть 4.8.12.9 или выше); 2) порт (смените на значение до 9999); 3) не пересекаются ли диапазоны H1–H4; 4) сгенерированы ли новые ключи. Также выполните полную диагностику через меню приложения.
Можно ли использовать AmneziaWG 2.0 на iOS?
На данный момент поддержка AWG 2.0 в приложении AmneziaVPN для iOS ограничена. Рекомендуется использовать self-hosted версию на десктопе или Android. Для iOS可以考虑 альтернативные протоколы, такие как OpenVPN или WireGuard с обфускацией.
Как часто нужно обновлять сигнатуры i1–i5?
Сигнатуры не требуют частого обновления, если они эффективно имитируют легитимный протокол. Однако при изменении методов DPI со стороны провайдера может потребоваться подобрать новую сигнатуру. Рекомендуется периодически проверять работоспособность и при необходимости менять протокол для имитации.