OpenV_X_N 2.5.x 配置文件选项详解
根据 OpenV_X_N 2.5.x 版本官方文档和实践经验,以下是服务端和客户端配置文件中可用的主要选项及其含义说明。
一、基础网络配置选项
| 选项 | 语法示例 | 含义说明 |
|---|---|---|
client |
client |
声明此配置文件为客户端模式,告诉 Openvxn 这是一个客户端连接 |
dev |
dev tun 或 dev tap |
指定虚拟设备类型。tun 是路由模式(三层),tap 是桥接模式(二层)。tun 更常用且效率更高 |
proto |
proto udp 或 proto tcp |
指定传输协议。UDP 通常更快更稳定,TCP 穿透性更好但开销更大 |
port |
port 1194 |
指定服务端监听的端口号,默认是 1194 |
local |
local 192.168.1.100 |
指定服务端监听的本地 IP 地址(当服务器有多个网卡时使用) |
remote |
remote your-server.com 1194 |
客户端指定要连接的服务端地址和端口 |
remote-random |
remote-random |
当配置了多个 remote 时,随机选择一个连接 |
二、网络拓扑和地址分配选项
| 选项 | 语法示例 | 含义说明 |
|---|---|---|
server |
server 10.8.0.0 255.255.255.0 |
服务端配置 vxn 子网网段,客户端将从此网段获取 IP 地址 |
topology |
topology subnet |
Openvxn 2.5.x 推荐配置 。指定网络拓扑结构。subnet 模式让每个客户端获得一个子网内的独立 IP,比旧的 net30 模式更节省地址空间 |
ifconfig-pool-persist |
ifconfig-pool-persist ipp.txt |
将客户端 IP 分配记录保存到文件中,使客户端重连时能获得相同的 IP 地址 |
client-to-client |
client-to-client |
允许客户端之间相互通信。默认情况下客户端只能与服务器通信 |
duplicate-cn |
duplicate-cn |
允许同一个证书或用户名的多个客户端同时连接(通常用于测试) |
三、加密与安全选项(2.5.x 重要更新)
| 选项 | 语法示例 | 含义说明 |
|---|---|---|
data-ciphers |
data-ciphers AES-256-GCM:AES-256-CBC |
Openvxn 2.5.x 推荐使用。定义数据通道支持的加密算法列表,按优先级排序。客户端和服务端会协商选择共同支持的算法 |
data-ciphers-fallback |
data-ciphers-fallback AES-256-CBC |
Openvxn 2.5.x 推荐使用 。定义当客户端不支持 data-ciphers 协商时的备用加密算法,用于兼容旧版客户端 |
cipher |
cipher AES-256-CBC |
旧版选项 。2.5.x 中仍可用但会产生弃用警告。建议改用 data-ciphers 和 data-ciphers-fallback |
auth |
auth SHA256 |
指定数据通道的 HMAC 认证算法,用于确保数据包的完整性 |
tls-auth |
tls-auth ta.key 0 (服务端) / tls-auth ta.key 1 (客户端) |
TLS 认证密钥,用于防御 DoS 攻击和端口扫描。服务端用 0,客户端用 1 |
key-direction |
key-direction 0 |
配合 tls-auth 使用,指定密钥方向。服务端为 0,客户端为 1 |
remote-cert-tls |
remote-cert-tls server |
客户端验证服务端证书是否具有服务器扩展密钥用法(推荐开启) |
ns-cert-type |
ns-cert-type server |
旧版选项,已弃用 。建议用 remote-cert-tls server 替代 |
auth-nocache |
auth-nocache |
不缓存用户认证信息(用户名/密码),连接结束后立即从内存中清除 |
reneg-sec |
reneg-sec 3600 |
定期重新协商数据通道密钥的间隔时间(秒),默认 3600 秒 |
四、推送和路由选项
| 选项 | 语法示例 | 含义说明 |
|---|---|---|
push |
push "redirect-gateway def1 bypass-dhcp" |
服务端向客户端推送配置指令,例如推送路由、DNS 等 |
redirect-gateway |
push "redirect-gateway def1 bypass-dhcp" |
推送默认网关重定向,让客户端所有流量都走 vxn 通道。def1 使用更具体的路由覆盖默认网关 |
push "dhcp-option DNS" |
push "dhcp-option DNS 8.8.8.8" |
向客户端推送 DNS 服务器地址 |
push "route" |
push "route 192.168.1.0 255.255.255.0" |
向客户端推送指定网段的路由,使客户端能访问这些网络 |
route |
route 192.168.1.0 255.255.255.0 |
服务端配置本地路由,或客户端配置静态路由 |
route-nopull |
route-nopull |
客户端拒绝接受服务端推送的路由,只使用本地配置的路由 |
client-nat |
client-nat dnat 192.168.0.0 255.255.0.0 |
在客户端侧配置 NAT 规则 |
五、保持连接和超时选项
| 选项 | 语法示例 | 含义说明 |
|---|---|---|
keepalive |
keepalive 10 120 |
每 10 秒发送 ping 包,如果 120 秒内没有收到响应则判断连接断开 |
ping-restart |
ping-restart 60 |
如果 60 秒内没有收到 ping 响应,重启连接 |
ping-exit |
ping-exit 60 |
如果 60 秒内没有收到 ping 响应,退出连接 |
inactive |
inactive 3600 |
如果 3600 秒内没有数据流量,断开连接 |
resolv-retry |
resolv-retry infinite |
客户端 DNS 解析失败时无限重试,或指定重试次数 |
六、证书和密钥文件选项
| 选项 | 语法示例 | 含义说明 |
|---|---|---|
ca |
ca ca.crt |
CA 根证书文件路径,用于验证对方证书的签名链 |
cert |
cert server.crt |
本端的证书文件路径 |
key |
key server.key |
本端的私钥文件路径(需要严格保密) |
dh |
dh dh.pem |
Diffie-Hellman 参数交换文件,仅服务端需要 |
tls-crypt |
tls-crypt ta.key |
新版 TLS 加密方式,比 tls-auth 更安全,同时提供加密和认证 |
pkcs12 |
pkcs12 client.p12 |
使用 PKCS#12 格式的证书文件(包含证书和私钥) |
crl-verify |
crl-verify crl.pem |
证书吊销列表文件,用于验证证书未被吊销 |
内联配置方式 (2.5.x 支持):
可以将证书内容直接嵌入配置文件,使用 <ca>、</ca> 标签包裹:
<ca>
-----BEGIN CERTIFICATE-----
...(CA证书内容)...
-----END CERTIFICATE-----
</ca>
七、压缩选项(注意变化)
| 选项 | 语法示例 | 含义说明 |
|---|---|---|
compress |
compress lz4-v2 |
启用 LZ4 压缩(v2 版本),2.5.x 推荐使用 |
comp-lzo |
comp-lzo no |
旧版选项,已弃用。LZO 压缩存在安全风险(VORAL 攻击),建议避免使用 |
重要说明:Openvxn 2.5.x 中压缩功能默认不启用。如需使用压缩,服务端和客户端必须配置完全一致的压缩选项。出于安全考虑,现代配置通常不启用压缩。
八、脚本和钩子选项
| 选项 | 语法示例 | 含义说明 |
|---|---|---|
script-security |
script-security 2 |
设置脚本执行的安全级别。2 表示允许执行用户自定义脚本 |
client-connect |
client-connect /path/to/script.sh |
客户端成功连接后执行指定脚本 |
client-disconnect |
client-disconnect /path/to/script.sh |
客户端断开连接时执行指定脚本 |
up |
up /path/to/script.sh |
vxn 连接建立(TUN/TAP 设备可用)后执行脚本 |
down |
down /path/to/script.sh |
vxn 连接关闭前执行脚本 |
learn-address |
learn-address /path/to/script.sh |
学习到新的客户端地址时执行脚本 |
auth-user-pass-verify |
auth-user-pass-verify check.sh via-file |
验证客户端用户名密码的脚本 |
九、认证相关选项(用户名/密码)
| 选项 | 语法示例 | 含义说明 |
|---|---|---|
auth-user-pass-verify |
auth-user-pass-verify /path/to/script via-file |
通过外部脚本验证用户名/密码 |
verify-client-cert |
verify-client-cert none |
2.5.x 推荐使用 。设置客户端证书验证要求:none(不要求)、optional(可选)、require(必须) |
client-cert-not-required |
client-cert-not-required |
旧版选项,已弃用 。2.5.x 中应使用 verify-client-cert none 替代 |
username-as-common-name |
username-as-common-name |
将客户端认证的用户名作为证书的 CN(通用名称)使用 |
auth-user-pass |
auth-user-pass 或 auth-user-pass pass.txt |
客户端启用用户名/密码认证。不加参数时交互式输入,加文件名时从文件读取 |
十、日志和调试选项
| 选项 | 语法示例 | 含义说明 |
|---|---|---|
verb |
verb 3 |
日志详细程度,0-11 级。3 为默认级别,推荐用于生产环境 |
log |
log /var/log/openvxn.log |
覆盖模式日志文件路径 |
log-append |
log-append /var/log/openvxn.log |
追加模式日志文件路径 |
status |
status openvxn-status.log |
状态文件路径,定期写入当前连接状态 |
mute |
mute 20 |
相同日志消息重复 20 次后静默,防止日志泛滥 |
mute-replay-warnings |
mute-replay-warnings |
静默重放攻击警告信息 |
十一、权限和持久化选项
| 选项 | 语法示例 | 含义说明 |
|---|---|---|
user |
user nobody |
Linux 系统下降低守护进程权限到指定用户 |
group |
group nogroup |
Linux 系统下降低守护进程权限到指定组 |
persist-key |
persist-key |
重启时保持私钥文件不重新读取,避免权限问题 |
persist-tun |
persist-tun |
重启时保持 TUN/TAP 设备不关闭,避免权限问题 |
nobind |
nobind |
客户端不绑定本地端口,使用随机源端口 |
float |
float |
允许服务端从非远程配置指定的 IP 地址接收数据包(多网卡/NAT 场景) |
十二、IPv6 相关选项
| 选项 | 语法示例 | 含义说明 |
|---|---|---|
server-ipv6 |
server-ipv6 2001:db8::/64 |
服务端配置 IPv6 地址池 |
push-ipv6 |
push "route-ipv6 2001:db8::/64" |
推送 IPv6 路由到客户端 |
tun-ipv6 |
tun-ipv6 |
启用 IPv6 隧道模式 |
ifconfig-ipv6 |
ifconfig-ipv6 2001:db8::1/64 2001:db8::2 |
配置 IPv6 地址(客户端) |
十三、性能调优选项
| 选项 | 语法示例 | 含义说明 |
|---|---|---|
sndbuf |
sndbuf 262144 |
设置发送缓冲区大小(字节) |
rcvbuf |
rcvbuf 262144 |
设置接收缓冲区大小(字节) |
txqueuelen |
txqueuelen 1000 |
设置 TUN/TAP 设备的发送队列长度 |
fragment |
fragment 1400 |
设置数据包分片大小 |
mssfix |
mssfix 1400 |
设置 MSS(最大分片大小)以优化 MTU |
十四、OpenVXN 2.5.x 重要变化总结
- 加密配置 :推荐使用
data-ciphers+data-ciphers-fallback替代单独的cipher - TLS 认证 :推荐使用
verify-client-cert none替代client-cert-not-required - 拓扑模式 :推荐使用
topology subnet改善 IP 地址利用率 - 压缩安全 :避免使用
comp-lzo,改用compress或不使用压缩 - 内联配置:支持将证书/密钥内容直接嵌入配置文件