wireguard-turn-android

Introduction: Android GUI for WireGuard with TURN
More: Author   ReportBugs   
Tags:

English version (README.en.md)

Это специализированный форк официального клиента WireGuard Android с интегрированной поддержкой VK TURN Proxy.

Проект позволяет инкапсулировать трафик WireGuard в потоки DTLS/TURN, используя инфраструктуру VK Calls. Это обеспечивает надежный способ обхода сетевых ограничений при сохранении высокой производительности и стабильности.

Важное предупреждение

Данный проект создан исключительно в учебных и исследовательских целях.

Использование инфраструктуры VK Calls (TURN-серверов) без явного разрешения со стороны правообладателя может нарушать Условия использования сервиса и правила платформы VK. Автор проекта не несет ответственности за любой ущерб или нарушение правил, возникшее в результате использования данного программного обеспечения. Проект демонстрирует техническую возможность интеграции протоколов и не предназначен для нецелевого использования ресурсов сторонних сервисов.

Ключевые особенности

  • Нативная интеграция: TURN-клиент встроен напрямую в libwg-go.so для максимальной производительности и минимального расхода заряда батареи.
  • Два режима авторизации:
    • VK Link — получение учетных данных TURN через анонимные токены VK Calls.
    • WB — получение учетных данных TURN через WB Stream API (гостевая регистрация → создание комнаты → LiveKit ICE).
  • Многопоточная балансировка: Высокая производительность и надежность за счет параллельных потоков DTLS, агрегации по Session ID и Round-Robin балансировки исходящего трафика.
  • Кастомный DNS резолвер: Все HTTP и WebSocket запросы проходят через встроенный DNS резолвер с защитой сокетов через VPN.
  • Оптимизация MTU: Автоматическая установка MTU в 1280 при использовании TURN для стабильной работы инкапсулированных пакетов.
  • Автоматический рестарт при смене сети: TURN автоматически переподключается при переключении между WiFi и 4G/5G с защитой от частых перезапусков (debounce).
  • Быстрое восстановление сети: Сброс DNS и HTTP-соединений при смене сети для ускоренного переподключения.
  • Удобная настройка: Параметры TURN хранятся прямо в стандартных .conf файлах WireGuard в виде специальных комментариев-метаданных (#@wgt:).

Благодарности

Этот проект построен на базе:

  1. Official WireGuard Android — основное приложение VPN и пользовательский интерфейс.
  2. vk-turn-proxy — автор идеи и вдохновитель проекта.
  3. lionheart — исходная реализация режима WB для получения TURN credentials.

Важно: Для корректной работы этого клиента (агрегация потоков по Session ID) рекомендуется использовать серверную часть v2 из форка kiper292/vk-turn-proxy.

Сборка

# Требуется Go 1.25+ и Android NDK 29
$ git clone --recurse-submodules https://github.com/your-repo/wireguard-turn-android
$ cd wireguard-turn-android
$ ./gradlew assembleRelease

Настройка

Вы можете включить прокси в редакторе туннеля. Настройки будут добавлены в секцию Peer вашей конфигурации:

[Peer]
PublicKey = <key>
Endpoint = vpn.example.com:51820
AllowedIPs = 0.0.0.0/0

# [Peer] TURN extensions
#@wgt:EnableTURN = true
#@wgt:UseUDP = false
#@wgt:IPPort = 1.2.3.4:56000
#@wgt:VKLink = https://vk.com/call/join/...
#@wgt:Mode = vk_link              # Режим авторизации: vk_link или wb
#@wgt:PeerType = proxy_v2          # proxy_v2 | proxy_v1 | wireguard
#@wgt:StreamNum = 4
#@wgt:LocalPort = 9000
#@wgt:StreamsPerCred = 4           # Потоков на один кэш credentials

# Advanced settings (optional)
#@wgt:TurnIP = 155.212.199.166      # Переопределить IP TURN сервера
#@wgt:TurnPort = 19302              # Переопределить порт TURN сервера
#@wgt:WatchdogTimeout = 30          # Таймаут неактивности (сек, 0=отключен)

Примечание: Параметр PeerType определяет режим работы:

  • proxy_v2 (по умолчанию) — DTLS с передачей Session ID для агрегации потоков (сервер: kiper292/vk-turn-proxy)
  • proxy_v1 — DTLS без Session ID handshake (сервер: cacggghp/vk-turn-proxy)
  • wireguard — без DTLS, прямой relay (NoDTLS, для отладки или прямого подключения)

Watchdog Timeout: Параметр WatchdogTimeout активирует контроль неактивности для DTLS режима:

  • 0 (по умолчанию) — watchdog отключен
  • ≥5 — таймаут в секундах; если пакеты не получаются от TURN сервера в течение указанного времени, соединение переподключается
  • Применяется только к режимам proxy_v2 и proxy_v1

Для получения подробной технической информации см. info/TURN_INTEGRATION_DETAILS.md.

Donations / Поддержать разработчика

Are welcome here:

bitcoin BTC:

1ERKmMSyfxtKNNpU3TeaYCaJfDKY9s8jdX

ethereum ETH Ethereum (ERC20):

0xfa8fdae60010e3d6b446d7479a9ccacfc56c0936

tether USDT TRON (TRC20):

TMgojRMiya1nJ2uEtw8u7p5YZ9J7Ykdmd9

tether USDT APTOS:

0x741a8b707b75aa57dc603fa30d1c4750198866b0e9eb6d9a7a1a7dde8ec7f4d2

tontoken TON / USDT TON:

UQD0BQTBSVo19hrjKyXnRc61MXW0j9dTZaLEXOUJwxLT2qRQ

litecoin LTC:

La2H1YD2zKxqhsziGrx74anjJYwAQJ67er

Участие в проекте

Для перевода интерфейса используйте оригинальный WireGuard Crowdin. При обнаружении технических ошибок, связанных с интеграцией TURN, пожалуйста, создавайте Issue в этом репозитории.

Apps
About Me
GitHub: Trinea
Facebook: Dev Tools