AmneziaWG и обфускация WireGuard: как маскируется трафик и что эффективнее

Автор: Редактор блога HubHide VPN

Человек поднял WireGuard на арендованном сервере. Настроил, проверил, неделю радовался. Потом однажды утром туннель не поднялся — ни с телефона, ни с ноутбука, ни через другого оператора, при том что сервер живой и конфиг никто не трогал.

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

Всё верно, никто ничего не читал. Вернее, читать и не надо.

Почему чистый WireGuard видно с закрытыми глазами

Представьте, что вы смотрите на выходящих из здания через матовое стекло: лиц не разобрать, что человек несёт — тоже. Но если кто-то каждый раз выходит с одинаковым свёртком строго определённого размера и в одной и той же последовательности движений, вы его опознаете, ни разу не увидев лица. Вот ровно это и происходит с WireGuard, и, честно говоря, когда я впервые посмотрел на дамп его хендшейка, мне стало почти обидно за протокол — настолько он себя выдаёт. Первый пакет от клиента — фиксированной длины, ответ сервера — тоже фиксированной, но другой. А в начале пакета лежит поле типа сообщения с несколькими заранее известными значениями, и его даже искать не надо, оно само лезет в глаза.

Криптоанализ тут, впрочем, не нужен. Достаточно правила вида «UDP-пакет такой-то длины, с такими-то байтами в начале, идущий на адрес вне страны», которое пишется за полчаса и работает годами, потому что структура протокола не меняется — она часть спецификации.

Отсюда и ответ, почему блокируют WireGuard, хотя формально он ничем не провинился. Он просто слишком узнаваем. Это цена за компактность: авторы сознательно выкинули всё лишнее, а «лишним» оказалось в том числе разнообразие. Маскировка в протокол не заложена вообще, и пока сети были дружелюбными, это никого не волновало. Меня в том числе. Я лет пять считал, что ровный предсказуемый хендшейк — признак хорошей инженерии, и до сих пор так считаю. Просто теперь с оговоркой.

[Изображение: схема сравнения пакетов — чистый WireGuard и обфусцированный вариант]

Что делает AmneziaWG: шум, мусор и плавающие размеры

AmneziaWG к 2026 году — форк WireGuard от команды Amnezia. Криптография внутри та же самая, её не трогали вовсе, и это, на мой взгляд, единственное верное решение: лезть в проверенную криптографию ради маскировки — идея, от которой у меня холодеет спина. Изменили, скажем так, только внешность. Работает это по трём направлениям.

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

Раздувание пакетов хендшейка. К пакетам инициации и ответа добавляется случайный довесок. Фиксированной длины больше нет — а именно на неё опиралось самое живучее правило фильтрации.

Подмена заголовков. Те самые байты типа сообщения заменяются на произвольные значения, согласованные между клиентом и сервером. Сигнатура ломается.

Что в итоге? Простые сигнатурные правила перестают срабатывать. Обфускация трафика VPN работает тут как шум в эфире: сигнал никуда не делся, но выделить его прежним фильтром не выходит. Решение честное и аккуратное, и я не раз советовал его людям, у которых была именно эта ниша.

Ручки, которые можно крутить, и зачем их вообще крутить

Обфускация WireGuard параметрами настраивается, и это одновременно достоинство и головная боль. Набор такой: Jc — сколько мусорных пакетов отправить, Jmin и Jmax — границы их размера, S1 и S2 — насколько раздуть пакеты инициации и ответа, H1–H4 — чем заменить значения типов сообщений.

Ключевой момент, который, если честно, упускают почти все: эти значения должны совпадать на клиенте и на сервере. Полностью. Разошлись на единицу — соединение не поднимется, причём молча, без строчки в логе, без единого намёка на то, где искать. Я на этом потерял вечер, и потерял глупо: отредактировал серверный конфиг, клиентский поправил по памяти и ошибся в одной цифре. Львиная доля вопросов по настройке AmneziaWG сводится ровно к этому. Сверяйте конфиги побайтово, а не глазами.

Зачем их вообще менять, если и так работает? Затем, что набор параметров — тоже отпечаток. Поставит миллион человек одинаковые значения из популярного гайда — у миллиона будет одинаковый профиль трафика, и его рано или поздно опишут новым правилом: уже не для чистого WireGuard, а для «обфусцированного вот так». Отсюда следствие, которое мне в этой технологии нравится меньше всего. Обфускация требует сопровождения. Не «настроил и забыл», а «следи и меняй значения», и если у вас нет привычки возвращаться к своей инфраструктуре, эта схема вам однажды отомстит.

Обфускация и мимикрия — это не синонимы

Здесь ключевая мысль всей статьи. Оговорюсь: её стоит проговорить медленно.

Обфускация — это «сделать непохожим ни на что»: трафик превращается в бесформенный поток случайных байтов, фильтр смотрит на него и не может сказать, что это такое. Мимикрия — совсем другое: «сделать похожим на что-то конкретное и разрешённое». Палочник не становится невидимым — он становится веткой.

Разница вылезает при смене логики фильтрации, и вот тут начинается интересное. Пока система работает по принципу «запрещаем всё опознанное как VPN», обфускация спасает прекрасно: опознать нечего. Но стоит переключиться на «разрешаем только опознанное как разрешённое» — и бесформенный поток проигрывает первым же: он не попадает ни в один белый список и вылетает автоматически. Это не гипотеза и не страшилка. Так уже делают, когда сеть зажимают точечно, и я это наблюдал своими глазами — не в масштабах страны, но в масштабах региона вполне.

Reality идёт вторым путём: он не шумит, а делает TLS-рукопожатие, подставляя сертификат реального стороннего сайта — крупного, популярного, заведомо разрешённого. Пойдёт проверяющая система по тому же адресу — увидит работающий сайт.

AmneziaWG против VLESS + Reality: где кто сильнее

Сравниваю технологии, а не команды: обе сделаны людьми, которые понимают, что делают.

Критерий AmneziaWG VLESS + Reality Shadowsocks с плагином
Принцип маскировки Шум и случайные размеры Подмена под реальный сайт Шум или обёртка в TLS
Что видит наблюдатель Невнятный UDP-поток Обычное HTTPS-соединение Невнятный TCP-поток
Поведение в белых списках Плохое, не попадает в разрешённое Хорошее, выглядит как разрешённый трафик Плохое
Активная проверка сервера Порт не отвечает ничем осмысленным Отвечает настоящий сайт-прикрытие Зависит от плагина, чаще уязвим
Накладные расходы Есть, зависят от параметров Минимальные Небольшие
Скорость Чуть ниже чистого WireGuard Высокая Высокая
Сложность настройки Средняя, параметры надо синхронизировать Средняя, но обычно уже готова у провайдера Низкая
Что чинить, когда сломается Подбирать новые параметры Менять сайт-прикрытие или узел Менять плагин

Вывод, если коротко, не в пользу шума: мимикрия под настоящий HTTPS сейчас устойчивее, чем добавление случайности. Не потому что обфускация плоха — она оставляет зацепку, сам факт непонятного трафика, и этой зацепки достаточно.

Хотя у AmneziaWG есть козырь, которого у Reality нет. Это по-прежнему WireGuard, а значит, при нём остаются его скорость, бесшовный роуминг и нетребовательность к батарее. Если ситуация позволяет — сочетание отличное, и я бы сам таким пользовался.

Совместимость: клиенты, роутеры, кто это вообще поддерживает

Расклад такой: экосистема, к слову, заметно у́же, чем у обычного WireGuard.

Клиенты Amnezia под основные платформы есть и работают, часть универсальных приложений протокол тоже подхватила. Но «часть» и «все» — разные вещи. Обычный WireGuard заведётся почти на любой железке, включая бытовые роутеры. С AmneziaWG так не выйдет: либо кастомная прошивка, либо ручная сборка модуля, либо ничего. Я однажды убил выходные, пытаясь завести его на домашнем роутере, и сдался. Кстати, о железках. Обе стороны должны говорить на одном языке: сервер с AmneziaWG не примет обычный клиент WireGuard. Это не баг, а прямое следствие подмены заголовков.

За что платим: накладные расходы и просевшая скорость

Обфускация не бесплатна. Об этом, я заметил, редко пишут, а стоило бы.

[Изображение: диаграмма накладных расходов при разной агрессивности обфускации]

Мусорные пакеты — это реальные байты, уходящие в сеть, и раздутые пакеты хендшейка тоже реальные; поставите агрессивные настройки — на одно подключение уйдёт заметно больше трафика, чем нужно по делу. Для домашнего проводного интернета это ерунда. Для мобильного с лимитом по гигабайтам — уже не ерунда, особенно если туннель пересоединяется часто. Телефон переключается между вышками, вы заходите в лифт, сеть моргает, и всё начинается заново. Плюс задержка на установку соединения. Доли секунды, конечно, но при десятке переподключений за день они складываются во что-то ощутимое.

Когда обфускация не нужна вовсе

Раздел, который кому-то сэкономит вечер. Мне в своё время такого никто не написал.

Если всё и так работает — не трогайте. Обычный WireGuard поднимается и не рвётся? Значит, ваш провайдер либо не фильтрует, либо фильтрует лениво, и обфускация тут даст минус к скорости, плюс к расходу трафика и новый источник проблем, а взамен ничего. Не нужна она и внутри корпоративной сети: туннель между офисом и складом никто не блокирует, а городить маскировку в корпоративном контуре значит усложнять то, что должно быть скучным и предсказуемым. На Wi-Fi в кафе она тоже лишняя: там угроза — сосед по сети, а не государственный фильтр, и от соседа отлично защищает обычное шифрование.

И наоборот, обфускация для обхода блокировок в России становится осмысленной ровно тогда, когда простые варианты уже не поднимаются. Проверить несложно: подключитесь и прогоните проверку соединения. Адрес меняется, утечек нет, скорость приемлемая — значит, усложнять не надо.

Что из этого следует на практике

Чистый WireGuard опознаётся по форме пакетов, а не по содержимому.

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

И общее правило, которое я повторяю всем и сам себе тоже: не стройте оборону вокруг одного протокола. Сегодня работает одно, через полгода — другое.

Разбираться в параметрах обфускации, синхронизировать значения между клиентом и сервером и подбирать их заново после каждого шевеления фильтров — занятие на любителя, и я вполне понимаю людей, которым оно в радость. Если вы не из них, возьмите готовый VLESS с Reality: 14 дней теста без карты, всё настроено, переключение узлов — прямо из приложения. Клиенты — в разделе загрузок, а если что-то не поднимается, поддержка разбирается с конкретным оператором, а не отвечает шаблоном.

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

Что такое AmneziaWG?

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

Чем обфускация отличается от Reality?

Обфускация делает трафик непохожим ни на что — бесформенный поток без признаков. Reality делает его похожим на конкретную вещь: обычное HTTPS-соединение с реальным популярным сайтом, включая настоящий сертификат этого сайта. Первый подход спасает от правил «блокируем опознанное», второй вдобавок переживает белые списки и активную проверку сервера.

Замедляет ли обфускация интернет?

Скорость закачки после установки соединения — почти нет, основной оверхед приходится на начало сессии. Зато растёт объём служебного трафика и время подключения, и при агрессивных настройках это заметно на мобильном интернете с лимитом. Чем чаще туннель пересоединяется, тем дороже обходится маскировка.

Нужна ли обфускация всем?

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

Вам будет интересно