WDTT — это Android-приложение для создания защищённого WireGuard-туннеля поверх TURN/DTLS. Клиент поднимает локальный VPN-интерфейс на устройстве, получает WireGuard-конфигурацию от вашего VPS и передаёт транспорт через TURN-серверы VK, маскируя соединение под обычный зашифрованный медиатрафик звонка.
- Полноценный VPN-режим: приложение использует
VpnServiceи WireGuard GoBackend, поэтому трафик выбранных приложений проходит через системный VPN-интерфейс без ручного импорта конфигов. - TURN/DTLS-транспорт: нативный Go-клиент получает временные TURN-учётные данные VK-звонка и поднимает DTLS-соединения к relay-серверу, через который передаётся трафик до вашего VPS.
- Деплой с телефона: вкладка «Деплой» подключается к серверу по SSH, загружает
wdtt-server, создаётsystemd-сервис, включает NAT/firewall и открывает рабочие UDP-порты. - Парольная модель доступа: сервер поддерживает главный пароль, одноразовые/срочные пароли, привязку пароля к устройству и управление через Telegram-бота.
- Исключения приложений: можно выбрать, какие приложения идут через туннель, а какие работают напрямую. Поддерживаются режимы ЧС и БС, а изменения применяются перезагрузкой WireGuard без полного перенастраивания.
- Капча VK Smart Captcha: основной рабочий режим в текущей Android-сборке —
WBV/WebViewс ручным решением или автоматической попыткой для простых сценариев. RJS-логика есть в Go-ядре, но в UI текущей сборки временно отключена. - Живой лог-вьюер: события Go-клиента, DTLS, WireGuard, капчи, деплоя и статистики отображаются в приложении с группировкой одинаковых сообщений и счётчиками повторов.
- Фоновая устойчивость:
Foreground Service,WakeLock,WifiLock, мониторинг смены сети и watchdog помогают переживать Doze, смену Wi-Fi/LTE и падение нативного процесса. - Темы и оформление: Material 3, Jetpack Compose, Inter, светлая/тёмная тема, Dynamic Colors на Android 12+ и встроенные палитры.
- Автообновления: приложение проверяет GitHub releases, показывает диалог обновления и позволяет перейти на страницу актуального релиза.
Important
После обновления до 1.1.0 необходимо заново выполнить деплой сервера из приложения.
- Изоляция WDTT: деплой, удаление и рабочая среда WDTT теперь не должны влиять на другие компоненты VPS. Серверная часть изолирована в собственной конфигурации, интерфейсе и правилах firewall/NAT.
- Автообновление: помимо ручной проверки, приложение теперь самостоятельно проверяет наличие новых версий и предлагает обновиться до актуального релиза.
- Ручные порты: добавлена возможность управлять портами. При включении режима ручных портов можно задать DTLS и WG порты на сервере, а также локальный VPN-порт в туннеле. Если это не нужно, режим лучше не включать.
- Капча: возвращён режим Авто-WBV для прохождения капчи «Я не робот». Режим RJS временно заблокирован до следующих улучшений. Если с Авто-WBV возникают проблемы, используйте ручной режим.
- Разделение архитектур: релизы теперь делятся на arm64-v8a, armeabi-v7a и x86_64, чтобы уменьшить размер APK. Если вы не знаете, какой APK выбрать, используйте Universal — он содержит все 3 архитектуры, но весит больше.
- Сборка: обновлены AGP, Gradle и Kotlin до актуальных версий (
9.0.1,9.1.0,2.x), что положительно влияет на стабильность и работу приложения. - Багфиксы и стабильность: удалён DataSync, который мог вызывать краши на Android 14+; изменено поведение уведомления, чтобы оно не скакало в шторке; улучшен запуск VPN Service и передача WireGuard-конфига.
- Интерфейс и информация: проведён небольшой редизайн, добавлены тени и орбы на фон. Раздел «Инфо» переработан и теперь позволяет собрать отчёт с данными об устройстве для более точного разбора ошибок.
- В планах: заменить стандартный протокол WireGuard на AmneziaWG в версиях
1.5-2.0, чтобы лучше решать проблемы региональных блокировок. - Откат при проблемах: если после обновления появились ошибки, которых раньше точно не было, можно открыть
issueи временно откатиться на версию 1.0.6.
Android-приложение → VpnService / WireGuard GoBackend → локальный UDP 127.0.0.1:9000
→ Go-клиент WDTT → VK TURN / DTLS → wdtt-server на VPS → интернет
- Приложение запускает нативный Go-клиент
libclient.soи передаёт ему адрес VPS, VK-хеши звонка, пароль туннеля, протокол TURN и количество потоков. - Go-клиент получает TURN-учётные данные через VK-звонок, при необходимости решает VK Smart Captcha и устанавливает DTLS-соединения через TURN relay.
- Первый рабочий канал запрашивает у VPS WireGuard-конфигурацию через
GETCONF, передавая локальный порт,device-idи пароль подключения. - Сервер проверяет пароль: главный пароль работает как владелец, сгенерированные пароли могут иметь срок действия и привязываются к первому устройству.
- Android-часть парсит полученный WireGuard-конфиг, поднимает системный VPN-туннель и применяет исключения приложений.
- Watchdog следит за Go-процессом, активными воркерами и сетевыми изменениями, перезапуская транспорт при сбоях.
- Скачайте актуальный
APKсо страницы релизов. - Установите приложение на Android-смартфон.
- Подготовьте VPS с root-доступом или пользователем с
sudo. - В VK создайте или откройте групповой звонок и скопируйте ссылку вида
vk.com/call/join/xxxxxxxxxxx. - Откройте WDTT и перейдите во вкладку «Деплой».
- Введите IP/домен VPS, SSH-логин, пароль и SSH-порт.
- В «Секретах» задайте пароль туннеля. При необходимости добавьте Telegram
admin_idиbot_tokenдля управления паролями. - Нажмите «Установить» и дождитесь завершения деплоя.
- Во вкладке «Туннель» укажите IP/домен сервера, VK-хеши, пароль туннеля и количество потоков.
- Нажмите «Подключить» и выдайте Android-разрешение на VPN.
VK → группа → звонок → ссылка приглашения → код после /join/
- Откройте VK и создайте пустую группу или используйте существующую.
- Начните групповой звонок.
- Скопируйте ссылку приглашения.
- Вставьте в WDTT всю ссылку или только хеш после последнего слэша.
- Можно использовать до 3 хешей одновременно для распределения нагрузки и увеличения доступного числа потоков.
Important
При выходе из звонка нажимайте «Просто завершить», а не «Завершить для всех». Если закрыть комнату для всех участников, хеш перестанет работать.
Серверная часть ставится автоматически из приложения:
Android → SSH → /tmp/deploy.sh + /tmp/wdtt-server → /usr/local/bin/wdtt-server
→ systemd wdtt.service → wdtt0 + NAT + firewall
По умолчанию используются:
56000/udp— DTLS-сервер WDTT.56001/udp— внутренний WireGuard-порт сервера.9000/udp— локальный порт Android-клиента.10.66.66.0/24— подсеть WireGuard-устройств.
Если включить ручное управление портами, эти значения можно изменить в «Секретах».
WDTT-сервер поддерживает две модели подключения:
- Главный пароль: задаётся при деплое и используется владельцем сервера.
- Сгенерированные пароли: создаются через Telegram-бота командой
/new, имеют срок действия и привязываются к первому устройству.
Команда /list показывает активные пароли и устройства. Через inline-кнопки можно отвязать устройство или удалить пароль.
Вкладка «Исключ.» показывает установленные приложения с поиском. В режиме ЧС выбранные приложения исключаются из VPN, а в режиме БС логика инвертируется: неотмеченные приложения добавляются в туннель. Само приложение WDTT и VK-клиенты исключаются автоматически, чтобы не ломать TURN-соединение.
Вкладка «Логи» показывает статус получения VK-учётных данных, решение капчи, DTLS-handshake, готовность WireGuard, статистику активных воркеров и ошибки. Повторяющиеся строки схлопываются в одну запись со счётчиком.
Приложение проверяет GitHub releases репозитория amurcanov/proxy-turn-vk-android, умеет показывать диалог новой версии и открывать страницу релиза в браузере.
В разделе «Информация» есть кнопка «Собрать отчёт». Она копирует версию приложения, Android SDK, ABI, модель устройства, SoC, ROM и fingerprint — эти данные полезны при разборе крашей и проблем с запуском.
Note
WDTT зависит от мобильной сети, Android-ограничений фоновой работы, состояния VK-звонка, TURN-квот и настроек VPS.
Если возникла проблема, приложите к issue отчёт из раздела «Информация», скриншот вкладки «Логи», версию APK, ABI сборки и описание сети. Мелкие повторяющиеся ошибки в логах не всегда означают поломку, если туннель остаётся активным.
Important
Приложение является техническим инструментом для защищённого туннелирования собственного трафика через ваш сервер. Автор не призывает использовать WDTT для противоправных целей или нарушения правил сторонних сервисов.
Этот проект распространяется под лицензией GNU General Public License v3.0.