Справочник по конфигурации сервера¶
Полная справочная информация по всем полям в server.toml.
Поля верхнего уровня¶
Все поля находятся в секции [server] или на корневом уровне (оба варианта допустимы).
| Поле | Тип | По умолчанию | Описание |
|---|---|---|---|
bind_address |
string | "0.0.0.0:443" |
Адрес и порт для прослушивания. Используйте "0.0.0.0:443" для всех интерфейсов или "127.0.0.1:8443" только для localhost (за обратным прокси). |
tls_cert_file |
path | "certs/cert.pem" |
Путь к TLS-сертификату (формат PEM). |
tls_key_file |
path | "certs/key.pem" |
Путь к приватному ключу TLS (формат PEM). |
identity_key_file |
path | "server_identity.key" |
Путь к ключу идентификации X3DH сервера. Генерируется командой rvpn-server keygen. |
websocket_path |
string | "/api/v1/ws" |
Путь WebSocket эндпоинта. Изменяйте для каждого развёртывания во избежание обнаружения. |
http_port |
integer | (отключён) | Если задан, также слушать на этом порту для обычного HTTP (например, 80) для ACME-вызовов и перенаправлений HTTP->HTTPS. |
redirect_http_to_https |
bool | true |
Когда задан http_port, перенаправлять все HTTP-запросы на HTTPS. |
decoy_root |
path | (нет) | Путь к каталогу статических файлов для отображения неаутентифицированным браузерам. Сервер выглядит как обычный веб-сайт. |
prekey_rotation_hours |
integer | 168 |
Как часто (в часах) сервер ротирует подписанный предключ X3DH. По умолчанию 7 дней. |
one_time_prekey_count |
integer | 100 |
Сколько одноразовых предключей генерировать и публиковать в пакете предключей. |
prekey_bundle_file |
path | (нет) | Если задан, загружать ключи X3DH из этого файла вместо генерации новых. Используйте для восстановления из резервной копии идентичности. |
[server.rate_limit]¶
Управляет количеством подключений, которые может установить один IP-адрес.
| Поле | Тип | По умолчанию | Описание |
|---|---|---|---|
max_connections_per_ip |
integer | 500 |
Максимальное количество одновременных подключений с одного IP-адреса. |
max_handshakes_per_minute |
integer | 2000 |
Максимальное количество попыток новых рукопожатий с одного IP в минуту. Помогает предотвратить перебор. |
[server.network]¶
Сетевые настройки на стороне сервера, используемые при работе в режиме TUN / полного туннеля.
| Поле | Тип | По умолчанию | Описание |
|---|---|---|---|
nat_enabled |
bool | true |
Включить NAT (маскарадинг) для трафика, выходящего с сервера. Необходимо для доступа клиентов в интернет через туннель. |
dhcp_range |
string | "10.200.0.0/24" |
Пул IP для назначения туннельных адресов клиентам. |
dns_servers |
list | ["1.1.1.1"] |
DNS-серверы, передаваемые клиентам для подключений в режиме туннеля. |
[server.network]
nat_enabled = true
dhcp_range = "10.200.0.0/24"
dns_servers = ["1.1.1.1", "8.8.8.8"]
[server.tun]¶
Настройки для режима TUN-to-TUN. При включении сервер создаёт TUN-интерфейс и маршрутизирует пакеты клиентов через него.
| Поле | Тип | По умолчанию | Описание |
|---|---|---|---|
enabled |
bool | false |
Включить TUN-режим. При false сервер использует режим ретрансляции (в стиле Brook). |
tun_ip |
string | "10.200.0.1/24" |
IP-адрес TUN-интерфейса и префикс подсети. |
mtu |
integer | 1420 |
MTU TUN-интерфейса. |
interface_name |
string | "tun0" |
Имя создаваемого TUN-интерфейса. |
Полный пример¶
[server]
bind_address = "0.0.0.0:443"
tls_cert_file = "/etc/rvpn/certs/cert.pem"
tls_key_file = "/etc/rvpn/certs/key.pem"
identity_key_file = "/etc/rvpn/server_identity.key"
websocket_path = "/api/v1/ws"
http_port = 80
redirect_http_to_https = true
decoy_root = "/var/www/decoy"
prekey_rotation_hours = 168
one_time_prekey_count = 100
[server.rate_limit]
max_connections_per_ip = 500
max_handshakes_per_minute = 2000
[server.network]
nat_enabled = true
dhcp_range = "10.200.0.0/24"
dns_servers = ["1.1.1.1"]
[server.tun]
enabled = true
tun_ip = "10.200.0.1/24"
mtu = 1420
interface_name = "tun0"
Режим обратного прокси¶
При работе за Caddy, nginx или другим обратным прокси с терминацией TLS установите bind_address на порт localhost и предоставьте прокси обработку TLS. Направьте пересылку WebSocket прокси на тот же путь:
[server]
bind_address = "127.0.0.1:8443"
tls_cert_file = "" # не используется -- TLS обрабатывает прокси
tls_key_file = ""
websocket_path = "/api/v1/ws"
Пример для Caddy:
your.domain.com {
handle /api/* {
reverse_proxy 127.0.0.1:8443
}
handle {
root * /var/www/html
file_server
}
}
Сопоставитель пути должен быть
/api/*(совпадение по префиксу), а не/api(точное совпадение).