Народный

Технологии цензуры

SNI — Server Name Indication

Расширение TLS, в котором браузер открыто передаёт имя домена в первом пакете handshake. Главная мишень DPI: даже зашифрованное соединение раскрывает, куда вы идёте.

Определение

SNI (Server Name Indication) — поле в первом TLS-сообщении (ClientHello), в котором клиент в открытом виде передаёт hostname, к которому подключается. Введено в RFC 6066 (2011), нужно потому, что один IP-адрес может обслуживать сотни сайтов через SNI-routing — сервер должен понять, какой сертификат подсунуть, ещё до того, как handshake завершится.

Парадокс SNI: TLS защищает содержимое сессии, но цель сессии (домен) передаётся открытым текстом. Именно по SNI DPI определяет, какой сайт открывает пользователь, и принимает решение блокировать или нет.

Почему SNI — главная мишень цензуры

Современная HTTPS-блокировка работает на 95% по SNI. Схема: DPI-устройство видит ClientHello, парсит SNI-поле, сверяет hostname со списком запрещённых. Если совпадение — пакет дропается или соединение получает TCP RST. Сертификат не проверяется, TLS не дешифруется, никакого MITM — просто чтение open-text поля внутри зашифрованного пакета.

ТСПУ и Великий Китайский Файрвол (GFW) используют одну и ту же логику. В РФ блокировка по SNI применяется к доменам Instagram, Facebook, LinkedIn, ряду VPN-сайтов; замедление YouTube — точно так же по *.googlevideo.com.

Как обходят SNI-блокировку

  • ECH (Encrypted ClientHello) — преемник ESNI, шифрует SNI целиком. Браузер передаёт только public-key-server’а, реальный hostname скрыт. На 2026 поддерживается в Firefox и Chrome (под флагом), серверная сторона — Cloudflare. ТСПУ пока пропускает ECH, но мониторит распространение.
  • SNI fragmentation — клиент дробит ClientHello на несколько TCP-сегментов так, чтобы SNI-поле оказалось разорвано между пакетами. DPI без stateful-reassembly не успевает собрать целевое имя.
  • Domain Fronting — клиент пишет в SNI безопасный «фасадный» домен (был Google App Engine, сейчас рандомные CF-domains), а реальный target указывает в зашифрованном HTTP Host-header. Главные CDN (Google, Amazon, Cloudflare) запретили эту технику в 2018, но осколки остались.
  • VLESS Reality — самый практичный обход 2026. Клиент пишет в SNI имя настоящего стороннего сайта (microsoft.com, www.bing.com), реальный туннель открывается на тот же IP, но к VPN-серверу. Reality-сервер проксирует «контрольный» TLS-handshake к настоящему microsoft.com, чтобы fingerprint совпадал.

Что видит обычный пользователь

Если сайт «не открывается через мобильный интернет, но открывается через VPN» — почти всегда это блокировка по SNI на ТСПУ. Если VPN перестал подключаться через час после установки — DPI распознал sni-паттерн handshake’а самого VPN (а не цели).

Проверить через какой именно SNI пройдёт ваш VPN — стандартная диагностика. Утилиты curl --resolve, openssl s_client -servername, расширения для Wireshark покажут SNI-поле в первом пакете.

Источники

  • RFC 6066 — раздел 3 «Server Name Indication».
  • draft-ietf-tls-esni — текущая спецификация ECH (2024).
  • GFW Report — публикации о SNI-based blocking measurements.

Связанные термины

  • DPI — основной потребитель SNI-данных.
  • ECH — преемник, шифрующий SNI.
  • VLESS Reality — практический обход.
  • TLS 1.3 — версия TLS, в которой ECH работает корректно.