Справочник по конфигурации клиента¶
Полная справочная информация по всем полям в 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"
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, только записать предупреждение в журнал. |
[performance]¶
Настройки для высокопроизводительных или ресурсоограниченных сред.
| Поле | Тип | По умолчанию | Описание |
|---|---|---|---|
worker_threads |
integer | 4 |
Количество асинхронных рабочих потоков. Увеличьте на серверах с большим числом ядер. |
recv_buffer_size |
integer | 262144 |
Размер буфера приёма TCP в байтах (256 КБ). |
send_buffer_size |
integer | 262144 |
Размер буфера отправки TCP в байтах (256 КБ). |
crypto_worker_count |
integer | 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