---
date: 2026-07-16
tags:
  - dpi
  - webrtc
  - whitelist
  - discord
  - proxy
  - socks5
  - tool
  - obhod
aliases:
  - OlcRTC
  - olcrtc
  - OpenLibreCommunity RTC
  - Туннель через WebRTC
  - Обход белых списков через видеозвонки
link: https://github.com/openlibrecommunity/olcrtc
---

# 📞 OlcRTC — туннель через WebRTC-звонки для обхода белых списков

> [!info] О чём заметка
> **OlcRTC** — это инструмент обхода блокировок, который прячет ваш трафик **внутри обычного видеозвонка** на разрешённом сервисе видеоконференций (Jitsi, Яндекс Телемост, WbStream). Он придуман для сценария, где прямой доступ к произвольному VPS/IP уже не работает — например, при **«белых списках»**, когда пропускается только трафик к одобренным сервисам. Механику самих белых списков разбирают [[DPI/subnet-whitelist-blocking-2026|блокировка подсетей по белому списку]] и [[DPI/rdp-ecodpi|разбор оборудования ТСПУ EcoDPI]], где whitelist-режим описан по официальному руководству производителя; здесь — про инструмент, который такой режим обходит.

> [!warning] Статус проекта
> OlcRTC — **бета** (лицензия WTFPL, по данным репозитория на июль 2026). Часть функций может быть нестабильна, клиента для iOS в основном репозитории нет. Проект опирается на **сторонние публичные сервисы** (Jitsi, Телемост, WbStream): их доступность, лимиты и правила использования могут меняться, и туннелирование постороннего трафика через чужой сервис может нарушать его условия обслуживания. Оценивайте это сами.

## TL;DR

- OlcRTC (OpenLibreCommunity RTC) — **зашифрованный TCP-туннель поверх WebRTC**. Снаружи он выглядит как легальный видеозвонок на разрешённый сервис, а внутри — ваш трафик под шифрованием.
- Задача — **обойти белые списки**: провести доступ в «большой интернет» через сервис, который у вас в сети уже работает (в РФ это, например, Яндекс Телемост или WbStream).
- Схема: `приложение → локальный SOCKS5 → olcrtc cnc (клиент) → WebRTC/SFU-сервис → olcrtc srv (сервер) → интернет`.
- Клиентская часть (`cnc`) поднимает **локальный SOCKS5-прокси**; в него направляете браузер, `curl`, sing-box или другое приложение.
- Шифрование — **XChaCha20-Poly1305**, мультиплексирование — **smux** поверх WebRTC data/video-каналов. Общий ключ (64 hex-символа) одинаков на клиенте и сервере.
- Рекомендуемый старт: провайдер **Jitsi + канал datachannel**. Есть варианты для роутеров (OpenWRT/LuCI), десктопа (Electron) и Android.

## Какую проблему решает

Обычный обход блокировок (VPN, VLESS, прокси) предполагает, что вы можете дотянуться до **своего** сервера по произвольному IP. Но если сеть переведена в режим **«белого списка»** — когда по умолчанию всё закрыто и пропускается только трафик к одобренным адресам, — этот подход ломается: до вашего VPS просто нет маршрута.

**Проще говоря:** белый список переворачивает логику блокировки. Обычно «запрещён список плохих сайтов, остальное можно»; в белом списке — «разрешён список хороших сервисов, остальное нельзя». В такой сети недостаточно спрятать трафик — нужно провести его **через разрешённый сервис**.

OlcRTC делает именно это: он берёт сервис видеоконференций, который **уже есть в белом списке** и работает, и использует его как посредника. Ваши данные едут внутри WebRTC-сессии этого сервиса. Для наблюдателя-DPI это выглядит как обычный звонок на разрешённый IP, а полезная нагрузка вдобавок зашифрована вашим ключом.

### Почему это всплывает в контексте Discord

Голос в Discord работает по **WebRTC поверх UDP**, и DPI умеет опознавать маркеры WebRTC и резать такой трафик вплоть до нуля — отсюда «вечное подключение к голосовому каналу». Обычный TCP-прокси голос Discord не спасает (UDP через него не идёт без заворачивания всего трафика в TUN). OlcRTC заходит с другой стороны: не пробивает прямое UDP-соединение к серверам Discord, а **маскирует туннель под легитимный WebRTC-звонок** на разрешённый сервис.

> [!note] Не «волшебная кнопка для голоса Discord»
> OlcRTC — это общий туннель для обхода белых списков, а не специализированный «фикс голоса». Discord — лишь один из мотивов его появления. Насколько удобно через него идёт именно голосовой трафик Discord, зависит от режима (SOCKS5/TCP против полного заворота трафика) и версии клиента; относитесь к «починке Discord» как к одному из применений, а не гарантии.

## Как это устроено технически

Полная цепочка на уровне туннеля выглядит так:

```
приложение
  → SOCKS5 (127.0.0.1:8808)
    → olcrtc cnc (клиент)
      → WebRTC / SFU-сервис (Jitsi / Телемост / WbStream)
        → olcrtc srv (сервер)
          → интернет
```

А внутри самого туннеля данные проходят стадии: `SOCKS CONNECT → smux → XChaCha20-Poly1305 → engine → WebRTC/SFU`.

**Две роли компонентов:**

- **`cnc` (client)** — клиентский режим: поднимает локальный SOCKS5-прокси, принимает подключения приложений и заворачивает их в WebRTC-сессию.
- **`srv` (server)** — серверный режим: подключается к **той же комнате** WebRTC-сервиса, принимает зашифрованные потоки и выполняет реальные TCP-соединения к целевым адресам в интернете.

**Провайдеры (SFU-сервисы):** Jitsi, Yandex Telemost, WbStream. **Транспортные каналы:** `datachannel`, `vp8channel`, `seichannel`, `videochannel` — они определяют, как байты туннеля упаковываются в примитив WebRTC. Рекомендуемое сочетание для старта — `jitsi + datachannel`; альтернатива — `wbstream + vp8channel`.

Проект написан на Go (сборка через `mage`), поддерживает Linux, macOS, Windows, Android (через gomobile) и встраивание как Go-библиотеку.

## Установка и запуск (в общих чертах)

Точные шаги — в документации проекта (`docs/fast.md`, `docs/manual.md`); здесь — принцип.

- [ ] Сгенерировать общий ключ: `openssl rand -hex 32` (64 hex-символа). Ключ **должен совпадать** на сервере и клиенте.
- [ ] Установить зависимости: **Podman** и **git**.
- [ ] Склонировать репозиторий **с подмодулями** (важно для видеоканала): `git clone https://github.com/openlibrecommunity/olcrtc --recurse-submodules` и `cd olcrtc`.
- [ ] Запустить сервер: `./scripts/srv.sh`. На слабых VPS рекомендуют заранее создать swap-файл, чтобы сборка/работа не подвисали.
- [ ] Получить **ID звонка (room ID)**: найти активную комнату и скопировать ID из адресной строки, либо (для WB Stream и SaluteJazz) дать серверу сгенерировать его автоматически — он выведет ID в терминале. Этот ID нужно прописать в конфиге.
- [ ] Указать в конфиге сервера: провайдера (напр. Jitsi), room ID, crypto key, DNS.
- [ ] На клиенте запустить режим `cnc` — он поднимет локальный SOCKS5; направить в него приложение (браузер, `curl`, sing-box, olcbox).

> [!important] Ключевое условие
> Сервис видеозвонков, который вы выбираете провайдером, **должен быть доступен (в белом списке) в вашей сети** — иначе туннель не через что вести. Если один сервис не работает, пробуйте другой из поддерживаемых. В этом и весь смысл: вы паразитируете на уже разрешённом канале.

## Варианты для не-технических пользователей

- **OpenWRT / роутер.** Есть отдельный проект с веб-интерфейсом в LuCI (Службы → OlcRTC): OlcRTC поднимается на роутере как SOCKS5-прокси, и трафик устройств за роутером идёт через WebRTC-туннель. Установка — скриптом по SSH (скрипт спросит архитектуру и скачает нужный бинарник). Поддерживает импорт строки подключения `olcrtc://…` и подписки (ссылка на `sub.md` с автообновлением карточек серверов).
- **Десктоп на Electron** — на случай, если у вас нет VPS/Linux.
- **Android-приложение** — с раздельным туннелированием, режимом proxy-only и др.
- **Docker-образ** — для быстрой настройки на VPS.

## Ограничения

- **Обе стороны должны быть в одной комнате** WebRTC-сервиса (общий room ID + общий ключ).
- **Зависимость от провайдера:** не все сервисы поддерживают все транспорты; например, WB Stream с `datachannel` не работает в гостевом режиме.
- **Бета-статус:** возможна нестабильность; iOS-клиента в основном репозитории нет.
- **Внешняя зависимость:** работоспособность держится на чужих публичных сервисах — если провайдер поменяет API или заблокирует такое использование, конкретный транспорт может отвалиться.

## 📚 См. также

- [[DPI/subnet-whitelist-blocking-2026|Блокировка подсетей по белому списку]] — та самая модель фильтрации, ради обхода которой и сделан OlcRTC
- [[DPI/rdp-ecodpi|EcoDPI и компания РДП.РУ — «железо» ТСПУ]] — как whitelist-режим реализован в оборудовании ТСПУ (по руководству производителя)
- [[DPI/dpi-analysis-pipeline|Как DPI анализирует соединение: воронка проверок]] — почему «легальный WebRTC-звонок» проходит там, где прямой туннель режется
- [[DPI/rkn-vpn-2030-roadmap|Дорожная карта РКН до 2030 года]] — куда движется фильтрация, при которой обход через разрешённые сервисы становится актуальнее
- 🔗 [OlcRTC на GitHub](https://github.com/openlibrecommunity/olcrtc) — исходники, `docs/fast.md`, `docs/manual.md`
- 🔗 [OlcRTC-OpenWRT (веб-интерфейс для роутера)](https://github.com/tankionline2005/OlcRTC-OpenWRT) — запуск на роутере через LuCI
- 🔗 [Гайд по настройке OlcRTC (denpiligrim.ru)](https://denpiligrim.ru/guides/olcrtc-proxy) — стороннее пошаговое руководство

---

> [!quote] 🤖 Эти статьи открыты — можно обучать на них ИИ
> При желании вы можете натренировать ИИ на наших статьях. Исходное форматирование и скачивание всего репозитория одним zip-архивом доступны в Forgejo: [исходник этой заметки](https://git.zapret.moe/zapretdiscordyoutube/todo/src/branch/main/DPI/olcrtc.md) · [весь репозиторий](https://git.zapret.moe/zapretdiscordyoutube/todo/src/branch/main).
