Meek
Meek — pluggable transport для Tor через domain fronting. Идея: снаружи HTTPS-запрос выглядит как обращение к легитимному крупному сервису (Google, Cloudflare, Fastly), а внутри — трафик к Tor-мосту.
Что такое domain fronting
- Клиент подключается к IP крупного CDN.
- В SNI и в HTTP-заголовке
Host:указывает разные имена. SNI — «безобидный» сайт того же CDN (напримерcdnjs.cloudflare.com). Host — реальный целевой сервис (напримерmeek-server.tor.example). - DPI видит только SNI — cdnjs.cloudflare.com. Никаких причин блокировать.
- Внутри TLS-туннеля CDN-фронтенд смотрит на Host-заголовок и перенаправляет запрос на бэкенд Tor.
Ключевой момент: SNI шифруется TLS, но виден DPI до TLS-handshake (в TLS 1.2 в открытом виде). А Host в HTTPS полностью зашифрован — DPI его не видит.
Почему это перестало работать
В 2018 Google запретил domain fronting на своей инфраструктуре («technical decision»). Amazon (CloudFront) — тогда же. Cloudflare — в 2015-2018 постепенно. Azure, Fastly — тоже закрутили гайки. Причины: юридическое давление стран-цензоров + собственная безопасность (domain fronting используется малваром для C2).
Итог: meek почти мёртв. Из работающих остались микро-провайдеры и самопальные фронты. ECH (Encrypted Client Hello) — идейный преемник, шифрует SNI на транспортном уровне, не полагаясь на кооперацию CDN.
Разновидности meek
- meek — оригинал.
- meek_lite — упрощённая версия из obfs4proxy, до сих пор идёт в комплекте.
- meek-azure, meek-google, meek-amazon — конкретные фронты, все умерли.
Пример bridge line
meek_lite 0.0.2.0:2 url=https://meek.example.com/ front=cdn.example.com
- url — реальный бэкенд (Host-заголовок).
- front — «прикрытие» (SNI).
- IP-часть игнорируется, meek не подключается к нему напрямую.
Похожие идеи
- ECH — Encrypted ClientHello. Шифрует SNI, чтобы DPI вообще не видел куда идёшь. Работает без кооперации CDN, но требует поддержки от целевого сервера.
- REALITY — маскируется под конкретный сайт-«донор». Отличие от meek: REALITY не требует, чтобы CDN пропускал разные Host в одном IP — REALITY перехватывает подключение до того как оно уходит на настоящий сайт.
- XMC, olcRTC — маскировка под другой протокол вообще (Minecraft, WebRTC), а не под CDN.