Перейти к содержанию

Справочник по конфигурации клиента

Полная справочная информация по всем полям в client.toml.


Поля верхнего уровня

Поле Тип По умолчанию Описание
server_address string "wss://localhost:443/api/v1/ws" Полный URL WebSocket сервера. Должен включать схему (wss://), имя хоста, порт и путь.
sni_hostname string (из URL) Переопределение имени хоста TLS SNI, отправляемого при рукопожатии. Полезно при подключении по IP-адресу или через CDN.
identity_key_file path "identity.key" Путь к файлу ключа идентификации клиента. Генерируется командой rvpn keygen.
prekey_bundle path (нет) Путь к файлу prekey-bundle.json сервера. Требуется при первоначальной настройке.
server_public_key string (нет) Публичный ключ сервера в hex-формате. Альтернатива prekey_bundle, если у вас есть только сам ключ.
tls_fingerprint string "chrome" Отпечаток TLS ClientHello. Варианты: "chrome", "firefox", "safari", "ios", "android", "edge", "none". Используйте "chrome" для наилучшей устойчивости к DPI.
data_dir path (по умолчанию для платформы) Каталог для данных времени выполнения (известные хосты, статистика). По умолчанию ~/.local/share/rvpn/ на Linux, ~/Library/Application Support/rvpn/ на macOS.

[socks5]

Настройки SOCKS5 прокси. Применяются только при работе в режиме SOCKS5 (по умолчанию).

Поле Тип По умолчанию Описание
listen_address string "127.0.0.1:1080" Адрес и порт для приёма SOCKS5 подключений. Используйте "0.0.0.0:1080" для предоставления прокси другим устройствам в вашей сети.
udp_associate bool true Включить команду SOCKS5 UDP ASSOCIATE (для приложений, использующих UDP).
auth_enabled bool false Требовать аутентификацию по имени пользователя и паролю для SOCKS5 клиентов.
auth_username string (нет) Имя пользователя при auth_enabled = true.
auth_password string (нет) Пароль при auth_enabled = true.
[socks5]
listen_address = "127.0.0.1:1080"
auth_enabled   = true
auth_username  = "alice"
auth_password  = "hunter2"

[http_proxy]

HTTP/HTTPS прокси, работающий параллельно с SOCKS5 прокси. По умолчанию отключён. Позволяет использовать переменные окружения HTTP_PROXY/HTTPS_PROXY для маршрутизации через VPN на уровне системы или отдельных инструментов. Оба прокси используют один и тот же мультиплексированный туннель -- одновременная работа обоих не добавляет накладных расходов.

Поддерживает два типа запросов:

  • HTTP CONNECT -- используется для HTTPS. Клиент отправляет CONNECT host:443 HTTP/1.1, прокси устанавливает зашифрованный туннель к месту назначения.
  • Прямая пересылка HTTP -- используется для незашифрованного HTTP. Прокси подключается к хосту и пересылает запрос.

Оба пути поддерживают split-tunnel и используют тот же мультиплексированный WebSocket туннель, что и SOCKS5.

Поле Тип По умолчанию Описание
enabled bool false Запустить HTTP прокси параллельно с SOCKS5 прокси.
listen_address string "127.0.0.1:8118" Адрес и порт для приёма HTTP прокси подключений.
auth_enabled bool false Требовать Basic аутентификацию для HTTP прокси клиентов.
auth_username string (нет) Имя пользователя при auth_enabled = true.
auth_password string (нет) Пароль при auth_enabled = true.
multiplex bool true Использовать мультиплексированный туннель (общий с SOCKS5). Установите false для отдельного WebSocket на каждое соединение.
mux_path string (авто) Переопределить путь к эндпоинту mux WebSocket. По умолчанию {server_path}/mux.
[http_proxy]
enabled        = true
listen_address = "127.0.0.1:8118"

С аутентификацией:

[http_proxy]
enabled        = true
listen_address = "127.0.0.1:8118"
auth_enabled   = true
auth_username  = "user"
auth_password  = "changeme"

См. Настройка HTTP прокси для использования с переменными окружения и настройки для отдельных приложений.


[dns_proxy]

Маршрутизирует DNS-запросы через зашифрованный туннель для предотвращения утечки DNS в режиме SOCKS5. По умолчанию отключён.

При включении клиент слушает UDP DNS-запросы на listen_address и пересылает их на WebSocket эндпоинт /dns сервера с использованием того же шифрования X3DH + Double Ratchet, что и для обычного трафика. Правила split tunnel соблюдаются: домены обхода разрешаются локально, а заблокированные рекламные/трекинг-домены сразу возвращают NXDOMAIN.

Поле Тип По умолчанию Описание
enabled bool false Запустить локальный DNS прокси параллельно с SOCKS5 прокси.
listen_address string "127.0.0.1:53" UDP адрес и порт для DNS прокси. Используйте порт 53 для совместимости на уровне системы (требуется root или CAP_NET_BIND_SERVICE).
nameservers list ["223.5.5.5:53", "1.1.1.1:53", "8.8.8.8:53"] Публичные DNS-серверы для обходных доменов. Запросы отправляются напрямую по UDP, чтобы избежать зацикливания на самом DNS прокси. Пользователям из КНР рекомендуется поставить локальный DNS первым (например, 119.29.29.29:53).
[dns_proxy]
enabled        = true
listen_address = "127.0.0.1:53"
nameservers    = ["223.5.5.5:53", "1.1.1.1:53", "8.8.8.8:53"]

См. Настройка DNS прокси для инструкций по направлению системного DNS на этот адрес.


[tun]

Настройки TUN-интерфейса. Включите TUN-режим, установив enabled = true. IP-адрес клиента, IP шлюза и DNS-серверы назначаются динамически сервером через сообщение VirtualIp -- не устанавливайте их вручную.

Поле Тип По умолчанию Описание
enabled bool false Включить полнотуннельный (TUN) режим. Весь IP-трафик маршрутизируется через VPN.
interface_name string (авто) Имя TUN-интерфейса. На macOS ОС назначает имя вида utunN. На Linux по умолчанию rvpn0. Необязательно -- опустите для использования имени, назначенного ОС.
routes list ["0.0.0.0/0"] Маршруты для отправки через туннель. По умолчанию весь трафик. Укажите отдельные CIDR для split-маршрутизации.
mtu integer 1420 MTU TUN-интерфейса. Уменьшение значений снижает фрагментацию на каналах с высокой задержкой.
[tun]
enabled = true
# interface_name = "rvpn0"  # необязательно, по умолчанию имя, назначенное ОС
mtu     = 1420
routes  = ["0.0.0.0/0"]

[split_tunnel]

Управляет тем, какой трафик обходит VPN, а какой проходит через него.

Поле Тип По умолчанию Описание
enabled bool false Включить split tunneling. Должно быть true, чтобы остальные настройки split tunnel вступили в силу.
builtin_bypass_countries list ["CN"] Коды стран, диапазоны IP которых автоматически обходят VPN. Используются данные APNIC. Поддерживаются: "CN", "HK", "TW", "RU" и другие. Установите [] для отключения.
bypass_networks_file path (нет) Путь к файлу с сетями CIDR (по одной на строку), которые подключаются напрямую, минуя VPN.
bypass_domains_file path (нет) Путь к файлу с доменными именами (по одному на строку), которые подключаются напрямую.
tunnel_networks_file path (нет) Путь к файлу с сетями CIDR, которые принудительно направляются через VPN (переопределяет правила обхода).
tunnel_domains_file path (нет) Путь к файлу с доменными именами, принудительно направляемыми через VPN.
bypass_networks list [] Встроенный список сетей CIDR для обхода. Аналогичен bypass_networks_file, но определяется непосредственно в конфигурации.
auto_reload_interval integer 86400 Как часто (в секундах) перезагружать файлы обхода/туннелирования. Установите 0 для отключения автоперезагрузки.
block_ads bool false Блокировать известные рекламные и трекинг-домены на уровне DNS. Ни один байт не отправляется заблокированным доменам.
ad_block_file path (нет) Путь к пользовательскому списку блокировки рекламы (по одному домену на строку). Используется дополнительно к встроенному списку при block_ads = true.
[split_tunnel]
enabled                  = true
builtin_bypass_countries = ["CN"]
block_ads                = true
bypass_networks_file     = "~/.config/rvpn/bypass-networks.txt"

[network]

Поведение сети на стороне клиента.

Поле Тип По умолчанию Описание
ipv6_enabled bool true Включить IPv6-подключения через прокси.
prefer_ipv4 bool true Когда доступны и IPv4, и IPv6, предпочитать IPv4. Снижает задержку на большинстве сетей.
dns_cache_enabled bool true Кэшировать DNS-ответы для сокращения повторных запросов.
dns_cache_ttl integer 300 Время кэширования DNS-записей (в секундах).
dns_cache_size integer 1000 Максимальное количество записей в DNS-кэше.
dns_servers list [] Пользовательские вышестоящие DNS-серверы для разрешения обходных доменов (прямые подключения). Запросы отправляются напрямую по UDP на эти серверы, полностью минуя системный резолвер. Оставьте пустым для использования системного по умолчанию. Полезно, когда системный резолвер ненадёжен или вы хотите использовать конкретного DNS-провайдера для китайского трафика.
[network]
prefer_ipv4       = true
dns_cache_enabled = true
dns_cache_ttl     = 300
dns_servers       = ["223.5.5.5", "223.6.6.6"]  # Alibaba DNS для обходных доменов КНР

[server_identity]

Защита от подмены сервера путём проверки отпечатка ключа X3DH сервера.

Поле Тип По умолчанию Описание
fingerprint string (нет) Ожидаемый hex-отпечаток ключа идентификации Ed25519 сервера. Если установлен, клиент отклоняет подключения, при которых ключ сервера не совпадает.
trust_on_first_use bool true Принять любую идентичность сервера при первом подключении и зафиксировать её для будущей проверки (TOFU в стиле SSH).
known_hosts_file path "known_hosts.json" Файл для хранения зафиксированных идентичностей сервера.
strict bool true Если true, прервать соединение при несовпадении отпечатка. Если false, только записать предупреждение в журнал.
[server_identity]
trust_on_first_use = true
strict             = true

[performance]

Настройки для высокопроизводительных или ресурсоограниченных сред.

Поле Тип По умолчанию Описание
worker_threads integer 4 Количество асинхронных рабочих потоков. Увеличьте на серверах с большим числом ядер.
recv_buffer_size integer 262144 Размер буфера приёма TCP в байтах (256 КБ).
send_buffer_size integer 262144 Размер буфера отправки TCP в байтах (256 КБ).
crypto_worker_count integer 4 Потоки, выделенные для шифрования/дешифрования. Большие значения повышают пропускную способность при высокой нагрузке.
[performance]
worker_threads     = 4
crypto_worker_count = 4

Полный пример

server_address    = "wss://your.server.com/api/v1/ws"
identity_key_file = "~/.config/rvpn/identity.key"
prekey_bundle     = "~/.config/rvpn/prekey-bundle.json"
tls_fingerprint   = "chrome"

[socks5]
listen_address = "127.0.0.1:1080"

[http_proxy]
enabled        = true
listen_address = "127.0.0.1:8118"

[tun]
enabled = true
mtu     = 1420
routes  = ["0.0.0.0/0"]

[dns_proxy]
enabled        = true
listen_address = "127.0.0.1:53"
nameservers    = ["223.5.5.5:53", "1.1.1.1:53", "8.8.8.8:53"]

[split_tunnel]
enabled                  = true
builtin_bypass_countries = ["CN"]
block_ads                = true

[network]
prefer_ipv4       = true
dns_cache_enabled = true

[server_identity]
trust_on_first_use = true
strict             = true