vk-turn-proxy-android

Introduction: Android-приложение на основе undefined
More: Author   ReportBugs   
Tags:

Android-приложение под ядро turn-proxy.

О проекте

Проброс трафика WireGuard/Hysteria через TURN-серверы.

Как это работает: Пакеты шифруются DTLS 1.2, затем параллельными потоками через TCP или UDP отправляются на TURN-сервер по протоколу STUN ChannelData. Оттуда трафик по UDP пересылается на ваш сервер, где расшифровывается и передается в WireGuard. Логин/пароль для TURN генерируются автоматически из ссылки на звонок.

Внимание: Проект предназначен исключительно для учебных целей!

Настройка

Что понадобится:

  1. Ссылка на звонок: Действующая ссылка на Звонок.
    • Совет: На некоторых сервисах ссылка действует долго, если не нажимать "Завершить звонок для всех".
  2. VPS: Сервер с установленным WireGuard (можно использовать панели вроде s-ui или 3X-UI с поддержкой Hysteria2).
  3. Приложение: Собрать проект или использовать готовый APK.

Настройка сервера

Для простого запуска используйте:

./server-linux-amd64 -listen 0.0.0.0:56000 -connect 127.0.0.1:<порт_wg_или_h2>

Запуск в фоновом режиме (Рекомендуется)

Для того чтобы сервер работал постоянно (даже после закрытия терминала) и записывал логи, используйте nohup:

nohup ./server-linux-amd64 -listen 0.0.0.0:56000 -connect 127.0.0.1:10002 > server.log 2>&1 &

Преимущества такого запуска:

  • Фоновый процесс: Программа не занимает окно терминала.
  • Автономность: Благодаря nohup сервер не выключится при разрыве SSH-соединения.
  • Логирование: Все события и возможные ошибки сохраняются в файл server.log, что удобно для последующего анализа работы.

Настройка Android-клиента

  1. WireGuard:
    • В конфиге смените адрес сервера на 127.0.0.1:9000.
    • Установите MTU = 1280.
    • Добавьте TURN Proxy в список исключений WireGuard.
  2. TURN Proxy:
    • Peer (IP:Port): IP вашего VPS и порт серверной части (например, 1.2.3.4:56000).
    • Ссылка: Вставьте вашу ссылку на звонок.
    • Потоки (-n): Рекомендуется от 1 до 16.
    • Использовать UDP (-udp): Рекомендуется включить для стабильности.
    • Локальный порт: По умолчанию 9000.

Нажмите ЗАПУСТИТЬ ПРОКСИ. При успешном подключении: Established DTLS connection!


Решение проблем

  • Ошибки DNS: Попробуйте настроить VPN только для конкретных приложений в клиенте WireGuard.
  • Режим Raw: Переключатель сверху позволяет вводить аргументы вручную (например, -turn для указания сервера).
  • Нестабильное соединение:
    • Попробуйте отключить UDP.
    • Уменьшите количество потоков до -n 1 (лимит на некоторых сервисах обычно бывает около 5 Мбит/с).

Использование с V2Ray

Вместо чистого WireGuard можно использовать любое ядро с его поддержкой (Xray, Sing-box).

Примеры конфигураций

Клиент (JSON)
{
    "inbounds": [
        {
            "protocol": "socks",
            "listen": "127.0.0.1",
            "port": 1080,
            "settings": { "udp": true },
            "sniffing": { "enabled": true, "destOverride": ["http", "tls"] }
        }
    ],
    "outbounds": [
        {
            "protocol": "wireguard",
            "settings": {
                "secretKey": "<client_secret_key>",
                "peers": [
                    {
                        "endpoint": "127.0.0.1:9000",
                        "publicKey": "<server_public_key>"
                    }
                ],
                "domainStrategy": "ForceIPv4",
                "mtu": 1280
            }
        }
    ]
}
Сервер (JSON)
{
    "inbounds": [
        {
            "protocol": "wireguard",
            "listen": "0.0.0.0",
            "port": 51820,
            "settings": {
                "secretKey": "<server_secret_key>",
                "peers": [{ "publicKey": "<client_public_key>" }],
                "mtu": 1280
            }
        }
    ],
    "outbounds": [
        { "protocol": "freedom", "settings": { "domainStrategy": "UseIPv4" } }
    ]
}

Лицензия

Этот проект распространяется под лицензией GPL-3.0. Подробности в файле LICENSE.

Apps
About Me
GitHub: Trinea
Facebook: Dev Tools