Disclaimer. Проект предназначен исключительно для образовательных и исследовательских целей.
- Принцип работы
- Возможности
- Требования
- Как это работает в связке с VPN
- Настройка по шагам
- Broadcast API
- Под капотом
- Благодарности
- Лицензия
Пакеты шифруются DTLS 1.2 (или оборачиваются в VLESS) и отправляются на TURN-сервер по протоколу STUN ChannelData (TCP или UDP). TURN пересылает трафик по UDP на ваш VPS, где он расшифровывается и уходит в WireGuard / Hysteria. Учётные данные TURN генерируются автоматически из ссылки на звонок.
| Категория | Что умеет |
|---|---|
| Профили | Несколько именованных конфигов, быстрое переключение |
| Транспорты | TCP, UDP, VLESS (+ опциональный vless-bond) |
| Wrap | Обёртка трафика общим 64-hex ключом |
| Управление сервером | Установка, запуск/остановка, генерация wrap-ключа, логи по SSH прямо из приложения |
| Автоустановка | Бинарник на VPS разворачивается из приложения одним нажатием |
| Автообновление | Проверка новых релизов и установка APK без ручного скачивания |
| Watchdog | Автопереподключение при обрыве и смене Wi-Fi / Mobile |
| Шифрование секретов | Пароли, ключи и wrap-key в EncryptedSharedPreferences (Android Keystore) |
| Broadcast API | START_PROXY / STOP_PROXY для автоматизации |
| Кастомное ядро | Подмена встроенного libvkturn.so |
- Android 6.0+ (API 23)
- ARM64 (
arm64-v8a) - VPS с поднятым WireGuard или Hysteria
- Ссылка на звонок VK
FreeTurn — это не VPN. Туннель он не поднимает.
FreeTurn — транспортный слой: принимает UDP-пакеты на 127.0.0.1:9000 и пробрасывает их через TURN до вашего VPS. Сам трафик создаёт WireGuard / AmneziaWG, у которого Endpoint указан на этот локальный порт.
Без WireGuard-клиента, направленного на 127.0.0.1:9000, трафика не будет.
Пример с AmneziaVPN. Для чистого WireGuard всё аналогично.
Берите свежий релиз из Releases.
При первом запуске онбординг сам предложит ввести SSH-данные VPS и развернуть сервер. Позже это всегда доступно на экране Сервер:
Сервер → SSH-данные → [Установить] → [Запустить]
Бинарник загрузится на VPS и запустится автоматически.
Ручная установка (если SSH-менеджером не пользуетесь)
wget https://github.com/cacggghp/vk-turn-proxy/releases/latest/download/server-linux-amd64
chmod +x server-linux-amd64
nohup ./server-linux-amd64 -listen 0.0.0.0:56000 -connect 127.0.0.1:<порт_wg> > server.log 2>&1 &На экране Сервер:
| Поле | Значение |
|---|---|
| Listen-порт | 56000 по умолчанию или любой свободный. Должен совпадать с полем Адрес vk-turn-proxy сервера на экране Клиент. |
Адрес TURN-клиента (-connect) |
127.0.0.1:<порт_WireGuard/AmneziaWG> на VPS. |
-
В AmneziaVPN добавьте нового пользователя в формате оригинального WireGuard / AmneziaWG.
-
Скачайте
.confна устройство. -
Откройте в текстовом редакторе и замените:
- Endpoint = your.vps.ip:51820 + Endpoint = 127.0.0.1:9000
-
Сохраните и импортируйте обратно в клиент AmneziaWG.
В AmneziaWG включите раздельное туннелирование:
Режим: «Приложения из списка не должны работать через VPN» Список: добавьте FreeTurn.
Без этого пакеты самого FreeTurn зациклятся в туннель.
На экране Клиент:
| Поле | Значение |
|---|---|
| Ссылка | URL VK-звонка |
| Адрес vk-turn-proxy сервера | IP_VPS:<listen-порт сервера> |
| Локальный адрес | 127.0.0.1:9000 (тот же, что Endpoint в .conf) |
На главном экране FreeTurn нажмите Запуск.
В AmneziaWG включите подключение. Готово — трафик идёт через TURN.
Управление прокси через adb или Tasker:
# запуск
adb shell am broadcast -a com.freeturn.app.START_PROXY -n com.freeturn.app/.ProxyReceiver
# остановка
adb shell am broadcast -a com.freeturn.app.STOP_PROXY -n com.freeturn.app/.ProxyReceiverСтек технологий
- Kotlin + Jetpack Compose + Material 3
- Coroutines / StateFlow — реактивная архитектура
- DataStore — настройки и профили
- EncryptedSharedPreferences + Android Keystore — секреты
- JSch — SSH-клиент
- Нативное ядро на Go —
libvkturn.so(arm64-v8a)
- Moroka8/vk-turn-proxy — @Moroka8, форк ядра vk-turn-proxy
- alexmac6574/vk-turn-proxy — @alexmac6574, форк ядра vk-turn-proxy
- cacggghp/vk-turn-proxy — @cacggghp, оригинальное vk-turn-proxy
- MYSOREZ/vk-turn-proxy-android — @MYSOREZ, оригинальный Android-клиент

