mirror of
https://github.com/hackdiaz-dev/free-turn-proxy.git
synced 2026-10-12 09:41:53 +02:00
113 lines
8.5 KiB
Markdown
113 lines
8.5 KiB
Markdown
# Режимы
|
||
|
||
## UDP-Релей (WireGuard / AmneziaWG / Hysteria)
|
||
|
||
Дефолтный режим (`-mode udp`). Клиент слушает локальный UDP-порт, сервер прозрачно форвардит UDP-пакеты в backend (например, WG `127.0.0.1:51820`).
|
||
Отлично подходит для VPN-протоколов, работающих поверх UDP: **WireGuard, AmneziaWG, Hysteria**.
|
||
|
||
## Прямой режим (`-provider direct`)
|
||
|
||
Клиент шлёт тот же DTLS с OBF-обёрткой прямо на `-peer`, без реле:
|
||
- **Сервер не меняется**: тот же `-listen` порт, те же `-obf-profile`/`-obf-key`.
|
||
- **Без звонка**: ни ссылок, ни captcha; `-links`, `-turn`, `-port`, `-transport` игнорируются.
|
||
- **Потоки**: по умолчанию `-n 1` - лимитов реле нет, лишние потоки только делят очередь.
|
||
- **Ограничение**: при белых списках мобильного оператора IP VPS недоступен - там только `vk`.
|
||
- Переключение TURN <-> direct только вручную, автоматического fallback нет.
|
||
|
||
```bash
|
||
./client -provider direct -peer <vps>:56000 -obf-profile rtpopus3 -obf-key <key>
|
||
```
|
||
|
||
## TCP-Форвардер (Xray / sing-box / VLESS)
|
||
|
||
Включается флагом `-mode tcp` на обеих сторонах. Сервер подключается к локальному TCP-бэкенду (например, Xray inbound `127.0.0.1:443`). Клиент слушает локальный TCP-порт, на который вы натравливаете свой Xray/v2rayN/sing-box.
|
||
Подходит для TCP-прокси: **VLESS, VMess, Trojan, Shadowsocks**.
|
||
|
||
Relayed-данные TURN - всегда датаграммы, даже при `-transport tcp`, поэтому поверх DTLS трафик инкапсулируется через KCP (ARQ) + smux. Тюнинг ARQ - флаги `-kcp-*` (см. `docs/flags.md`).
|
||
|
||
```bash
|
||
./server -listen 0.0.0.0:56000 -connect 127.0.0.1:443 -mode tcp
|
||
./client -listen 127.0.0.1:9000 -peer <vps>:56000 -link "<call-link>" -mode tcp
|
||
```
|
||
|
||
`-n` в этом режиме задаёт число сессий пула: каждое локальное TCP-соединение уходит целиком в одну из них (round-robin).
|
||
|
||
### Bond для одного TCP-соединения
|
||
|
||
Добавьте клиенту `-bond`: данные каждого TCP-соединения будут распределяться между доступными сессиями. На сервере достаточно `-mode tcp`, он одновременно принимает обычные и bond-клиенты. По умолчанию bond выключен.
|
||
|
||
```bash
|
||
./client -listen 127.0.0.1:9000 -peer <vps>:56000 -links "<call-link>" -mode tcp -bond -n 4
|
||
```
|
||
|
||
Состав каналов фиксируется при открытии TCP-соединения; с одной доступной сессией bond тоже работает. Поддерживается до 256 сессий суммарно по всем ссылкам. Новые сессии используются следующими соединениями. При отказе участвующей сессии текущее соединение закрывается, а Xray может открыть новое через оставшиеся. Бесшовного переноса уже переданных данных между каналами нет. Медленный канал задерживает сборку потока; прирост скорости зависит от сети.
|
||
|
||
Для bond обновите и клиент, и сервер: сервер без его поддержки отклонит такой клиент при проверке режима. Обычный TCP сохраняет прежний протокол. В JSON клиента настройка называется `proxy.bond`, в `freeturn://` - `bond`.
|
||
|
||
Встроенный WireGuard (`-tunnel`) с `-mode tcp` не сочетается: он гонит датаграммы.
|
||
|
||
Режим должен совпадать на обеих сторонах: клиент помечает им первую запись, и сервер с другим `-mode` закрывает соединение с явной ошибкой вместо молчаливого зависания.
|
||
|
||
## OBF (wire-профили обфускации)
|
||
|
||
> [!WARNING]
|
||
> **Обфускация обязательна для хорошей скорости.** Сервис звонков шейпит (режет) любой трафик, который не похож на медиаданные звонка (даже если он зашифрован в DTLS). Обфускация маскирует ваши пакеты под голосовой RTP-трафик, позволяя обходить шейпинг.
|
||
|
||
`-obf-profile` выбирает wire-профиль маскировки TURN-payload. Профиль и ключ должны совпадать на клиенте и сервере.
|
||
|
||
Доступные профили:
|
||
- **`rtpopus3`** (рекомендуется) - RTP/opus + RFC 8285 extension (`ssrc-audio-level` + `transport-cc`) + ChaCha20-Poly1305. Полная эмуляция современного WebRTC-аудиопотока звонка.
|
||
- **`rtpopus2`** - RTP/opus + базовый RFC 8285 header extension.
|
||
- **`rtpopus`** - базовый RTP/opus-заголовок + ChaCha20-Poly1305 AEAD.
|
||
- **`none`** - обфускация выключена (скорость может быть сильно урезана шейпингом).
|
||
|
||
Сгенерировать ключ:
|
||
|
||
```bash
|
||
./server -gen-obf-key
|
||
```
|
||
|
||
Запуск:
|
||
|
||
```bash
|
||
./server ... -obf-profile rtpopus3 -obf-key <64-hex>
|
||
./client ... -obf-profile rtpopus3 -obf-key <64-hex>
|
||
```
|
||
|
||
## TURN Транспорт
|
||
|
||
По умолчанию клиент подключается к TURN-реле по TCP/TLS. Флаг `-transport udp` переключает на UDP:
|
||
|
||
```bash
|
||
./client ... -transport udp
|
||
```
|
||
|
||
> [!WARNING]
|
||
> Транспорт UDP часто режется или блокируется системами DPI (особенно на мобильных операторах). Если у вас нестабильная связь - используйте стандартный TCP/TLS (просто не указывайте этот флаг).
|
||
|
||
## Потоки и Лимиты (-n)
|
||
|
||
Параметр `-n` задает количество параллельных потоков к TURN-серверу (по умолчанию 12, в `-provider direct` - 1).
|
||
Увеличение потоков может помочь поднять скорость или улучшить стабильность, **но не стоит этим злоупотреблять**. Слишком высокое значение (например, больше 15-20) повышает риск бана со стороны сервиса звонков. Практика показывает, что значений от `6` до `12` зачастую достаточно для комфортной работы.
|
||
То же самое касается параметра `-streams-per-cred` - используйте разумные значения.
|
||
|
||
## Captcha
|
||
|
||
Клиент сам проходит captcha. Если автоматика не справилась - открывается локальный браузер. Принудительно ручной:
|
||
|
||
```bash
|
||
./client -manual-captcha ...
|
||
```
|
||
|
||
Персона auth-запросов (UA + TLS JA3 + client hints + порядок заголовков + device) - всегда Chrome; флаг `-platform` выбирает класс устройства (desktop/mobile). Значения самосогласованы, без внешнего состояния. Ручная captcha идёт через ту же персону.
|
||
|
||
## DNS
|
||
|
||
Флаг `-dns-mode` управляет транспортом резолвера самого клиента (API звонков, токены, captcha) - не DNS-маршрутизацией пользовательского трафика.
|
||
|
||
- `plain` - только UDP/53;
|
||
- `doh` - только DNS-over-HTTPS (Yandex DoH);
|
||
- `auto` (дефолт) - сначала UDP/53, sticky-fallback на DoH при полном отказе.
|
||
|
||
Свои UDP/53 резолверы: `-dns-servers ip[:port][,ip[:port]...]`.
|