Человек поднял 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-соединение с реальным популярным сайтом, включая настоящий сертификат этого сайта. Первый подход спасает от правил «блокируем опознанное», второй вдобавок переживает белые списки и активную проверку сервера.
Замедляет ли обфускация интернет?
Скорость закачки после установки соединения — почти нет, основной оверхед приходится на начало сессии. Зато растёт объём служебного трафика и время подключения, и при агрессивных настройках это заметно на мобильном интернете с лимитом. Чем чаще туннель пересоединяется, тем дороже обходится маскировка.
Нужна ли обфускация всем?
Нет, и я бы даже сказал — большинству не нужна. Если обычный туннель поднимается и держится, она только добавит расходов и поводов для поломки. Смысл в ней появляется там, где простые протоколы уже не проходят фильтр. Проверить это быстрее, чем обсуждать: подключитесь и посмотрите, работает ли, а на мобильном интернете — ещё и не рвётся ли соединение при переходе между вышками.