vk-turn-proxy-android
Android-приложение под ядро vk-turn-proxy.
О проекте (Good TURN)
Проброс трафика WireGuard/Hysteria через TURN-серверы VK Звонков или Яндекс Телемоста.
Как это работает: Пакеты шифруются DTLS 1.2, затем параллельными потоками через TCP или UDP отправляются на TURN-сервер по протоколу STUN ChannelData. Оттуда трафик по UDP пересылается на ваш сервер, где расшифровывается и передается в WireGuard. Логин/пароль для TURN генерируются автоматически из ссылки на звонок.
Внимание: Проект предназначен исключительно для учебных целей!
Настройка
Что понадобится:
- Ссылка на звонок: Действующая ссылка на ВК Звонок (нужен аккаунт VK) или ссылка вида
https://vk.com/call/join/....- Совет: Ссылка действительна долго, если не нажимать "Завершить звонок для всех".
- VPS: Сервер с установленным WireGuard (можно использовать панели вроде s-ui или 3X-UI с поддержкой Hysteria2).
- Приложение: Собрать проект или использовать готовый 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-клиента
- WireGuard:
- В конфиге смените адрес сервера на
127.0.0.1:9000. - Установите
MTU = 1280. - Добавьте VK TURN Proxy в список исключений WireGuard.
- В конфиге смените адрес сервера на
- VK TURN Proxy:
- Peer (IP:Port): IP вашего VPS и порт серверной части (например,
1.2.3.4:56000). - Ссылка (VK Calls): Вставьте вашу ссылку на звонок.
- Потоки (-n): Рекомендуется от 1 до 16.
- Использовать UDP (-udp): Рекомендуется включить для стабильности.
- Локальный порт: По умолчанию
9000.
- Peer (IP:Port): IP вашего VPS и порт серверной части (например,
Нажмите ЗАПУСТИТЬ ПРОКСИ. При успешном подключении: Established DTLS connection!
Решение проблем
- Ошибки DNS: Попробуйте настроить VPN только для конкретных приложений в клиенте WireGuard.
- Режим Raw: Переключатель сверху позволяет вводить аргументы вручную (например,
-turnдля указания сервера). - Нестабильное соединение:
- Попробуйте отключить UDP.
- Уменьшите количество потоков до
-n 1(лимит VK обычно около 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.
