Skip to content

amurcanov/proxy-turn-vk-android

Repository files navigation

WDTT — WireGuard over TURN Tunnel


Android SDK Go Version Kotlin Stars

WDTT — это Android-приложение для создания защищённого WireGuard-туннеля поверх TURN/DTLS. Клиент поднимает локальный VPN-интерфейс на устройстве, получает WireGuard-конфигурацию от вашего VPS и передаёт транспорт через TURN-серверы VK, маскируя соединение под обычный зашифрованный медиатрафик звонка.


MyCollages (2)

Возможности Android-версии

  • Полноценный 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, показывает диалог обновления и позволяет перейти на страницу актуального релиза.

Что нового в версии 1.1.0

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 → интернет
  1. Приложение запускает нативный Go-клиент libclient.so и передаёт ему адрес VPS, VK-хеши звонка, пароль туннеля, протокол TURN и количество потоков.
  2. Go-клиент получает TURN-учётные данные через VK-звонок, при необходимости решает VK Smart Captcha и устанавливает DTLS-соединения через TURN relay.
  3. Первый рабочий канал запрашивает у VPS WireGuard-конфигурацию через GETCONF, передавая локальный порт, device-id и пароль подключения.
  4. Сервер проверяет пароль: главный пароль работает как владелец, сгенерированные пароли могут иметь срок действия и привязываются к первому устройству.
  5. Android-часть парсит полученный WireGuard-конфиг, поднимает системный VPN-туннель и применяет исключения приложений.
  6. Watchdog следит за Go-процессом, активными воркерами и сетевыми изменениями, перезапуская транспорт при сбоях.

Быстрый старт

  1. Скачайте актуальный APK со страницы релизов.
  2. Установите приложение на Android-смартфон.
  3. Подготовьте VPS с root-доступом или пользователем с sudo.
  4. В VK создайте или откройте групповой звонок и скопируйте ссылку вида vk.com/call/join/xxxxxxxxxxx.
  5. Откройте WDTT и перейдите во вкладку «Деплой».
  6. Введите IP/домен VPS, SSH-логин, пароль и SSH-порт.
  7. В «Секретах» задайте пароль туннеля. При необходимости добавьте Telegram admin_id и bot_token для управления паролями.
  8. Нажмите «Установить» и дождитесь завершения деплоя.
  9. Во вкладке «Туннель» укажите IP/домен сервера, VK-хеши, пароль туннеля и количество потоков.
  10. Нажмите «Подключить» и выдайте Android-разрешение на VPN.

Получение VK-хеша

VK → группа → звонок → ссылка приглашения → код после /join/
  1. Откройте VK и создайте пустую группу или используйте существующую.
  2. Начните групповой звонок.
  3. Скопируйте ссылку приглашения.
  4. Вставьте в WDTT всю ссылку или только хеш после последнего слэша.
  5. Можно использовать до 3 хешей одновременно для распределения нагрузки и увеличения доступного числа потоков.

Important

При выходе из звонка нажимайте «Просто завершить», а не «Завершить для всех». Если закрыть комнату для всех участников, хеш перестанет работать.

Деплой VPS

Серверная часть ставится автоматически из приложения:

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, умеет показывать диалог новой версии и открывать страницу релиза в браузере.

Отчёт для issue

В разделе «Информация» есть кнопка «Собрать отчёт». Она копирует версию приложения, Android SDK, ABI, модель устройства, SoC, ROM и fingerprint — эти данные полезны при разборе крашей и проблем с запуском.


Note

Отчёты об ошибках

WDTT зависит от мобильной сети, Android-ограничений фоновой работы, состояния VK-звонка, TURN-квот и настроек VPS.

Если возникла проблема, приложите к issue отчёт из раздела «Информация», скриншот вкладки «Логи», версию APK, ABI сборки и описание сети. Мелкие повторяющиеся ошибки в логах не всегда означают поломку, если туннель остаётся активным.

Important

Назначение проекта

Приложение является техническим инструментом для защищённого туннелирования собственного трафика через ваш сервер. Автор не призывает использовать WDTT для противоправных целей или нарушения правил сторонних сервисов.


Лицензия

Этот проект распространяется под лицензией GNU General Public License v3.0.

About

WireGuard‑туннель через DTLS‑медиарелей ВК TURN‑серверов: трафик проходит от клиента к вашему личному VPS‑серверу через промежуточные медиарелей‑серверы ВК.

Topics

Resources

License

Stars

Watchers

Forks

Contributors