VK Turn Proxy + FreeTurn + VLESS

Материал из wolfram
Версия от 08:54, 20 апреля 2026; Владимир (обсуждение | вклад) (Новая страница: « = VK Turn Proxy + FreeTurn + VLESS: полная инструкция = Инструкция описывает схему обхода белого списка через '''TURN-серверы ВКонтакте''': на '''EU-VPS''' (с установленным '''3x-ui''') запускается '''vk-turn-proxy server''', на '''Android''' — приложение '''FreeTurn''' ([https://github.com/samosvalishe/turn-proxy-android turn-proxy-androi...»)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Перейти к навигации Перейти к поиску

VK Turn Proxy + FreeTurn + VLESS: полная инструкция

Инструкция описывает схему обхода белого списка через TURN-серверы ВКонтакте: на EU-VPS (с установленным 3x-ui) запускается vk-turn-proxy server, на Android — приложение FreeTurn (turn-proxy-android) в связке с прокси-клиентом NekoBox.

Важно
Все команды на сервере — под root или через sudo.
Изменяйте IP/порты/UUID на собственные значения там, где указано.

Схема

  Android (FreeTurn + NekoBox)
  ┌──────────────────────────────────────────────────────────────────┐
  │                                                                  │
  │  Приложения                                                      │
  │      │                                                           │
  │  NekoBox VpnService (захват трафика)                             │
  │      │  VLESS/TCP                                                │
  │  NekoBox → 127.0.0.1:9000                                        │
  │      │                                                           │
  │  FreeTurn (vk-turn-proxy клиент)                                 │
  │      │  DTLS 1.2 поверх STUN ChannelData                         │
  └──────┼───────────────────────────────────────────────────────────┘
         │
         │  через TURN-серверы ВКонтакте
         │  (трафик выглядит как медиа-звонок)
         ▼
  EU-VPS  (vk-turn-proxy server :56000)
         │  TCP VLESS → 127.0.0.1:12766
         ▼
  Xray (3x-ui)  инбаунд VLESS :12766
         │
         ▼
  Интернет
Компонент Расположение Роль
vk-turn-proxy server EU-VPS Принимает DTLS-туннель с телефона, форвардит TCP в Xray
Xray (3x-ui) EU-VPS Терминирует VLESS, выпускает трафик в интернет
FreeTurn (APK) Android Устанавливает DTLS-сессию через TURN ВК на VPS
NekoBox Android VPN-клиент, пускает трафик через VLESS → FreeTurn

Часть 1. Сервер (EU-VPS)

1.1 Параметры (заменить на свои)

Параметр Пример Описание
Публичный IP xxx.xxx.xxx.xxx IP вашего VPS
Порт vk-turn-proxy 56000 Входящий UDP от FreeTurn
Порт VLESS-инбаунда 12766 Локальный TCP-порт инбаунда в Xray (3x-ui)
UUID VLESS 1f27eaa5-3668-4c79-... Из 3x-ui, используется в NekoBox на телефоне

1.2 Проверка инбаунда VLESS в 3x-ui

Убедитесь что инбаунд уже создан и активен. Параметры, которые нужно сверить:

Поле Значение
Протокол VLESS
Адрес прослушивания 127.0.0.1
Порт 12766 (или другой — ваш)
Транспорт TCP
Безопасность none
UUID клиента любой, запомните — понадобится на телефоне

Проверка что Xray слушает этот порт:

ss -tlnp | grep 12766

Ожидаемо:

LISTEN 0  4096  127.0.0.1:12766  0.0.0.0:*  users:(("xray-linux-amd6",...))

Если порта нет — откройте панель 3x-ui, проверьте что инбаунд включён (Статус = Включено).

1.3 Создание инбаунда VLESS в 3x-ui (если ещё не создан)

  1. Откройте панель: http://ВАШ_IP:2096 (порт панели по умолчанию).
  2. Inbounds → Add Inbound.
  3. Заполните поля:
    • Protocol: VLESS
    • Listen IP: 127.0.0.1
    • Port: 12766
    • Transmission: TCP
    • Security: none
    • В блоке Client: нажмите Add Client, скопируйте/запомните сгенерированный UUID.
  4. Нажмите Create (или Save).
  5. Проверка как в шаге 1.2.

1.4 Каталог и бинарник vk-turn-proxy

mkdir -p /opt/vk-turn-proxy
cd /opt/vk-turn-proxy

curl -fsSL -o server \
  "https://github.com/cacggghp/vk-turn-proxy/releases/latest/download/server-linux-amd64"

chmod +x server
./server -h

Ожидаемо — в справке есть флаги -listen, -connect, -vless.

1.5 Systemd-сервис

cat >/etc/systemd/system/vk-turn-proxy.service <<'EOF'
[Unit]
Description=VK Turn Proxy server -> Xray VLESS 127.0.0.1:12766
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
WorkingDirectory=/opt/vk-turn-proxy
ExecStart=/opt/vk-turn-proxy/server \
  -listen 0.0.0.0:56000 \
  -connect 127.0.0.1:12766 \
  -vless
Restart=always
RestartSec=5
NoNewPrivileges=true

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload
systemctl enable vk-turn-proxy.service
systemctl start vk-turn-proxy.service
systemctl status vk-turn-proxy.service --no-pager -l

Ожидаемо: Active: active (running), в логе строка Listening.

Важно про флаг -vless
Без него сервер пересылает сырой UDP (для WireGuard/Hysteria). С -vless — каждый поток smux оборачивается как TCP-соединение и уходит в Xray как обычный клиент VLESS.

1.6 Проверка после запуска

# UDP 56000 принимает входящие от FreeTurn
ss -ulnp | grep 56000

# TCP 12766 — Xray слушает
ss -tlnp | grep 12766

# Текущий ExecStart (убедиться что там -vless)
systemctl cat vk-turn-proxy.service | grep ExecStart

Оба порта должны быть заняты. Логи в режиме слежения:

journalctl -u vk-turn-proxy.service -f

При реальном подключении с телефона в логах появятся строки: KCP session established (server), smux session established (server).

Строки вида pipeConn: c1<-c2 copy error: EOF при рабочем туннеле — нормально: это штатное закрытие кратких TCP-сессий; не признак поломки.

1.7 Открытость порта у хостера

UFW у вас выключен, политика INPUT = ACCEPT — локально порт открыт. Если у хостера есть внешний файрвол (Cloud Firewall / Security Group) — убедитесь что входящий UDP 56000 разрешён.

1.8 Обновление бинарника

systemctl stop vk-turn-proxy.service

curl -fsSL -o /opt/vk-turn-proxy/server.new \
  "https://github.com/cacggghp/vk-turn-proxy/releases/latest/download/server-linux-amd64"
chmod +x /opt/vk-turn-proxy/server.new
mv /opt/vk-turn-proxy/server.new /opt/vk-turn-proxy/server

systemctl start vk-turn-proxy.service
systemctl status vk-turn-proxy.service --no-pager -l

Часть 2. Клиент (Android)

2.1 Что нужно установить

Приложение Откуда Роль
FreeTurn (turn-proxy-android) Releases Транспортный туннель через TURN ВК
NekoBox (NekoBoxForAndroid) Releases VPN-клиент VLESS, захват трафика приложений

Обоим приложениям при первом запуске разрешите создание VPN-профиля в системном диалоге Android.

2.2 Ссылка на звонок ВК

Ссылка на звонок — это «ключ» для получения учётных данных TURN.

Получить ссылку можно несколькими способами:

Способ Описание
Вручную в ВК Создать звонок в ВКонтакте, скопировать ссылку приглашения вида https://vk.com/call/join/...
Headless Creator на VPS Если настроен whitelist-bypass headless: tail -n 1 /opt/whitelist-bypass/vk-call-links.txt

Ссылка активна, пока звонок не закрыт. При каждом новом сеансе получайте свежую.

2.3 Настройка FreeTurn

Откройте вкладку Клиент в приложении.

Поле Что указать Пример
IP и порт vk-turn-proxy Публичный IP VPS и UDP-порт сервера xxx.xxx.xxx.xxx:56000
Ссылка на звонок Полная ссылка вида https://vk.com/call/join/... из предыдущего шага
Локальный адрес прослушивания Порт на самом телефоне, куда FreeTurn принимает VLESS‑TCP от NekoBox 127.0.0.1:9000
Важно
Локальный адрес 9000 — это не порт VLESS на VPS (12766). Это просто точка входа на телефоне между NekoBox и FreeTurn.

Нажмите кнопку запуска. Дождитесь в логах строки: Established DTLS connection!

Если вместо этого видите капчу — решите её в приложении (FreeTurn умеет автоматическую и ручную капчу).

2.4 Настройка NekoBox

Создание профиля VLESS

  1. Откройте NekoBox → вкладка Профили+ (добавить).
  2. Тип: VLESS.
  3. Заполните поля:
Поле Значение
Адрес (Server) 127.0.0.1
Порт (Port) 9000 (тот же, что в FreeTurn «Локальный адрес»)
UUID Из 3x-ui (шаг 1.2 / 1.3), скопируйте точно
Шифрование (Encryption) none
Транспорт (Transport) TCP
TLS Выкл / none

Сохраните профиль.

Подключение

  1. Выберите созданный профиль → нажмите Подключить.
  2. NekoBox поднимет VPN (Android-диалог — разрешить).
  3. Весь трафик или трафик выбранных приложений пойдёт через:
    NekoBox → VLESS → FreeTurn → TURN ВК → VPS → Xray → интернет.

Отбор приложений (Split tunneling)

В NekoBox: Настройки → Split tunneling — укажите, только каким приложениям нужен туннель. Либо оставьте полный VPN (все приложения).

2.5 Порядок запуска

Важен именно такой порядок:

  1. Запустить FreeTurn (клиент) → дождаться Established DTLS connection!
  2. Не останавливая FreeTurn, открыть NekoBox → подключить профиль VLESS.

Если запустить NekoBox первым — он попытается подключиться к 127.0.0.1:9000, куда FreeTurn ещё не слушает, и получит ошибку.

2.6 Если интернет не работает при активном туннеле

Симптом Что проверить
NekoBox не подключается FreeTurn работает? Порты совпадают? (FreeTurn local = NekoBox server port)
Сайты не открываются Правильный UUID в NekoBox? Тот же, что в 3x-ui?
Подключение есть, но медленно Качество TURN ВК; попробуйте другую ссылку на звонок
Логи FreeTurn: timeout или нет DTLS grep 56000 на VPS; открыт ли UDP 56000 у хостера
Логи VPS: только Listening, нет KCP/smux FreeTurn не достучался — сеть или порт
Логи VPS: backend dial error Xray на 12766 не слушает; проверить 3x-ui
Логи VPS: много copy error: EOF при рабочем интернете Норма — штатное закрытие TCP-сессий, игнорировать

2.7 Режим «только прокси» (без VPN на всё устройство)

Если не нужен системный VPN — в NekoBox включите Proxy only / режим SOCKS5. Тогда в нужном приложении (например, браузере или Telegram) вручную укажите прокси socks5://127.0.0.1:2080 (порт NekoBox по умолчанию, уточните в настройках).


Часть 3. Контрольный чеклист

Действие Готово
1 На VPS: бинарник /opt/vk-turn-proxy/server скачан, chmod +x
2 В 3x-ui: инбаунд VLESS на 127.0.0.1:12766 активен, UUID скопирован
3 Systemd-сервис запущен: systemctl is-active vk-turn-proxy = active
4 В ExecStart есть -vless и -connect 127.0.0.1:12766
5 grep 56000 — порт занят процессом server
6 На Android установлены FreeTurn и NekoBox
7 Есть рабочая ссылка на звонок ВК https://vk.com/call/join/...
8 FreeTurn: IP:порт VPS верный, ссылка вставлена, локальный адрес 127.0.0.1:9000
9 FreeTurn запущен первым, в логах Established DTLS connection!
10 NekoBox: профиль VLESS на 127.0.0.1:9000, UUID совпадает с 3x-ui, TLS выкл
11 NekoBox подключён, VPN активен, интернет работает

Часть 4. Устранение неполадок

4.1 Диагностика с сервера

Проверить всё одной группой команд:

# Сервис запущен?
systemctl is-active vk-turn-proxy.service

# Какие аргументы?
systemctl cat vk-turn-proxy.service | grep ExecStart

# Порты
ss -ulnp | grep 56000
ss -tlnp | grep 12766

# Последние 50 строк лога
journalctl -u vk-turn-proxy.service -n 50 --no-pager

# Лог в реальном времени (при тесте с телефона)
journalctl -u vk-turn-proxy.service -f

4.2 Замена схемы на Hysteria2 (без VLESS)

Если хотите маршрутизировать трафик через Hysteria2 вместо VLESS:

  • На VPS убрать -vless, указать -connect 127.0.0.1:40001 (порт Hy2).
  • В NekoBox создать профиль Hysteria2 на 127.0.0.1:9000 с паролем и insecure: true.
  • Подробнее — в отдельном руководстве.

4.3 Смена UUID в 3x-ui

Если компрометировали UUID — поменяйте в панели (Edit → Client → Generate new UUID) и обновите в NekoBox на всех устройствах. Перезапуск Xray произойдёт автоматически из панели.


Ссылки