跳转至

客户端配置参考

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 时的密码。
multiplex bool false 使用单个多路复用 WebSocket 连接处理所有连接。启用时使用 0-RTT 流创建以降低延迟。默认 false——每个连接一个 WebSocket 创建与普通浏览一致的流量模式。参见连接模式
mux_path string (自动) 覆盖多路复用 WebSocket 端点路径。仅在 multiplex = true 时使用。默认 {server_path}/mux
[socks5]
listen_address = "127.0.0.1:1080"
auth_enabled   = true
auth_username  = "alice"
auth_password  = "hunter2"

[http_proxy]

与 SOCKS5 代理并行运行的 HTTP/HTTPS 代理。默认禁用。支持使用 HTTP_PROXY/HTTPS_PROXY 环境变量进行系统级或按工具的 VPN 路由。两个代理共享同一个连接池——同时运行两者零额外开销。

处理两种请求类型:

  • HTTP CONNECT — 用于 HTTPS。客户端发送 CONNECT host:443 HTTP/1.1,代理建立到目的地的加密隧道。
  • 纯 HTTP 转发 — 用于未加密的 HTTP。代理连接到主机并转发请求。

两种方式都感知分流隧道,并使用与 SOCKS5 相同的连接池。

字段 类型 默认值 描述
enabled bool false 在 SOCKS5 代理旁启动 HTTP 代理。
listen_address string "127.0.0.1:8118" 接受 HTTP 代理连接的地址和端口。
auth_enabled bool false 要求 HTTP 代理客户端使用 Basic 认证。
auth_username string (无) auth_enabled = true 时的用户名。
auth_password string (无) auth_enabled = true 时的密码。
multiplex bool false 使用单个多路复用 WebSocket 连接。默认 false 推荐——参见连接模式
mux_path string (自动) 覆盖多路复用 WebSocket 端点路径。仅在 multiplex = true 时使用。默认 {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 查询,以防止 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)。
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 接口设置。通过设置 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 服务器,用于解析**绕过**域名(直连流量)。查询直接通过 UDP 发送到这些服务器,完全绕过系统解析器。留空以使用系统默认值。当系统解析器不可靠或希望为中文流量使用特定 DNS 提供商时非常有用。
[network]
prefer_ipv4       = true
dns_cache_enabled = true
dns_cache_ttl     = 300
dns_servers       = ["223.5.5.5", "223.6.6.6"]  # 阿里巴巴 DNS,用于中文绕过域名

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

[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