Привет, Хабр!
Если не читали предыдущие статьи — кратко: в РФ сейчас работают белые списки (а мы не знали) подробнее тут, ТСПУ работает в режиме drop‑all, пропуская только одобренные IP + SNI.
Обходилось это легко — покупаешь VPS у VK/Timeweb/Яндекса, получаешь подсеть которая есть в белых списках, поднимаешь VLESS.
Только вот скоро это перестанет работать.
VK и Яндекс начали детектить инстансы используемые как прокси — предположительно смотрят на паттерны трафика и так далее, MAX вообще давно палит IP VPS через HOST_REACHABILITY — подробнее тут. Мне самому забанили VPS за перебор IP в Yandex Cloud.
И в конце концов поставщики VPS просто уберут смертным доступ к пулам из вайтлиста — тогда вся схема умрёт окончательно.
Так что... способы обойти белые списки через попадание в белые списки — скоро станут невозможными.
Так что делать? Плакать и смириться с чебурнетом? Ну, как бы да и как бы нет, нам поможет BB22.
Не буду томить. Мы будем эксплуатировать готовые сервисы которые уже в белых списках. А точнее — звонки.
Сначало заранее: почему не Mail/API? Потому что звонки дают огромную пропускную способность. Не только текст а видео и аудио. А SMTP легко DPI‑шится: если трафик последователен а сообщения похожи на кашу — блок.
То есть мы будем гнать данные через WebRTC SFU.
Выбор сервиса
Для публичной демо сцены выбрали Яндекс Телемост
У Телемоста два важных плюса:
-
Уже в белых списках (проверено)

пруф. работы телемоста в РФ Не требует регистрации со стороны участника - войти в аккаунт должен только инициатор, второй участник может остаться гостем.
Архитектура
Телемост использует SFU, не P2P. Трафик идёт:
Ваш клиент -> Сервер Яндекса (в белом списке) -> Ваш VPS (второй гость)
У Телемоста есть DataChannel — SCTP over DTLS, порт 5000. По SDP максимальный размер — 1023MB. Реальный лимит сервера — 8KB. Сообщения больше 8KB молча дропаются. Яндекс если вы это читаете то фиксите, не профессионально делаете вещи блин. Решается чанкингом на уровне приложения.
Есть и видеоканал — через него можно гнать данные QR‑кодами. медленнее, но fallback если DC закроют.
Аудиоканал — не подходит. Opus с DTX, FEC и шумоподавлением убивает любые не‑голосовые данные на уровне кодека. Потеря энергии сигнала >99%. Забудьте.
Еще проект исползует MAX но публично этот код не выкладывали, причина будет описана дальше.
Реализация BareBone2022: OlcRTC
Проект называется OlcRTC в честь OpenLibreCommunity
Основаной проект написан на GO, PoC на PY
В репо есть несколько PoC файлов:
code/poc.py - Базовый proof of concept. Два гостя подключаются к одной конференции и обмениваются сообщениями через DC
:P TEST PASSED - OlcRTC PoC works!
code/vcsend.py — Передача данных через видеопоток. Данные кодируются в QR-коды, передаются в видеотреке с 1 FPS, декодируются на приёмнике через pyzbar + OpenCV
-> QR COMPLETE: 892 bytes :P got 892 bytes
code/limits.py — Проверка всех лимитов. Запускаете, получаете реальные цифры по своему соединению, создан для проверки начали ли Telemost вводить ограничения
:P 1KB: SUCCESS :P 6KB: SUCCESS :P 8KB: SUCCESS X 10KB: Never reached server :P Max working size: 8,192 bytes (8KB)
code/dcsend.py — HTTP прокси через DataChannel. Клиент шлёт URL, сервер скачивает файл и отдаёт чанками по 8KB с заголовками (transfer_id + sequence)
code/info.py — Полная информация о конференции: участники, кодеки, ICE серверы, SDP
code/flood.py — Не запускайте, флуд участников

И еще пара не нужных вам файлов, кому интересно сам чекнет:
Реальные цифры скорости Yandex Telemost
latency (RTT):
100 байт: ~57ms
1KB: ~70ms
4KB: ~73ms
8KB: ~130ms
throughput:
64KB: 2.1s (~244 Kbps)
128KB: 2.2s (~477 Kbps)
256KB: 2.2s (~973 Kbps)
При стриминге большого файла (42MB APK OlcNG):
:P Streamed 44628865 bytes in 7.00s (44.61 Mbps)
Да, 44 Mbps. DC реально быстрый

Тянет даже 4к ютуб видео
Установка Golang версии OlcRTC, требуется любой VPS
На сервере:

sudo -v bash <(curl -sL zarazaex.xyz/srv.sh)
Вводите ID конференции (создайте свою, не используйте мою )
Получаете ключ шифрования

На клиенте:

sudo -v bash <(curl -sL zarazaex.xyz/cnc.sh)
Вводите ID, ключ, порт (по умолчанию 8809) - получаете локальный SOCKS5h прокси
Проверка:
all_proxy=socks5h://localhost:8809 curl -fsSL zarazaex.xyz
Известные проблемы и пометки которые скоро будут пофикшены
Трафик не маскируется под реальные сообщения — нет искусственного замедления пакетов в стиле NYM. Паттерны отличаются от живого звонка, к сожалению реализация такого заняла бы слишком много времени, в общем, ждите.
Нет инициализации звонка изнутри — конференцию надо создавать руками заранее.
Используется кастомный мультиплексор вместо готовых реализаций.
Не шлёт фоновые XHR запросы телеметрии как оригинальный клиент Телемоста.
Яндекс может убрать DC или ограничить скорость — тогда переходим на видеоканал.
Реализация для MAX существует, но не опубликована по понятным причинам.
Яндекс может запретить созваниваться Русским с Американцами.
Яндекс может запретить звонки без подтверждения номера.
РКН может исключить телемост из бс.
Реализация BB22 тоесть OlcRTC существует только на Linux.
Используются имена «srv» которые можно тупо ввести в блеклист.
По факту этот метод вечный и не блокируемый, проблема в реализации BareBone2022.
Придется очень много притворятся легит трафиком, эт сложно но возможно.
Но самое главное — этот способ теоретически не заблокировать не отключив MAX / Telemost.
Итого
Идея работает. Данные идут через серверы Яндекса и в будущем макса, они в белом списке. Скорость достаточная.
Яндекс рано или поздно закроет DC — именно поэтому параллельно готовим поддерджку VC и версию для MAX. Когда чебурнет настанет по‑настоящему — будем готовы.
Проект под WTFPL. PR не принимаем. issue нету, хотите свою реализацию — делайте с нуля, лучше не форкайте.
Участники: @zarazaex, @zowue и все причастные из openlibrecommunity.
Гитхаб: zarazaex69/olcRTC
По проблемам: zarazaex@tuta.io
UPD: Вот недавно ТГ канал создал, там способы ускорения и обходы белых списков есть, кто хочет может подписатся t.me/openlibrecommunity а еще там самые крутые новости и ваще лучший канал во всем телеграме подпишитесь там еще бесплатно все и анонсы статей будут кароче круто ваще просто.
UPD: собственно OlcRTC все еще в этапе разработки, за пару месяцев все вышеописанные проблемы я уже решу.
UPD: и проект создавался не для скорости а для минимального стриминга аудио, я не ожидал что оно будет грузить 8к в таких плачевных обстоятельствах белых спиков.
UPD: в бс еще есть salutejazz.ru, че к чему понятно, там еще регатся вообще не надо
UPD: ток что проверил на белых списках olcrtc, работает
