README.md

July 29, 2026 · View on GitHub

WDTT Plus — WireGuard over TURN Tunnel


Android 10+ Target API 35 Go Version Kotlin License GPLv3

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

Скриншоты

Содержание

1. Начало работы и знакомство

Сюда идёт всё, что нужно пользователю, чтобы понять суть проекта и быстро его запустить.

2. Настройка и деплой (Техническая часть)

Шаги по установке, настройке окружения и безопасности.

3. О проекте

WDTT Plus: отличия от оригинала

Этот репозиторий — дальнейшая переработка проекта amurcanov/proxy-turn-vk-android. Основа, идея и значительная часть исходной реализации принадлежат автору оригинального WDTT. Проект сохраняет GPLv3 и ссылку на первоисточник.

Ниже перечислены только крупные отличия WDTT Plus; общие возможности вроде VpnService, TURN/DTLS, WRAP/RTP AEAD, базового деплоя, тем и лог-вьюера повторно не выдаются за изменения модификации.

Что изменено в модификации

  • Расширенное управление сервером: клиентов и основные параметры сервера можно обслуживать прямо из приложения без Telegram. Клиента можно перенести отдельно через QR, камеру, изображение, файл, Android Share или код передачи; создать с автоматическим или заданным вручную паролем и безопасно сменить пароль без перезапуска сервера. Сервер защищён от всплесков подключений и поддерживает пределы мощности и скорости для отдельного доступа. Telegram-бот остаётся альтернативным удалённым пультом с теми же основными операциями.
  • Обновление, восстановление и перенос сервера: повторный деплой предлагает безопасное обновление с сохранением данных или чистую установку. Перед обновлением и прямым импортом создаётся страховочная копия; служба и целостность доступов проверяются, а при ошибке выполняется откат. Частичный экспорт переносит базу WDTT Plus, полный дополнительно сохраняет WireGuard-ключи сервера.
  • Режимы пользователя и администратора: режим «Юзер» оставляет подключение по ссылке или вручную, управление VPN, исключения и логи без серверных полей. Режим «Админ» открывает деплой и полное управление собственным сервером.
  • Ссылки и перенос между устройствами: подключение можно передать ссылкой, файлом или QR-кодом, а получить — также камерой и из изображения. Администратор может отправить клиентский доступ ещё до добавления VK-хеша — получатель заполнит его у себя перед запуском. Защищённая короткая ссылка может сразу добавить выданный доступ и предложить автоматическое либо ручное заполнение VK-хешей. Импорт занимает свободный VPN-профиль или предлагает выбрать заменяемый, сохраняет название и при наличии показывает установленный владельцем предел мощности. Полученный профиль показывает срок и доступное действие, а после окончания доступа не запускает VPN. Для администратора доступен защищённый паролем перенос локальных настроек.
  • VK-хеши и независимые провайдеры: приложение проверяет каждый слот звонка, при необходимости проходит капчу и показывает отдельный результат. Несколько ссылок или хешей можно вставить из буфера сразу, не затирая заполненные поля без подтверждения. TURN-данные запрашиваются по порядку: быстрый VKCalls без капчи, собственные legacy-реквизиты (если включены), затем выбранные встроенные legacy Client ID; пользовательский secret хранится защищённо.
  • Настраиваемый выходной IP: из Android и Telegram-бота управляются прямой выход, прокси VPS, внешний TCP-прокси, бесплатный WARP, готовый VPN/WireGuard-файл и WireGuard-выход через другой сервер. Приложение показывает состояние режимов на сервере, проверяет конфликтные маршруты перед включением и откатывается при ошибке.
  • Маршрутизация приложений: ЧС и БС являются отдельными списками: в ЧС отмеченные приложения обходят VPN, в БС только отмеченные идут через VPN. Есть быстрый подбор приложений, чувствительных к VPN; смена режима перезапускает только WireGuard-слой.
  • Доверенные сети Wi-Fi: VPN может автоматически переходить в ожидание в выбранных домашних или рабочих сетях и восстанавливать прежнее подключение после выхода из них. Восстановление устойчивее работает в фоне и после пробуждения телефона; ручное отключение отменяет его, а неопределённая сеть никогда не отключает VPN.
  • Captcha и устойчивость транспорта: современный VKCalls используется первым и обычно не требует капчи; временный flood не создаёт повторный шквал запросов. Если нужен legacy-резерв, авто-режим начинает с Auto WebView и переходит к Go v2 и ручному WebView только при необходимости. Клиент использует актуальные адреса vk.ru, выбирает рабочий DNS-путь и перебирает резервные TURN-соединения по UDP, TCP и TLS.
  • Диагностика телефона и VPS: проверка устройства отдельно тестирует системный DNS, DNS-путь клиента, основной VKCalls и резервные VK/OK-узлы из сети телефона. Серверная диагностика сосредоточена на службе, UDP-портах, маршрутизации и выходном интернете; доступ к VK/OK с самого VPS показывается только справочно и не создаёт ложную ошибку.
  • Самостоятельная сборка WDTT Plus: приложение использует пакет com.wdtt.plus, собственный канал обновлений и отдельное оформление. Gradle пересобирает Android libclient.so и сервер для деплоя из исходников, а release APK получает понятные имена для каждой ABI.

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

  • Ориентир совместимости: WDTT Plus смотрит вперёд и ориентируется на Android 10+ с современными требованиями Android SDK. targetSdk 35 — это целевой API сборки, а не верхний предел Android: новые версии Android должны поддерживаться по мере тестирования, включая отдельную проверку нативной части на устройствах с 16 KB page size. Android 9 и ниже не являются основной целью поддержки.
  • Проверка устройства: при первом запуске приложение в фоне проверяет только архитектурные условия — Android, ABI, нативный клиент, память и размер страницы памяти — и предупреждает, если есть риск несовместимости. В «Инфо» доступна ручная расширенная проверка версии WDTT Plus, WebView, разрешений Android, системного и клиентского DNS, доступа к VK/OK и текущего состояния VPN.
  • Полноценный VPN-режим: приложение использует VpnService и WireGuard GoBackend, поэтому трафик выбранных приложений проходит через системный VPN-интерфейс без ручного импорта конфигов.
  • Три профиля подключения: VPN 1, VPN 2 и VPN 3 хранят отдельные настройки туннеля и деплоя; профиль можно переименовать долгим нажатием в боковых настройках. Название активного профиля видно в заголовках вкладок, передаче подключения, плитке быстрых настроек и активном уведомлении туннеля. Полученный профиль может иметь собственный предел мощности, который показывается рядом с регулятором и не влияет на остальные профили.
  • Корректная передача VPN-слота: если Android отключает WDTT Plus VPN или другой VPN забирает системный VPN-слот, WDTT Plus останавливает транспорт и переводит плитку/виджет в неактивное состояние. Плитка запускает VPN как с обычными настройками, так и в режиме ссылки, а при активном подключении показывает выбранный профиль вместе с уведомлением туннеля.
  • Доверенные сети Wi-Fi: в боковых настройках можно добавить текущую сеть или точный SSID вручную. В доверенной сети системный VPN-интерфейс снимается и интернет работает напрямую, а тихое уведомление сохраняет режим ожидания. После перехода на мобильную или другую Wi-Fi сеть прежний VPN-профиль восстанавливается. Android запрашивает доступ к местоположению только потому, что относит имя Wi-Fi к чувствительным данным; координаты приложение не получает.
  • TURN/DTLS-транспорт: нативный Go-клиент получает временные TURN-учётные данные VK-звонка и поднимает DTLS-соединения к relay-серверу, через который передаётся трафик до вашего сервера. Если основной TURN-путь не отвечает, клиент пробует другие выданные адреса и доступные варианты UDP, TCP или TLS.
  • Импорт VK-ссылок через «Поделиться»: ссылку VK-звонка можно отправить прямо в WDTT Plus. Приложение извлечёт хеш после /call/join/, заполнит следующий слот VK-хеша и покажет, какой номер был обновлён.
  • Передача и получение подключения: текущий VPN-профиль отправляется как wdtt://-ссылка, файл или QR-код. Приложение принимает эти данные через Android, камеру, галерею и выбор файла, сохраняя совместимость со старыми ссылками. Клиентский доступ можно передать без VK-хеша, чтобы получатель добавил собственный перед запуском. Защищённая короткая ссылка также может добавить выданный профиль без VK-хешей, после чего приложение предложит получить их автоматически или ввести вручную.
  • Проверка VK-хешей: окно VK-хешей умеет проверить, жив ли групповой звонок, решить VK Captcha в процессе проверки, показать понятный статус по каждому полю, очистить отдельный слот и скопировать один или все заполненные хеши. Из буфера можно вставить до четырёх ссылок или хешей сразу с выбором: заполнить свободные поля или заменить набор.
  • TLS/HTTP-отпечаток: по умолчанию используется Firefox fingerprint, при необходимости его можно переключить в настройках приложения.
  • WRAP без захардкоженного ключа: внешний RTP AEAD/ChaCha20-Poly1305 слой выводится из пароля подключения через HKDF. Один пароль — один WRAP-ключ, ключ не хранится в APK.
  • RTP AEAD обфускация: транспорт маскируется под RTP/WebRTC аудиотрафик с OPUS payload type, а полезная нагрузка шифруется AEAD-слоем поверх DTLS/WireGuard.
  • Деплой с телефона: вкладка «Деплой» подключается к серверу по SSH, загружает wdtt-server, создаёт systemd-сервис, включает NAT/firewall и открывает рабочие UDP-порты.
  • SSH по паролю или ключу: установка, подключение без установки, управление клиентами, перенос сервера и инструменты выходного IP работают как с SSH-паролем, так и с приватным ключом OpenSSH/PEM. Поддерживаются распространённые ключи OpenSSH ed25519, rsa, ecdsa и PEM-ключи RSA/EC/PRIVATE/ENCRYPTED PRIVATE KEY; в поле нужно вставлять приватный ключ целиком с BEGIN/END, а не публичную строку ssh-ed25519 или ssh-rsa. Способ входа выбирается явно; в режиме ключа пароль можно оставить для sudo, если он требуется сервером. Ключ можно вставить, прочитать из файла или буфера обмена и проверить перед сохранением. Основной и дополнительный VPS хранят свои ключи отдельно в защищённом хранилище Android; ключи не отправляются на сервер и не входят в перенос настроек администратора.
  • Подключение к готовому серверу: если сервер уже установлен, приложение проверяет SSH-доступ и главный пароль, показывает отличия и после подтверждения восстанавливает локальные поля. Если серверный профиль владельца был сохранён из переименованного VPN-профиля, это название также вернётся в приложение; стандартные VPN 1/2/3 локальное имя не затирают. Этот режим работает только от сервера к приложению и ничего не записывает на сервер.
  • Парольная модель доступа: сервер поддерживает главный пароль, настраиваемый лимит пользовательских паролей, 16-символьную генерацию, ручное задание пароля с проверками, привязку к устройству и срок действия. Клиентов можно создавать, импортировать, экспортировать, отключать, продлевать, отвязывать, удалять и менять им пароль из приложения или Telegram-бота.
  • Горячее обновление WRAP-ключей: создание, удаление и истечение паролей обновляют набор WRAP-ключей на сервере без перезапуска ядра.
  • Исключения приложений: ЧС и БС хранят независимые наборы. В ЧС отмеченные приложения работают напрямую, в БС только отмеченные направляются в VPN; изменения применяются быстрой перезагрузкой WireGuard.
  • Рабочая цепочка VK: сначала приложение пробует современный отключаемый VKCalls без капчи, затем собственный legacy Client ID и выбранные встроенные legacy ID. Для legacy-провайдеров Auto WebView решает обычную проверку, Go v2 используется как следующий автоматический этап, а ручной WebView остаётся fallback для slider/puzzle и других строгих проверок.
  • Живой лог-вьюер: события Go-клиента, выбранного VK-провайдера, переходов между резервами, DTLS, WireGuard, WRAP, капчи, деплоя и статистики отображаются с группировкой повторов. Временные сбои показываются как предупреждения, а красным выделяются критические ошибки. После отключения итоговый трафик и доступная причина сохраняются, а завершённая сессия отображается неактивной.
  • Фоновая устойчивость: Foreground Service, WakeLock, WifiLock, мягкий reconnect по валидированной сети и проверка после пробуждения помогают переживать Doze, смену Wi-Fi/LTE, DNS-сбои до VK и падение нативного процесса без агрессивных перезапусков. Выход из доверенной Wi-Fi дополнительно контролируется до фактического восстановления VPN.
  • VK Auth fallback: собственные legacy-реквизиты не заменяют быстрый VKCalls и встроенную цепочку, а добавляются между ними как отдельный резерв. Ошибка собственного Client ID явно отображается в журнале, после чего клиент пробует выбранные встроенные ID.
  • DNS fallback: клиент проверяет основной и резервный Yandex DNS по UDP, затем по TCP, а при их недоступности использует системный DNS устройства.
  • Темы и оформление: Material 3, Jetpack Compose, Inter, светлая/тёмная тема, Dynamic Colors на Android 12+ и встроенные палитры.
  • Автообновления: приложение проверяет релизы WDTT Plus при запуске, при возврате из фона не чаще одного раза в 5 минут и каждые 30 минут, если остаётся открытым. Подходящий APK скачивается внутри приложения и передаётся системному установщику Android. Если APK текущей версии был заменён в релизе, WDTT Plus сверяет SHA-256 установленного APK со всеми APK релиза и предлагает исправление текущей версии.

Как это работает

Android-приложение → VpnService / WireGuard GoBackend → локальный UDP 127.0.0.1:9000
      → Go-клиент WDTT → WRAP RTP AEAD → VK TURN / DTLS → wdtt-server на сервере → интернет
  1. Приложение запускает нативный Go-клиент libclient.so и передаёт ему адрес сервера, VK-хеши звонка, пароль туннеля и количество потоков.
  2. Go-клиент выводит WRAP-ключ из пароля подключения, получает TURN-учётные данные через VK-звонок, при необходимости решает VK Smart Captcha и устанавливает DTLS-соединения через TURN relay.
  3. Внешний WRAP-слой упаковывает DTLS-пакеты в RTP AEAD/ChaCha20-Poly1305, чтобы ключ не был захардкожен в APK и мог отличаться у каждого пароля.
  4. Первый рабочий канал запрашивает у сервера WireGuard-конфигурацию через GETCONF, передавая локальный порт, device-id и пароль подключения.
  5. Сервер проверяет пароль: главный пароль работает как владелец, сгенерированные пароли имеют срок действия и привязываются к первому устройству.
  6. Android-часть парсит полученный WireGuard-конфиг, поднимает системный VPN-туннель и применяет исключения приложений.
  7. Watchdog следит за Go-процессом, активными воркерами и сетевыми изменениями, перезапуская транспорт при сбоях.

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

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

Если на сервере уже есть установленный WDTT Plus, приложение покажет предупреждение перед деплоем. Режим «Обновить с сохранением» заменит серверный бинарник и применит настройки из текущих полей деплоя, сохранив выданные ссылки, привязки устройств, историю и WireGuard-ключи. Режим «Начать с нуля» удалит серверные данные WDTT Plus и развернёт чистую установку.

Для переноса на другой сервер во вкладке «Деплой» используйте блок «Перенос сервера». Частичный экспорт сохраняет базу WDTT Plus: профиль владельца, Telegram-настройки, клиентов, привязки устройств, статистику и историю. Полный экспорт дополнительно требует и сохраняет WireGuard-ключи сервера. Старые wdtt:// ссылки останутся рабочими без перевыдачи, если в них был домен, DNS указывает на новый сервер и сохранены прежние порты; для ссылок со старым IP или при смене портов создайте новые. Импорт можно выполнить при деплое или на работающем сервере: режим «Заменить» подходит для переезда, режим «Добавить» переносит отсутствующие записи, проверяет конфликты устройств и назначает свободные внутренние IP. Перед изменением создаётся страховочная копия, после импорта проверяются данные и служба, а при ошибке выполняется откат. Настройки выходного IP, прокси, WARP и VPN/WireGuard-файлы серверным экспортом не переносятся.

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

VK → группа → звонок → ссылка приглашения → код после /join/
  1. Откройте VK и создайте пустую группу или используйте существующую.
  2. Начните групповой звонок.
  3. Отправьте ссылку приглашения в WDTT Plus через системное меню «Поделиться» или скопируйте её вручную.
  4. Приложение само разбирает полную ссылку vk.ru/call/join/... (и старый вариант vk.com/call/join/...), убирает лишние параметры и заполняет первое свободное поле VK-хеша в активном VPN-профиле.
  5. Если такой хеш уже добавлен, WDTT Plus покажет ошибку и не создаст дубль. Если все 4 поля заняты, будет обновлён следующий слот по кругу с предупреждением о перезаписи.
  6. Можно использовать до 4 хешей одновременно для распределения нагрузки и увеличения доступного числа потоков.

Important

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

Деплой сервера

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

Android → SSH → /tmp/deploy.sh + /tmp/wdtt-server → /usr/local/bin/wdtt-server
      → systemd wdtt.service → wdtt0 + NAT + firewall

По умолчанию используются:

  • 56000/udp — DTLS-сервер WDTT Plus.
  • 56001/udp — внутренний WireGuard-порт сервера.
  • 9000/udp — локальный порт Android-клиента.
  • 10.66.66.0/24 — подсеть WireGuard-устройств.

Если включить ручное управление портами, эти значения можно изменить в «Секретах».

Управление доступом

Сервер WDTT Plus поддерживает две модели подключения:

  • Главный пароль: задаётся при деплое и используется владельцем сервера.
  • Сгенерированные пароли: создаются из приложения или Telegram-бота, имеют срок действия, привязываются к первому устройству и обновляют WRAP-ключи на сервере без перезапуска.

В блоке «Клиенты и сервер» вкладки «Деплой» можно искать и фильтровать клиентов, создавать доступы с автоматическим или ручным паролем, редактировать параметры, срок и привязку устройства, менять пароль, а также передавать подключение ссылкой, файлом или QR-кодом. Там же доступны экспорт и импорт отдельного клиента для ручного переноса на другой сервер, история, трафик, настройки сервера, очистка устаревших записей и сервисные действия. После импорта приложение перечитывает список сервера и выбирает добавленного клиента.

Экспорт отдельного клиента переносит только данные доступа: пароль, название, имеющиеся VK-хеши, срок и состояние. Устройство, WireGuard-ключи, статистика, история, адрес, порты и серверные параметры не копируются; после импорта клиент использует настройки нового сервера и привязывается к устройству при первом подключении.

Обычные изменения применяются работающим сервером сразу и не прерывают остальных клиентов: Android вызывает admin-команды по SSH, а они обращаются к закрытому локальному сокету wdtt-server, не открывая отдельный управляющий порт в сеть. Явный перезапуск сервиса оставлен отдельным подтверждаемым действием. При удалении или истечении пароля соответствующий WRAP-ключ удаляется из памяти сервера.

Дополнительные возможности

Передача между устройствами

Раздел «Передать или получить» находится в боковых настройках. Пользователь может отправить активный VPN-профиль ссылкой, файлом или QR-кодом; на другом устройстве данные можно открыть напрямую, выбрать как файл, отсканировать камерой либо распознать на изображении из галереи. Доступ без VK-хеша тоже распознаётся и сохраняется, но перед запуском получатель должен добавить собственный. Приложение использует первый пустой профиль VPN, а если заняты все три — предлагает выбрать профиль и подтвердить замену. Названия профилей помогают отличать подключения в заголовках вкладок «Туннель» и «Деплой».

В режиме администратора там же можно передать все локальные VPN-профили, параметры деплоя, исключения и настройки выхода. Такой экспорт шифруется отдельным паролем; пароль не сохраняется и должен передаваться получателю отдельно. Резервная копия состояния самого сервера по-прежнему импортируется через «Деплой» → «Перенос сервера».

Warning

Ссылка и пользовательский QR всегда содержат пароль подключения и могут содержать VK-хеши. Не публикуйте их и передавайте только доверенному получателю.

Исключения приложений

Вкладка «Исключ.» показывает установленные приложения с поиском. В режиме ЧС отмеченные приложения обходят VPN, а в режиме БС только отмеченные приложения идут через VPN. ЧС и БС запоминают свои наборы галочек независимо; переключение активного режима быстро перезапускает только WireGuard-слой. Само приложение WDTT Plus и VK-клиенты всегда обходят VPN, чтобы не ломать TURN-соединение.

Капча

По умолчанию включены быстрый VKCalls и режим «Авто капча». Сначала TURN-данные запрашиваются через VKCalls без капчи. Если он недоступен, приложение пробует собственный legacy Client ID (если включён), затем встроенные legacy ID; только в этой резервной ветке используются Auto WebView, Go v2 и при необходимости ручной WebView. Slider/puzzle считается строгой проверкой VK и передаётся пользователю. Вместо автоматического решения можно выбрать «Всегда вручную». Ошибки мёртвой ссылки, запрета анонимного входа и переполненного звонка выводятся отдельно.

Логирование

Вкладка «Логи» показывает старт быстрого VKCalls, переходы на собственный и встроенный legacy-провайдеры, использование кэша TURN, решение капчи, DTLS-handshake, WRAP-состояние, готовность WireGuard, статистику активных воркеров и ошибки. Ожидаемый переход на резерв не помечается как критическая ошибка; повторяющиеся строки схлопываются в одну запись со счётчиком.

Note

Если видны DTLS handshake, но Активных: 0, чаще всего указан неправильный пароль подключения или используется сервер без актуального WRAP-протокола. Если часть потоков уже активна, одиночные DTLS timeout больше не считаются неверным паролем и не останавливают туннель.

Трафик

Сервер хранит суммарный трафик и дневную историю по главному паролю администратора и каждому выданному клиентскому паролю. Telegram-бот показывает трафик за сегодня, 7 дней, 30 дней и всё время; уведомление Android во время подключения показывает текущий входящий и исходящий трафик сессии.

Выходной IP и прокси

Первичная настройка выполняется во вкладке «Деплой» в блоке «Выходной IP и прокси». Эти режимы меняют IP, который видят сайты и сервисы у пользователей WDTT; сам адрес WDTT-сервера, входящие DTLS/SSH и ссылка подключения этим не скрываются.

Формы этого блока можно заполнить с сервера: приложение читает сохранённый профиль администратора и текущие конфиги прокси/WireGuard. При установке направление обратное — текущие поля приложения сохраняются на сервере; перед заменой отличающихся серверных значений приложение предупреждает об этом. Профиль также обновляется при включении режимов из приложения.

Блок показывает состояние режимов по данным сервера: активный выход отмечается зелёным, найденные сохранённые настройки — жёлтым, а конфликт или не поднятая служба — красным. Время проверки выводится в русском формате с 24-часовым временем. Перед включением внешнего TCP-прокси, WARP или WireGuard-варианта приложение проверяет, что на сервере не запущены несовместимые маршруты выхода. Кнопки проверки читают сервер и объясняют, найден ли режим и активен ли он; отключение, остановка и удаление доступны только по подтверждённому статусу.

  • Прямой выход — трафик пользователей выходит через текущий VPS.
  • Прокси VPS — создаёт SOCKS5/HTTP-прокси на этом же сервере. IP не скрывает, потому что выход остаётся через текущий VPS.
  • Внешний TCP-прокси — направляет обычные TCP-подключения через внешний SOCKS5/HTTP-прокси. UDP, QUIC и часть звонкового трафика могут идти напрямую.
  • Другой сервер — подключает отдельный VPS по WireGuard и выпускает пользователей через него. Это самый понятный вариант для отдельного выходного IP.
  • Бесплатный WARP — автоматически регистрирует WARP через wgcf и скрывает IP VPS без второго сервера. Приложение проверяет SHA-256 инструмента, подтверждение warp=on/plus, выполняет повторные подключения, включает проверку каждые пять минут и откатывается на прямой выход при неудачной установке. MTU задаётся в безопасном диапазоне 1280–1500, по умолчанию — 1280.
  • VPN/WireGuard-файл — подключает готовый WireGuard .conf как выход только для пользователей WDTT. Сюда можно вставить свой конфиг VPN-провайдера, WARP/WARP+ или другой совместимой службы, если это именно WireGuard-профиль с [Interface] и [Peer]. Команды запуска, неизвестные параметры и конфиги без маршрута 0.0.0.0/0 отклоняются; DNS самого VPS не изменяется.

В режимах выхода «Отключить» возвращает прямой выход через текущий VPS, но оставляет настройки на сервере для повторного включения. «Удалить» стирает рабочие файлы; для импортированного WireGuard-файла также удаляется сохранённая копия из серверного профиля.

Автоматический WARP использует неофициальный wgcf и требует принятия условий Cloudflare. Поддерживается Linux amd64, как и серверный бинарник WDTT Plus. Выходной IP Cloudflare общий и может меняться; страна и постоянный IP не гарантируются. Если WARP ограничен Cloudflare в регионе, приложение покажет ошибку и не оставит клиентов без прямого выхода.

Telegram-бот умеет посмотреть статус и диагностику выхода, вернуть режим direct, создать/проверить/остановить прокси VPS, включить внешний TCP-прокси, управлять бесплатным WARP и посмотреть или отключить WireGuard/VPN-выход.

Обновления

Приложение проверяет GitHub Releases WDTT Plus, показывает диалог новой версии и открывает страницу релиза в браузере. Проверка выполняется при запуске и периодически в фоне.

Отчёт для issue

В разделе «Информация» действие «Проверить устройство» одновременно проверяет совместимость и формирует полный диагностический отчёт: версию приложения, Android SDK, ABI и разрядность, размер страницы памяти, модель устройства, SoC, ROM, память, сеть, WebView и безопасные параметры запуска. Отчёт можно скопировать из окна проверки; адреса, пароли, токены и значения VK-хешей в него не включаются.

Note

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

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

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

Warning

Назначение проекта и дисклеймер

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

Авторы и участники этой модификации не призывают использовать WDTT Plus для обхода блокировок или нарушения правил каких-либо платформ, а также не несут ответственности за финальные сценарии использования утилиты пользователями. Любые специфические технические особенности приложения описаны как исследование сетевой архитектуры и протоколов.

Проект является полностью некоммерческим, не содержит платных функций, скрытых подписок или коммерческой выгоды.

Для разработки

Для полной сборки нужны актуальные Android SDK/NDK и Go 1.26. Проект собирается с targetSdk 35 и отдельными APK для arm64-v8a, armeabi-v7a, x86_64 и universal. Каноническая release-сборка:

./gradlew assembleRelease

Команда пересобирает нативный Android-клиент и Linux-сервер для деплоя, затем помещает подписанные APK в app/build/outputs/apk/release/named/. Для большинства современных устройств подходит WDTT-Plus-vN-arm64-v8a-release.apk, где N — номер выпуска.

В app/src/debug/java/com/wdtt/plus/WDTTPreviews.kt находятся Compose Preview основных вкладок. Они входят только в debug source set и не попадают в release APK.

Лицензия

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