# Режимы ## UDP-Релей (WireGuard / AmneziaWG / Hysteria) Дефолтный режим (`-mode udp`). Клиент слушает локальный UDP-порт, сервер прозрачно форвардит UDP-пакеты в backend (например, WG `127.0.0.1:51820`). Отлично подходит для VPN-протоколов, работающих поверх UDP: **WireGuard, AmneziaWG, Hysteria**. ## 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**. Поверх DTLS трафик инкапсулируется через KCP + smux. ```bash ./server -listen 0.0.0.0:56000 -connect 127.0.0.1:443 -mode tcp ./client -listen 127.0.0.1:9000 -peer :56000 -link "" -mode tcp ``` **Bonding** — распределение одного TCP-соединения по всем активным smux-сессиям, флаг только клиентский: ```bash ./client -listen 127.0.0.1:9000 -peer :56000 -link "" -mode tcp -bond -n 4 ``` Серверного `-bond` нет — сервер автоопределяет bond по magic-префиксу в стриме. ## OBF (wire-профили обфускации) > [!WARNING] > **Обфускация обязательна для хорошей скорости.** VK агрессивно шейпит (режет) любой трафик, который не похож на медиаданные звонка (даже если он зашифрован в DTLS). Обфускация маскирует ваши пакеты под голосовой RTP-трафик, позволяя обходить шейпинг. `-obf-profile` выбирает wire-профиль маскировки TURN-payload. Профиль и ключ должны совпадать на клиенте и сервере. Доступные профили: - **`none`** (default) - обфускация выключена (скорость может быть сильно урезана). - **`rtpopus`** - RTP/opus-заголовок + ChaCha20-Poly1305 AEAD на теле. Идеально для обхода шейпов. - **`rtpopus2`** - rtpopus + RTP header extension (RFC 8285): X=1, ssrc-audio-level + transport-cc. Ближе к современному WebRTC. Wire несовместим с rtpopus - профиль должен совпадать на обеих сторонах. Сгенерировать ключ: ```bash ./server -gen-obf-key ``` Запуск: ```bash ./server ... -obf-profile rtpopus -obf-key <64-hex> ./client ... -obf-profile rtpopus -obf-key <64-hex> ``` ## TURN Транспорт По умолчанию клиент подключается к TURN-реле по TCP/TLS. Флаг `-transport udp` переключает на UDP: ```bash ./client ... -transport udp ``` > [!WARNING] > Транспорт UDP часто режется или блокируется системами DPI (особенно на мобильных операторах). Если у вас нестабильная связь — используйте стандартный TCP/TLS (просто не указывайте этот флаг). ## Потоки и Лимиты (-n) Параметр `-n` задает количество параллельных потоков к TURN-серверу (по умолчанию 10). Увеличение потоков может помочь поднять скорость или улучшить стабильность, **но не стоит этим злоупотреблять**. Слишком высокое значение (например, больше 15-20) повышает риск получения бана со стороны VK. Практика показывает, что значений от `6` до `12` зачастую достаточно для комфортной работы. То же самое касается параметра `-streams-per-cred` — используйте разумные значения. ## Captcha Клиент сам проходит VK captcha. Если автоматика не справилась — открывается локальный браузер. Принудительно ручной: ```bash ./client -manual-captcha ... ``` Профиль браузера: `vk_profile.json` рядом с бинарником. ## DNS Флаг `-dns-mode` управляет транспортом резолвера самого клиента (VK 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]...]`.