Блокировки прошли путь от простых списков запрещённых сайтов до оборудования, которое анализирует форму каждого соединения в реальном времени. Понимание этой эволюции объясняет главное: почему решения, работавшие пять лет назад, сегодня бесполезны, и почему сервис, живущий сейчас, устроен совсем иначе.
Изначально всё было устроено предельно просто. Существовал реестр запрещённых ресурсов, куда вносились домены и адреса, а операторы связи были обязаны закрывать к ним доступ.
Механизм работал с конкретными ресурсами и ничего не знал о протоколах. Заблокировать сайт он мог, а вот распознать, что через соединение идёт VPN-трафик, — нет.
Именно поэтому на том этапе VPN был универсальным решением: любой сервис на любом протоколе обходил такую фильтрацию, потому что она смотрела не на то. Достаточно было выйти в интернет через сервер за пределами страны, и списки переставали иметь значение.
Отголоски этого этапа сохранились до сих пор. Сайты VPN-сервисов попадают в реестр, и они перестают открываться. Но это касается только сайта: сам туннель, поднятый на другом адресе, продолжает работать. Мы столкнулись с этим летом, когда наш основной домен без приставки www оказался недоступен — перевели все ссылки на www-вариант и подняли второй домен, на работу серверов это не повлияло никак.
VLESS + WebSocket + TLS на 443 с настоящими доменами и валидными сертификатами, пять локаций, замена адреса за час при блокировке. Пробный период без карты.
Наш второй сервис на той же инфраструктуре: тот же транспорт и те же локации, отдельный клиент для Windows.
Протоколы распознаются, адреса в списках годами, российских локаций нет.
Бесплатные адреса перегружены и давно известны, длинные сессии рвутся.
Тысячи людей на одном адресе — такой адрес находят первым, а сайты требуют подтверждений.
Переломный момент наступил, когда на узлах операторов связи появилось специальное оборудование — технические средства противодействия угрозам, сокращённо ТСПУ.
Принципиальное отличие от реестра: оно не сверяется со списком, а смотрит на сам трафик. Не на его содержимое — оно зашифровано — а на форму: адреса, порты, размеры пакетов, последовательность и структуру рукопожатия.
Это изменило правила игры. Раньше вопрос стоял «есть ли этот адрес в списке», теперь — «похоже ли это соединение на VPN». И вот тут выяснилось, что большинство протоколов отвечают на второй вопрос утвердительно.
Оборудование стоит на конкретных узлах, каждый из которых обслуживает десятки и сотни тысяч абонентов. Настройки разных узлов различаются, обновляются в разное время, по-разному ведут себя под нагрузкой. Отсюда явление, которое многих сбивает с толку: у двух человек в одном городе, на одном тарифе результат разный. Они просто проходят через разное оборудование.
У каждого протокола есть узнаваемый почерк, и это не уязвимость, а следствие открытости спецификаций.
OpenVPN создавался в начале двухтысячных, когда задача спрятать сам факт VPN не стояла. Его рукопожатие имеет характерную структуру, распознаваемую по первым пакетам.
WireGuard ценят за скорость и компактность, но компактность означает предсказуемость: первый пакет рукопожатия имеет фиксированную длину. Этого достаточно для распознавания без всякого анализа содержимого. Вдобавок он работает поверх UDP, а мобильные сети относятся к UDP хуже — потери там выше, и восстановления нет.
Встроенные в операционные системы решения используют фиксированные порты. Их даже анализировать не нужно — достаточно закрыть порт.
В результате сложилась ситуация, знакомая всем: известный международный сервис за большие деньги перестаёт работать, а небольшой продолжает. Дело не в размере компании, а в том, какой транспорт она использует.
Ответом стала смена философии. Прежний подход — маскировать VPN, шифровать сильнее, менять порты — проигрышный в долгую: любой новый способ маскировки со временем получает собственный отпечаток.
Новый подход состоит в том, чтобы соединение было настоящим веб-трафиком, а не притворялось им.
Работает это так. Клиент подключается к 443-му порту — тому самому, на котором работают все защищённые сайты в интернете. Устанавливается обычное TLS-соединение с настоящим доменом и валидным сертификатом от публичного центра сертификации. Затем внутри этого соединения происходит переход на WebSocket — стандартную веб-технологию, которую используют мессенджеры, биржевые терминалы и онлайн-игры.
Со стороны наблюдателя картина совершенно обычная: обращение к сайту по стандартному порту, валидный сертификат, WebSocket-соединение. Ничего, что отличало бы это от посещения любого современного сайта.
Именно такой транспорт мы используем — VLESS поверх WebSocket и TLS. Не потому, что это модно, а потому что за годы наблюдений именно он переживает остальные.
Пассивного наблюдения бывает недостаточно, и тогда система действует активно: сама подключается к подозрительному адресу и смотрит, как он себя поведёт.
Логика простая. Настоящий веб-сервер ответит на обычный запрос осмысленной страницей. Замаскированный VPN либо промолчит, либо ответит ошибкой, либо поведёт себя не так, как повёл бы себя сайт.
Поэтому на наших серверах по адресу действительно работает веб-сервер с валидным сертификатом. Он ответит на обычный запрос как обычный сайт, потому что он и есть обычный сайт. Туннель живёт на отдельном пути внутри того же соединения и снаружи никак не проявляется.
Это принципиальный момент. Разница между «VPN, притворяющийся сайтом» и «сайт, внутри которого есть туннель» невелика на словах и огромна на практике.
Пробный день по email без карты. 6 локаций, умный маршрут, скорость до 1 Гбит/с.
Теперь главное, о чём в рекламе VPN обычно не пишут. Самый действенный метод блокировки не требует ни анализа протоколов, ни активных проб. Адрес сервера просто перестают пускать.
Против этого не спасает никакая маскировка. Можно сколько угодно быть неотличимым от обычного сайта — если до адреса не доходят пакеты, значения это не имеет.
За август мы потеряли четыре адреса. Немецкий сервер перестал принимать российский трафик в начале месяца при полностью исправном оборудовании. Купленный на замену польский оказался заблокирован ещё до настройки — адрес достался нам уже непригодным. А девятнадцатого августа в шесть вечера разом отвалились нидерландский и шведский.
Последний случай виден по счётчикам буквально по часам. На нидерландском сервере: в 17:00 — 15 754 подключения, в 18:00 — 71, в 19:00 — 25. На шведском: 3 339, потом 3, потом 7. При этом бельгийский, американский и эстонский работали без единого сбоя и даже приняли часть нагрузки.
Различие важно, потому что действия в двух случаях противоположные. Метод доступен любому.
Заблокированный адрес ведёт себя характерно: пинг может проходить, а попытка установить соединение зависает и обрывается по таймауту через пять-восемь секунд. Пакеты уходят и не возвращаются.
Закрытый порт на живом сервере отвечает отказом мгновенно — за то же время, что и пинг. Сервер получил пакет и честно сообщил, что здесь никого нет.
Сломанный сервер не отвечает вообще ни на что, включая пинг.
Есть и важная тонкость: проверять нужно из той сети, где находится пользователь. Наши серверы прекрасно доступны друг для друга, потому что находятся за пределами России. Чтобы увидеть картину глазами человека из Москвы, мы поднимаем соединение через собственную российскую локацию и стучимся во все адреса уже изнутри.
Не привязывайтесь к стране. Фильтруются отдельные адреса, а не география. Наш немецкий сервер был заблокирован, а тестовый узел того же хостера в соседнем диапазоне отвечал нормально.
Держите несколько локаций. Сервис с одной страной однажды перестанет работать целиком. У нас их пять именно поэтому — и в августе это спасало нас четырежды.
Обновляйте подписку в приложении. Состав серверов меняется, и профиль, не обновлявшийся месяцами, может состоять из адресов, которых уже не существует.
Смотрите на транспорт, а не на известность бренда. Устаревший протокол у крупной компании перестанет работать раньше, чем современный у небольшой.
Прогнозы в этой области дело неблагодарное, но некоторые вещи предсказуемы из самой механики.
Блокировки по адресам продолжатся и, вероятно, ускорятся — это самый дешёвый и надёжный метод, не требующий вычислительных мощностей. Значит, сервисам придётся чаще менять адреса, и выигрывать будут те, кто делает это быстро.
Распознавание протоколов будет совершенствоваться, но упрётся в предел: транспорт, неотличимый от обычного веб-трафика, нельзя заблокировать, не заблокировав заодно обычный веб.
Скорее всего, усилится давление на хостинг-провайдеров: проще договориться с несколькими крупными поставщиками, чем ловить отдельные адреса. Это делает важной независимость от одного хостера — урок, который мы усвоили в августе на собственном опыте.
И почти наверняка вырастет роль локаций внутри страны для доступа к российским сервисам. Банки и госуслуги всё жёстче относятся к зарубежным адресам, и умный маршрут, при котором российские сайты идут напрямую, становится не удобством, а необходимостью.