Основы

Как DPI блокирует VPN

Сеть, блокирующая VPN, редко делает что-то одно. Она одновременно запускает несколько методов обнаружения, каждый достаточно дешёвый, чтобы применяться к любому соединению, и туннелю нужно пережить их все, чтобы остаться пригодным к использованию. Вот что делает каждый из них.

6 мин чтенияПоследняя проверка

Блокировка многослойна, а не единична

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

Это же объясняет опыт, который многих сбивает с толку: туннель неделями работает безупречно, а потом перестаёт без каких-либо изменений с вашей стороны. В вашем трафике ничего не менялось. Конечную точку опознали вне канала и внесли в список.

Шлюз первый: отпечатки протокола

Самый старый и дешёвый метод — опознать VPN-протокол по его собственному рукопожатию. Большинство VPN-протоколов проектировались тогда, когда моделью угрозы был перехватчик, а не классификатор, и они заявляют о себе на проводе вполне отчётливо.

Насколько узнаваемы распространённые VPN-протоколы на проводе
ПротоколЧто его выдаётСложность обнаружения
PPTP / L2TPВыделенные номера протоколов и фиксированные порты; рукопожатие ни с чем не спутать.Тривиально
IPsec / IKEv2UDP 500 и 4500 с характерным обменом IKE.Тривиально
WireGuardПервое сообщение рукопожатия фиксированного размера с постоянным байтом типа на известном смещении, поверх UDP.Тривиально
OpenVPNУзнаваемая структура кодов операций в управляющем канале, даже в режиме TCP на порту 443.Легко
Shadowsocks (ранние версии)Рукопожатия нет вовсе, что само по себе необычно; ранние версии были уязвимы и к активному зондированию.Умеренно
Туннели, завёрнутые в TLSЗависит целиком от того, насколько точно имитируется TLS; обычная примета — несовпадение отпечатка рукопожатия.От умеренного до сложного

Шлюз второй: имя хоста в рукопожатии

Для всего, что выдаёт себя за TLS, следующая проверка — поле Server Name Indication: имя хоста, которое запрашивает клиент, отправленное открытым текстом до начала шифрования. Оно существует, чтобы один адрес мог обслуживать множество сайтов, и его читает практически любая действующая система фильтрации.

  • Чёрный список: соединение отбрасывается, если имя хоста есть в списке. Так работает большинство блокировок на уровне сайтов.
  • Белый список: соединение отбрасывается, если имени хоста в списке нет. Куда агрессивнее, применяется в некоторых корпоративных и национальных сетях, и обойти это значительно труднее.
  • Проверка согласованности: имя хоста сверяется с адресом, в который оно разрешается, или с сертификатом, который предъявляет сервер. Несовпадение считается подозрительным.

Encrypted Client Hello — стандартизированное решение этой проблемы: оно шифрует имя хоста, так что наблюдатель не может его прочитать. Внедрение частичное, оно зависит от DNS-записей, которые сеть тоже может контролировать, а в сети, где им почти никто не пользуется, сам факт его использования становится признаком. Ситуацию это улучшает; шлюз не закрывает.

Шлюз третий: похож ли этот TLS на настоящий браузер?

Завернуть туннель в TLS недостаточно, если сам TLS выглядит неправильно. Первое сообщение клиента несёт упорядоченный список шифронаборов, поддерживаемых групп, алгоритмов подписи и расширений. Точное сочетание различается между реализациями — программа на Go, программа на OpenSSL и Chrome выдают явно разные Client Hello — и его можно свернуть в короткий отпечаток.

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

Шлюз четвёртый: активное зондирование

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

  1. Наблюдение

    Поток к адресу без репутации, без соответствующей истории в DNS и с необычным профилем трафика берётся на заметку.

  2. Зондирование

    Система открывает собственное соединение к этому адресу, иногда воспроизводя байты, перехваченные из вашей сессии, иногда отправляя намеренный мусор.

  3. Вердикт

    Обычный веб-сервер отвечает нормальным ответом или предупреждением TLS и ведёт себя одинаково, что бы ему ни прислали. Наивный прокси отвечает иначе: может зависнуть, сразу закрыть соединение или ответить так, как не отвечает ни один веб-сервер.

  4. Действие

    Если ответ аномален, адрес попадает в список блокировки, и порт перестаёт работать у всех, кто им пользуется.

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

Шлюз пятый: репутация адреса

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

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

Шлюз шестой: ухудшать, а не блокировать

Блокировка заметна и вызывает жалобы. Замедление — нет. Поток, классифицированный как «вероятно туннель», можно урезать до пары сотен килобит, отчего мессенджеры останутся рабочими, видео — невозможным, а выглядеть это будет ровно как перегруженная сеть.

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

Что архитектура протокола может исправить, а что нет

Метод обнаружения и то, что с ним может сделать архитектура протокола
МетодРешается архитектурой протокола?
Отпечаток рукопожатия протоколаДа — если его не создавать вовсе или выдавать браузерный.
Несовпадение отпечатка TLSДа — точным воспроизведением рукопожатия настоящего клиента.
Имя хоста в рукопожатииЧастично — заимствованием правдоподобного имени или его шифрованием там, где это поддерживается.
Активное зондированиеДа — если отвечать ровно так, как ответил бы обычный сервер.
Списки заблокированных адресовНет — это про адрес, а не про трафик.
Статистический анализ трафикаЧастично — набивка и выравнивание ритма повышают цену ценой пропускной способности.
Белый список с запретом по умолчаниюНет — сквозь сеть, пропускающую только поимённый список адресов, не проходит ничего.

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

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

Почему мой VPN работал месяцами и вдруг перестал?

Чаще всего адрес конечной точки опознали и внесли в список блокировки, а не что-то изменилось в вашем трафике. Опознание может произойти через активное зондирование, через попадание адреса в публичный список или просто из-за объёма: один адрес, несущий необычно много долгоживущего трафика, привлекает внимание.

Блокируется ли WireGuard системами DPI?

Это один из самых простых протоколов для опознания, потому что первое сообщение его рукопожатия имеет фиксированный размер и постоянный байт типа на известном смещении. В сетях, фильтрующих по отпечатку протокола, его обычно блокируют одним из первых. О качестве протокола в нефильтруемой сети, где он превосходен, это не говорит ничего.

Делает ли порт 443 VPN необнаружимым?

Нет. Порт 443 перестал быть укрытием, как только инспекция стала обыденностью; важно, похож ли идущий по нему трафик на тот HTTPS, которому там место. VPN-протокол, работающий на 443 без изменений, скорее даже заметнее, потому что он выдаёт себя за то, чем явно не является.

Может ли сеть заблокировать все VPN?

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

Как это применяет HushTunnel

HushTunnel использует VLESS вместе с REALITY и XTLS — те самые решения, которые описаны в этих руководствах, — и не хранит записей о посещаемых вами сайтах.

Все руководства