Turnable: VPN/прокси через TURN (обход БС)

ну так попробуй оригинальную прогу
она вроде как попроще но подзаброшена и direct там попятили

Подскажите, способ еще рабочий?
делал се как указано в репозитории. Для теста развернул на ру впс, скачал последний релиз 0.4.1, сделал пару ключей, создал два файла.
На андройд скачал Termux там выполнил все по инструкции.
Все вроде запустилось, есть dtls server handshake completed
relay handshake completed
peer online … total=10
В клиенте WG поменял адрес сервера на 127.0.0.1:5080
но при подключении нет входящих пакетов.
может где то то что то забыл?

{
  "routes": [
    {
      "id": "wireguard",
      "address": "127.0.0.1",
      "port": 51820,
      "socket": "udp",
      "transport": "none",
      "encryption": "handshake",
      "name": "WireGuard"
    }
  ],
  "users": [
    {
      "uuid": "d5bde5e5-4501-4e37-9e2a-fd6be5e223bf",
      "allowed_routes": ["wireguard"],
      "username": "test",
      "type": "relay",
      "peers": 10
    }
  ]
}
{
  "platform_id": "vk.com",
  "call_id": "call_id",
  "priv_key": "key",
  "pub_key": "key",
  "relay": {
    "enabled": true,
    "proto": "dtls",
    "cloak": "none",
    "public_ip": "ipVPS",
    "port": 56000
  },
  "p2p": {
    "enabled": false,
    "username": "test",
    "cloak": "none"
  },
  "provider": {
    "type": "json",
    "path": "store.json"
  }
}

проверялось все не на БС а просто на обычно интернете.

с винды перепробуй
на андроиде что-то не аллё
и х.з. что и почему

Не подскажите, как под виндой правильно url с параметрами передать? Делаю turnable client -l 127.0.0.1:1080 turnable://… и получаю гору ошибок вида ‘pub_key’ is not recognized as an internal or external command. С кавычками тоже не катит.
ps: сработал только конфиг в json формате.

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

х.з. может и экранизации дело, т.е. правильные кавычки непойми где нужны… я не нашёл как

как строку, только 0.33 версия работала. - но там полная несовместимость конфига, т.е. нельзя сгенерить в новой а в старой запускать. и наеборот.
…

Автор утверждал, что это самый безглючный вариант через turn, хочется надеяться что в будущем так и будет. :wink: Может андроид версию таки допилит…

Всем привет умногоуважаемый ALL!
Автору(ам) БОЛЬШОЕ спасибо за труд. Очень полезную вещь сделал(и).
Долго мучался на мобильном инете, что шифр.траф квн зарезают до 200-500кБит/с. А тут такой шикарный подарок…
На Android показалось неудобно с Termux, поэтому навайбкодил обертку:

Естт еще WireTurn, который с Turnable работает.

подкрутили чтото с direct утырки…
на 92байта принятого всё кончается…
амнезия с кашерным i1 тоже не помогает - только спамит в лог непонятное. ванильный wg молча не может…

а автор подпропал - видать более другие дела поглотили.

Кому-нибудь удалось андроид версию запустить под termux?

Да, все нормально, если по гайду от Автора делать.
Мне показалось неудобно работать так, написал приложение, ссылка 3 поста выше.
2 MistiK:
спасибо,
предпочитаю OpenVPN.
Наверное следующим будет Android GUI wrapper for Turnable relay client + OpenVPN

У меня по гайду только клиент под windows работает. Под андроид в termux вылетает следующее

Спойлер

2026-05-23 21:54:26.347 [INFO] starting turnable client connection_type=relay
2026-05-23 21:54:37.182 [WARN] vk authorize anonymous flow failed error=Post “https://login.vk.com/?act=get_anonym_token”: lookup “login.vk.com”: lookup login.vk.com: i/o timeout
2026-05-23 21:54:37.182 [ERROR] failed to start vpn client: connect: Post “https://login.vk.com/?act=get_anonym_token”: lookup “login.vk.com”: lookup login.vk.com: i/o timeout

Клиентские конфиги идентичны. Может подскажете в чем проблема?

ну так отключи “частный dns” в ведре

Он отключен, и к тому же творения других авторов vk-turn-proxy работают без проблем. У меня Android 13.1 если что, рута нет, termux 0.118.3 F-droid.
Еще варианты?

На виндовсе не пробовал подключаться, но на андроид по гайду из гитхаб не работал у меня. Я создал store и config файлы на сервере с помощью встроенного в turnable bootsrtap в терминале, и все заработало на андроид.

Как Вам и сказали: у Вас явная проблема с ДНС в termux. Спросите у ИИ как решить, он поможет.

Тоже так делал, но у меня в одном конфиге все, попробую раздельно, может в этом причина.

Ну ping vk.com и nslookup vk.com как-то резолвят вроде и без ИИ. :grinning_face_with_smiling_eyes:

Раз так. Согласен явно проблема шире.

Подтверждаю: при первой сборке Android GUI wrapper for Turnable симптомы были такие же (в Turnable не работал DNS).

go package net: ignoring GODEBUG=netdns=cgo as the binary was compiled without support for the cgo resolver

“Исскувственный наставник” предложил доустановить NDK в SDK Tools и собрать с CGO_ENABLED=1.
И тут же “О чудо” заработало…
Вот подробнее:

Спойлер

Похоже, это не проблема login.vk.com и не проблема самого конфига Turnable. Это типичная проблема DNS resolver в Go-бинарнике на Android/Termux.ping и nslookup в том же Termux могут работать, но это не доказывает, что DNS будет работать внутри turnable, потому что они могут использовать другой resolver/другой путь резолва. Go-приложение использует resolver из пакета net: либо pure Go resolver, который сам читает DNS-конфиг и шлёт DNS-запросы напрямую, либо cgo/native resolver, который вызывает системные функции вроде getaddrinfo. Это официально описано в документации Go net: pure Go resolver отправляет DNS-запросы к серверам из /etc/resolv.conf, а cgo resolver использует системные C library routines.На Android/Termux это особенно критично. Если бинарник собран как CGO_ENABLED=0, либо как статический/pure-Go/netgo binary, он может пытаться резолвить DNS не через Android system resolver, а напрямую через не тот DNS-конфиг. В результате ping login.vk.com работает, nslookup login.vk.com работает, а сам turnable получает:lookup login.vk.com: i/o timeoutУ нас была очень похожая проблема при standalone Android-сборке Turnable: первый бинарник был собран без cgo, и Go resolver лез в неправильный DNS. После пересборки Android-бинарника с CGO_ENABLED=1 через Android NDK и запуском с native/cgo resolver DNS заработал.Проверить можно так:GODEBUG=netdns=2 ./turnable client …или так:GODEBUG=netdns=cgo+2 ./turnable client …Если в выводе будет что-то вроде:go package net: ignoring GODEBUG=netdns=cgo as the binary was compiled without support for the cgo resolverзначит бинарник собран без cgo, и заставить его использовать cgo resolver уже нельзя — надо пересобирать.Ещё можно посмотреть build info:go version -m ./turnableНужно обратить внимание на строки:GOOS=…
GOARCH=…
CGO_ENABLED=…Если там:CGO_ENABLED=0то это главный подозреваемый.Правильный вариант для Android/Termux — собрать именно Android-бинарник с cgo через Android NDK, например для arm64:export GOOS=android
export GOARCH=arm64
export CGO_ENABLED=1
export CC=/path/to/android-ndk/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android26-clanggo build -trimpath -ldflags=“-s -w” -o turnable-android-arm64 ./cmdДля Windows host путь к компилятору будет примерно такой:$env:GOOS=“android”
$env:GOARCH=“arm64”
$env:CGO_ENABLED=“1”
$env:CC=“C:\Users\\AppData\Local\Android\Sdk\ndk\\toolchains\llvm\prebuilt\windows-x86_64\bin\aarch64-linux-android26-clang.cmd"go build -trimpath -ldflags=”-s -w" -o turnable-android-arm64 ./cmdПосле сборки снова проверить:go version -m ./turnable-android-arm64Должно быть:CGO_ENABLED=1И при запуске для диагностики:GODEBUG=netdns=cgo+1 ./turnable-android-arm64 client …ожидаемо увидеть что-то вроде:go package net: using cgo DNS resolverВременный костыль, если пересобрать нельзя: попробовать прописать DNS так, чтобы pure Go resolver его видел. Но на Android/Termux это ненадёжно, потому что nslookup может использовать $PREFIX/etc/resolv.conf, а Go pure resolver на Unix ожидает /etc/resolv.conf по своей логике. Поэтому правильное решение — не лечить nslookup, а пересобрать Turnable под Android с cgo/native resolver.Ещё возможный нюанс: если используется VPN/Private DNS/AdGuard/NetGuard/фаервол, pure Go resolver может слать прямые UDP-запросы на 53-й порт, а они могут резаться. Native Android resolver обычно проходит корректнее, потому что использует системный DNS-стек Android. Поэтому симптом “ping/nslookup работает, а Go-программа получает DNS i/o timeout” вполне реален.

Кстати, а зачем Вам консоль? Чем мое GUI не заходит?
Отзывы и пожелания - приветствуются.

К любому труду отношусь с уважением. Но мне надо sing-box через этот туннель сопрячь. В идеале, чтобы turnable был встроен в sing-box.

Странно, у меня подобных проблем не было. По крайней мере пока не включен VPN - он правильно слал запросы к DNS моего провайдера вместо условного DNS google/yandex/cloudflare или чего-то там ещё, которых не было в БС.

И да, к слову пропал я из-за переводных (я в 10 классе лол) и ещё пару других причин которыя не буду озвучивать. Скорее всего начну дальше дорабатывать сия чудо дальше ± через пару дней, и дальше уже начну заниматься приложением.

Там всего-то осталось переделать конфигурацию в более презентабельный и адекватный вид, т.е. чтобы рут конфига сервера был массивом и все параметры были применимы только к отдельному инстансу, а не ко всем сразу, и другие подобные мелочи. (ну и ещё нормальная документация сверху)