跳转至

客户端配置参考

client.toml 中所有字段的完整参考。


顶级字段

字段 类型 默认值 描述
server_address string "wss://localhost:443/api/v1/ws" 服务器的完整 WebSocket URL。必须包含协议(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 (无) 十六进制编码的服务器公钥。当您只有原始密钥时,作为 prekey_bundle 的替代方案。
tls_fingerprint string "chrome" 使用的 TLS ClientHello 指纹。选项:"chrome""firefox""safari""ios""android""edge""none"。使用 "chrome" 以获得最佳 DPI 抗性。
data_dir path (平台默认) 运行时数据(已知主机、统计信息)的目录。Linux 默认为 ~/.local/share/rvpn/,macOS 默认为 ~/Library/Application Support/rvpn/

[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"

[dns_proxy]

通过加密隧道路由 DNS 查询,以防止 SOCKS5 模式下的 DNS 泄漏。默认禁用。

启用后,客户端在 listen_address 上监听 UDP DNS 查询,并使用与常规流量相同的 X3DH + Double Ratchet 加密将它们转发到服务器的 /dns WebSocket 端点。分流隧道规则会被遵守:被绕过的域名在本地解析,被拦截的广告/追踪器域名立即返回 NXDOMAIN。

字段 类型 默认值 描述
enabled bool false 启动本地 DNS 代理以及 SOCKS5 代理。
listen_address string "127.0.0.1:5353" DNS 代理的 UDP 地址和端口。使用端口 53 以获得系统级兼容性(需要 root 或 CAP_NET_BIND_SERVICE)。
[dns_proxy]
enabled        = true
listen_address = "127.0.0.1:53"

请参阅 DNS 代理设置 获取将系统 DNS 指向此地址的说明。


[tun]

TUN 接口设置。通过设置 enabled = true 启用 TUN 模式。客户端 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 以进行分流路由。
mtu integer 1420 TUN 接口的 MTU。较低的值可减少高延迟链路上的分片。
[tun]
enabled = true
# interface_name = "rvpn0"  # 可选,默认为操作系统分配的名称
mtu     = 1420
routes  = ["0.0.0.0/0"]

[split_tunnel]

控制哪些流量绕过 VPN,哪些被强制通过。

字段 类型 默认值 描述
enabled bool false 启用分流隧道。其他分流隧道设置必须 enabled = true 才能生效。
builtin_bypass_countries list ["CN"] 其 IP 范围自动绕过的国家代码。使用 APNIC 数据。支持:"CN""HK""TW""RU" 等。设置为 [] 以禁用。
bypass_networks_file path (无) CIDR 网络文件路径(每行一个),直接连接,绕过 VPN。
bypass_domains_file path (无) 域名文件路径(每行一个),直接连接。
tunnel_networks_file path (无) 强制通过 VPN 的 CIDR 网络文件路径(覆盖绕过规则)。
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 服务器。留空以使用系统默认值。
[network]
prefer_ipv4       = true
dns_cache_enabled = true
dns_cache_ttl     = 300

[server_identity]

通过验证服务器的 X3DH 密钥指纹来防止服务器伪装。

字段 类型 默认值 描述
fingerprint string (无) 服务器 Ed25519 身份密钥的预期十六进制指纹。如果设置,客户端将拒绝服务器密钥不匹配的连接。
trust_on_first_use bool true 在首次连接时接受任何服务器身份,并为其固定以便将来验证(SSH 风格的 TOFU)。
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 KB)。
send_buffer_size integer 262144 TCP 发送缓冲区大小(字节)(256 KB)。
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"

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

[dns_proxy]
enabled        = true
listen_address = "127.0.0.1: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