Чем хорош WireGuard
WireGuard: это VPN-протокол с небольшим объёмом кода, современной криптографией и минимальными накладными расходами. Он работает поверх UDP, не держит лишних состояний и быстро восстанавливает соединение после смены сети, например при переходе с Wi-Fi на LTE. На Windows и Linux его реализация может работать на уровне ядра, поэтому шифрование почти не нагружает процессор. По скорости и задержке он заметно выигрывает у старых протоколов, и именно поэтому мы взяли его за основу.
Но у простоты есть обратная сторона. Протокол создавался для защиты содержимого, а не для скрытности. Он не пытается замаскироваться под что-то другое и не прячет сам факт своего использования. Пока сети не интересовались, какой именно VPN идёт по каналу, это никого не волновало. Сейчас волнует.
Как узнают чистый WireGuard
Соединение WireGuard начинается с рукопожатия: клиент отправляет пакет инициации, сервер отвечает пакетом ответа, и только потом идут данные. У этих служебных пакетов фиксированный размер и предсказуемая структура: первые байты содержат тип сообщения, за ними идут поля строго известной длины. Любая система анализа трафика может описать этот шаблон одним правилом: UDP-пакет такой-то длины, начинающийся с таких-то байтов.
Дальше всё просто. Когда оборудование на пути видит пакет, подходящий под шаблон, оно либо отбрасывает его, либо не пропускает ответ сервера. Клиент не получает подтверждения, повторяет попытку, и так до бесконечности. Со стороны пользователя это выглядит как «подключается» без конца. Содержимое при этом никто не расшифровывает: достаточно формы пакета. Смена порта или сервера не помогает, потому что шаблон рукопожатия остаётся прежним.
- Фиксированный размер пакетов инициации и ответа.
- Одинаковые первые байты с типом сообщения.
- Характерные интервалы повторных попыток рукопожатия.
- Служебные keepalive-пакеты одинаковой длины.
Что такое маскировка трафика
Маскировка трафика: это набор изменений поверх WireGuard, которые ломают узнаваемый шаблон, не трогая криптографию. Ключи, шифрование данных и проверка подлинности остаются прежними. Меняется только то, как пакеты выглядят снаружи. Такой протокол устроен по образцу WireGuard, но для систем анализа уже не подходит ни под одно готовое правило. Именно это мы называем протоколом XOLY: протокол класса WireGuard с маскировкой.
Приёмов несколько, и они работают вместе. Мусорные пакеты: перед рукопожатием клиент отправляет несколько пакетов случайной длины со случайным содержимым, поэтому первый «настоящий» пакет перестаёт быть первым. Изменённые заголовки: к пакетам рукопожатия и данных добавляется случайный довесок, а значения типа сообщения заменяются на другие, согласованные между клиентом и сервером. Сигнатурные пакеты: служебный обмен можно оформить так, чтобы снаружи он напоминал обычные протоколы, например DNS-запрос или QUIC, который используют браузеры.
- Мусорные пакеты: случайные данные перед рукопожатием сбивают шаблон «первый пакет такой-то длины».
- Случайный довесок к пакетам: фиксированный размер перестаёт быть фиксированным.
- Изменённые заголовки: тип сообщения уже не совпадает с эталонным.
- Сигнатурные пакеты: обмен внешне похож на DNS или QUIC, то есть на трафик, который есть в любой сети.
Почему не просто сменить протокол
Логичный вопрос: если WireGuard узнают, почему не взять протокол поверх TCP, который прячется в обычный HTTPS? Такие решения существуют, и у них есть место. Но за скрытность они платят скоростью: TCP внутри TCP при потере пакета запускает повторную отправку дважды, соединение разгоняется медленнее, а на мобильной сети с её потерями разница ощутима. Плюс лишний слой шифрования и больше нагрузки на процессор и батарею.
Маскированный WireGuard идёт другим путём: сохраняет UDP и скорость, но убирает узнаваемую форму пакетов. Для большинства повседневных задач это удачный баланс: видео, звонки, игры и работа получают низкую задержку, а системе анализа не за что зацепиться. Там, где UDP не проходит совсем, помогает не смена протокола, а точка входа внутри России, и приложение XOLY пробует её автоматически.
Что это даёт по скорости
Главный вопрос пользователей: не станет ли медленнее. Заметно нет, и вот почему. Маскировка работает в основном на этапе рукопожатия: мусорные и сигнатурные пакеты отправляются при подключении и затем при плановом обновлении ключей. Пакеты с данными получают лишь небольшой довесок, который не влияет на пропускную способность ощутимым образом. Шифрование остаётся тем же, что и в WireGuard, поэтому нагрузка на процессор не растёт.
На практике скорость через протокол XOLY упирается в ваш канал, а не в VPN. Отдельно скажем про российские точки входа: они пробрасывают UDP на уровне ядра, не расшифровывая трафик, то есть двойного шифрования нет. Трафик один раз шифруется на вашем устройстве и один раз расшифровывается на сервере в Риге или Алматы. Промежуточный узел в Москве только меняет адреса в заголовках и передаёт пакеты дальше.
Как это работает в приложении XOLY
В приложении для Windows вы ничего не настраиваете: параметры маскировки уже вшиты в конфиг и согласованы с сервером. Вы выбираете локацию, нажимаете кнопку, и приложение само перебирает порты 443, 4500, 51820 и 1194, а при сбое пробует вход через одну из четырёх точек в Москве. На телефоне и macOS бот @Xolyvpn_bot выдаёт готовый конфиг и QR-код для совместимого приложения, и параметры маскировки в них тоже уже есть.
Kill switch, автозапуск и автоподключение работают независимо от маскировки. Если соединение всё же оборвалось, трафик вне VPN блокируется, а приложение переподключается. Статистика в окне показывает скорость и пинг, так что эффект от выбора локации виден сразу. Обновления приложение ставит само: когда мы меняем параметры маскировки на серверах, вам не нужно ничего перенастраивать вручную, новый конфиг приедет с очередной версией.
Что маскировка не решает
Будем честны. Маскировка ломает сигнатуру протокола, но не отменяет правила сети. Если оператор включил режим белых списков и пропускает только перечень адресов по TCP, UDP-пакеты не пройдут, как бы они ни выглядели. Если конкретный адрес сервера внесён в список блокировки, маскировка его не оживит: поэтому у нас несколько серверов и точек входа. Мы не обещаем обход любых ограничений, но делаем так, чтобы в обычных условиях подключение занимало секунды.
Если у вас не подключается ни напрямую, ни через Москву, напишите в @Eaassy_support. Мы посмотрим, что происходит у вашего оператора, и подскажем, какой путь работает сейчас. А если проблема на нашей стороне и за три дня не решена, вернём деньги за неиспользованный период.
