7.1 KiB
Флаги
Клиент
| Флаг | По умолчанию | Описание |
|---|---|---|
-listen |
127.0.0.1:9000 |
локальный адрес ip:port, куда подключается WireGuard или Xray клиент |
-peer |
обязательный | адрес сервера на VPS, host:port |
-provider |
vk |
источник TURN-creds: vk (см. docs/providers.md) |
-link |
пусто | (устарел) одна ссылка VK Calls https://vk.ru/call/join/...; используйте -links. Игнорируется, если задан -links |
-links |
обязательный для -provider vk (или -link) |
ссылки VK Calls через запятую https://vk.ru/call/join/A,https://vk.ru/call/join/B; каждая даёт свой пул из -n стримов |
-n |
10 |
параллельных TURN-потоков |
-transport |
tcp |
транспорт до TURN-реле: tcp (TCP/TLS) | udp |
-mode |
udp |
режим туннеля: udp (UDP-релей для WireGuard) | tcp (TCP-форвардер для Xray/sing-box) |
-bond |
false |
распределять одно TCP-соединение по всем активным smux-сессиям (только с -mode tcp) |
-turn |
из creds | переопределить IP TURN-сервера |
-port |
из creds | переопределить порт TURN-сервера |
-obf-profile |
none |
wire-профиль обфускации payload: none | rtpopus (RTP/opus + ChaCha20-Poly1305 AEAD) | rtpopus2 (+ RTP header extension, ближе к WebRTC) | rtpopus3 (+ abs-send-time, VAD, имитация потерь, вариативный timestamp); должен совпадать с сервером |
-obf-key |
пусто | общий ключ для -obf-profile != none, 32 байта hex (64 символа) |
-obf-timing |
0 |
межпакетная задержка для RTP-мимикрии (напр. 20ms); только с -obf-profile != none и -mode udp; 0 = выкл |
-gen-obf-key |
false |
напечатать новый ключ и выйти |
-manual-captcha |
false |
сразу ручной режим captcha (только -provider vk) |
-streams-per-cred |
10 |
потоков на один кеш VK-учёток (только -provider vk) |
-browser |
firefox |
браузерный профиль VK-auth (UA + TLS JA3 + client hints): chrome | firefox (только -provider vk) |
-dns-mode |
auto |
plain (UDP/53) | doh | auto |
-dns-servers |
пусто | свои UDP/53 резолверы, ip[:port][,ip[:port]...] |
-client-id |
авто | уникальный ID клиента (автогенерация если не задан) |
-sub |
пусто | URL подписки (sub.md) для получения списка серверов |
-debug |
false |
debug-логи |
Сервер
| Флаг | По умолчанию | Описание |
|---|---|---|
-listen |
0.0.0.0:56000 |
адрес прослушивания ip:port |
-connect |
обязательный | локальный backend host:port (WG 127.0.0.1:51820 / Xray 127.0.0.1:443) |
-mode |
udp |
режим туннеля: udp | tcp (bond автоопределяется) |
-obf-profile |
none |
wire-профиль обфускации payload: none | rtpopus | rtpopus2 | rtpopus3; должен совпадать с клиентом (описание профилей - в таблице клиента) |
-obf-timing |
0 |
межпакетная задержка для RTP-мимикрии (напр. 10ms); только с -obf-profile != none и -mode udp; 0 = выкл |
-obf-key |
пусто | общий ключ для -obf-profile != none, 32 байта hex |
-gen-obf-key |
false |
напечатать новый ключ и выйти |
-clients-file |
пусто | путь к JSON-файлу (clients.json) для включения авторизации по Client ID |
-debug |
false |
debug-логи |
Управление Client ID (Команды Сервера)
Note
Про авторизацию: клиент всегда отправляет свой Client ID первой записью после DTLS-handshake, сервер всегда его читает — wire-контракт симметричен. Флаг
-clients-fileна сервере включает проверку ID по allowlist (clients.json). Без-clients-fileID читается и игнорируется.
Сервер содержит встроенные команды для управления файлом clients.json (горячая перезагрузка поддерживается автоматически, перезапускать сервер после изменений не нужно).
# Добавить или обновить клиента
./server clients add <client_id> ["Комментарий"]
# Удалить клиента
./server clients remove <client_id>
# Вывести список всех клиентов
./server clients list
По умолчанию команды работают с файлом clients.json в текущей директории. Если вы используете другой путь, задайте его через переменную окружения CLIENTS_FILE:
CLIENTS_FILE=/etc/free-turn-proxy/clients.json ./server clients list
Управление через Docker
Если сервер запущен в Docker-контейнере (например, с именем free-turn-proxy), вы можете использовать команду docker exec для управления клиентами без необходимости заходить внутрь контейнера или редактировать файл вручную:
# Добавить клиента
docker exec -it free-turn-proxy /app/server clients add "my-client" "Комментарий"
# Удалить клиента
docker exec -it free-turn-proxy /app/server clients remove "my-client"
# Посмотреть список
docker exec -it free-turn-proxy /app/server clients list
Важно: команды
docker execберут путь к файлу из переменной окруженияCLIENTS_FILEконтейнера. Это работает, только если контейнер запущен с включённой авторизацией (т.е.CLIENTS_FILEзадан вdocker-compose.ymlи файл проброшен черезvolumes). Если авторизация выключена,clientsпишет в эфемерныйclients.jsonвнутри контейнера, который сервер не читает. Путь должен совпадать с тем, что смонтирован и передан в-clients-file.