OpenVPN 配置参数详解
详解 OpenVPN 2.5.11 server.ovpn 服务端常用配置参数:协议端口、设备拓扑、证书、地址池、keepalive、push、加密、运行与日志,附带生产配置模板与 FAQ,参数释义照 OpenVPN 2.5 手册实测整理。
OpenVPN 配置参数详解
目标:把 OpenVPN 2.5.11 服务端
server.ovpn(或 systemd 用的server.conf)里的常用参数逐条讲清,给出真实取值与生产模板,读者能据此独立排参与排障。参数说明均对照 OpenVPN 2.5 手册(man openvpn)在本机 2.5.11 实测整理。
一、环境信息
| 项 | 值 |
|---|---|
| OpenVPN | 2.5.11(openvpn --version 实测) |
| 易用的参数查询 | openvpn --help 分类输出同手册 |
| 生效配置文件 | /etc/openvpn/server.conf(systemd 托管时为 /etc/openvpn/<name>.conf) |
| 数据/证书目录 | /etc/openvpn/easy-rsa/pki/ |
| 默认监听 | UDP 1194 |
二、前置条件
- 服务端已按《Ubuntu 22.04 安装 OpenVPN 指南》完成安装与 easy-rsa 证书签发。
- 启动后可用
openvpn --config /etc/openvpn/server.conf前台试运行,确认Initialization Sequence Completed。 - 本文参数均作用于服务端;客户端参数在客户端
client.ovpn单独配置(client 特有的remote、nobind、remote-cert-tls等见书中客户端小节)。
三、参数查看与修改方式
3.1 查看可用参数
openvpn --help
--help 会按「Tunnel Options / Client Options / Server Options / Data Channel Encryption / General Options」分类列出全部参数,例如协议与端口段实测输出:
--port port : TCP/UDP port # for both local and remote.
--lport port : TCP/UDP port # for local (default=1194). Implies --bind.
--proto p : Use protocol p for communicating with peer.
p = udp (default), tcp-server, tcp-client
udp4, tcp4-server, tcp4-client
udp6, tcp6-server, tcp6-client
--dev tunX|tapX : tun/tap device (X can be omitted for dynamic device.
--topology t : Set --dev tun topology: 'net30', 'p2p', or 'subnet'.
--keepalive n m : Helper option for setting timeouts in server mode.
--verb n : Set output verbosity to n (default=1).
3.2 修改方式
- systemd 托管:编辑
/etc/openvpn/server.conf后systemctl restart openvpn@server。 - 独立进程:编辑配置后重启 openvpn 进程。
- 参数以「空格分隔的 名称 值」一行一个,
#或;开头为注释。
四、参数总览(服务端 server.conf 常用)
| 参数 | 作用 | 本指南推荐值 |
|---|---|---|
proto | 隧道外层协议 | udp |
port | 监听端口 | 1194 |
dev | 设备类型 | tun |
topology | 隧道寻址拓扑 | subnet |
server | 虚拟网段与掩码 | 10.8.0.0 255.255.255.0 |
ifconfig-pool-persist | 客户端地址固化 | /etc/openvpn/ipp.txt |
keepalive | 心跳与断线重连间隔 | 10 120 |
cipher/data-ciphers | 数据加密算法 | AES-256-GCM / AES-256-GCM:AES-128-GCM:CHACHA20-POLY1305 |
auth | HMAC 摘要算法 | SHA256 |
ca/cert/key/dh | 证书体系文件路径 | 见 5.3 |
tls-auth | 控制信道 HMAC 保护 | ta.key 0 |
push | 向客户端推送选项 | redirect-gateway def1 bypass-dhcp 等 |
user/group | 初始化后降权运行 | nobody / nogroup |
verb | 日志详细度 | 3 |
五、核心参数分类详解
5.1 协议、端口与设备
proto udp:隧道外层协议。udp(默认)、tcp-server/tcp-client、以及 v4/v6 变体。UDP 穿透性好、开销低;遇中间防火墙只放 TCP 时用tcp-server。客户端必须与服务端一致。port 1194:监听端口,默认即 1194。--lport/--rport可分别指定本地/远端端口,--port同时设置两者。dev tun:三层 IP 隧道设备。tunX显式指定编号(如tun0);tap为二层桥接(少见)。改动设备后上层server网段与路由随之应用。topology subnet:地址分配拓扑。服务端 +tun时用subnet(每个客户端分一个网段内 IP);兼容老客户端可回退net30(每个客户端分独立 /30)。
5.2 地址分配与地址池
server 10.8.0.0 255.255.255.0:(仅服务端) 声明虚拟内网网段;服务端自身取网段首地址10.8.0.1,客户端从后续地址池取(通常10.8.0.2起)。ifconfig-pool-persist /etc/openvpn/ipp.txt:把「客户端 CN → 虚拟地址」的分配落盘,服务端重启后地址尽量不变,避免客户端断线重连换了 IP。ifconfig:手写点对点地址(TUN: l rn),普通 server 模式由server自动生成,非必要不手改。
5.3 证书体系文件
ca /etc/openvpn/easy-rsa/pki/ca.crt:根证书,用于校验对端证书链。cert .../issued/server.crt:服务端证书(easy-rsa gen-req server+sign-req server server)。key .../private/server.key:服务端私钥,权限 600,严禁外发。dh .../pki/dh.pem:Diffie-Hellman 参数(easyrsa gen-dh,实测 2048 位)。仅做 RSA/ECDH 协商的非 ECDSA 场景需要;若走椭圆曲线可选省略。tls-auth .../ta.key 0:控制信道额外 HMAC 保护,0表示本端方向(服务端);配了它能在建立 TLS 前先验签拦截伪造包(防 DoS 与端口扫描)。客户端对应tls-auth .../ta.key 1。
5.4 心跳、保活与重连
keepalive 10 120:(服务端) 每 10 秒向客户端发心跳;若 120 秒未收到对端心跳则判定连接失效并重启隧道。客户端的ping-restart/ping-timer-rem由该选项自动下发。- 客户端侧对应独立参数:
ping n(每 n 秒 ping 一次)、ping-restart n(n 秒无响应则重启连接)、ping-timer-rem(仅在拿到远端地址后才计时)。
5.5 向客户端推送(push)
push "redirect-gateway def1 bypass-dhcp":让客户端把所有出口流量走隧道(全局代理)。def1用0.0.0.0/1 + 128.0.0.0/1两条聚合路由兜底默认路由,bypass-dhcp跳过本网 DHCP 以免环路。push "route 10.20.0.0 255.255.0.0":只推送访问内网网段的子网路由,办公直连保留,适合内网访问场景。push "dhcp-option DNS 8.8.8.8":向客户端下发 DNS 服务器。多次push可下发多个。- 客户端配合
remote-cert-tls server校验证书用途、route-nopull忽略推送路由等更精细控制。
5.6 加密与认证算法
cipher AES-256-GCM:(历史/兼容) 指定数据通道加密算法,2.5 起优先用data-ciphers。data-ciphers AES-256-GCM:AES-128-GCM:CHACHA20-POLY1305:服务端声明可用的加密套件清单(冒号分隔、按优先级),客户端与客户端协商选其一。实测连接握手输出Data Channel: Cipher 'AES-256-GCM' initialized with 256 bit key。auth SHA256:数据包 HMAC 摘要,2.5 默认 SHA1,生产建议升 SHA256。- 可让
openvpn --show-ciphers列出全部可用算法(GCM/CBC 模式均允许;静态密钥模式仅 CBC 允许)。
5.7 运行、降权与日志
user nobody/group nogroup:服务端初始化完成并打开 tun、读完证书后降权到非特权账号,减少提权风险。persist-key/persist-tun:SIGUSR1 重连或ping-restart时,不再重读密钥文件、不再关闭 tun 设备,加速自动重连。status /var/log/openvpn/openvpn-status.log 60:周期生成客户端在线列表文件,末尾数字为刷新秒数(默认 60)。log-append /var/log/openvpn/openvpn.log:追加日志到文件;log为覆盖写。systemd 场景可改为journalctl -u openvpn@server查看。verb 3:日志详细度 011;3 给出启动流程与连接事件的良好概览,排障再上调 46。
六、生产配置模板
适用场景:2 vCPU / 2GB 内存 / 公网出口,几十台轻量客户端的内网访问型 VPN(磁盘无特殊要求,进程内存极低)。若做全流量代理或高并发,把 data-ciphers 优先级换 CHACHA20 并适当调大 sndbuf/rcvbuf。
# /etc/openvpn/server.conf
port 1194
proto udp
dev tun
topology subnet
ca /etc/openvpn/easy-rsa/pki/ca.crt
cert /etc/openvpn/easy-rsa/pki/issued/server.crt
key /etc/openvpn/easy-rsa/pki/private/server.key
dh /etc/openvpn/easy-rsa/pki/dh.pem
tls-auth /etc/openvpn/easy-rsa/pki/ta.key 0
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist /etc/openvpn/ipp.txt
keepalive 10 120
push "route 10.20.0.0 255.255.0.0"
push "dhcp-option DNS 223.5.5.5"
push "dhcp-option DNS 119.29.29.29"
cipher AES-256-GCM
data-ciphers AES-256-GCM:AES-128-GCM:CHACHA20-POLY1305
auth SHA256
user nobody
group nogroup
persist-key
persist-tun
status /var/log/openvpn/openvpn-status.log 60
log-append /var/log/openvpn/openvpn.log
verb 3
💡 说明:与「内网访问型」配置相比,需要全流量代理时把
push "route 10.20.0.0 255.255.0.0"换成push "redirect-gateway def1 bypass-dhcp"即「全局代理」型。
七、常见问题(FAQ)
Q1:cipher 和 data-ciphers 都写,以哪个为准?
OpenVPN 2.5+ 优先协商 data-ciphers 清单,cipher 主要保留给旧兼容;客户端无 data-ciphers 时才回退 cipher。推荐两处都写一致,或仅用 data-ciphers。
Q2:改配置后客户端没有变化?
服务端 push 只在「新连接」握手时下发,已连接的客户端不受影响,需断开重连;重启服务端后再 init pki 的客户端重连一次即可。
Q3:客户端连上却拿不到内网网段 IP?
检查是否未 push 相应 route,或服务端是否开启了 IP 转发 net.ipv4.ip_forward=1 并做了 NAT(iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE)。
Q4:verb 3 太吵/太安静?
3 级已含启动与建连概览;想更安静用 1(仅致命错误),排障用 4~6 看每个数据包/密钥细节。结合 status 文件与 --help 对应参数定位。
八、参考链接
- OpenVPN 手册:
man openvpn - OpenVPN 社区 HOWTO:
https://community.openvpn.net/openvpn/wiki/HOWTO - Easy-RSA / 具体命令:见《OpenVPN 常用 CLI 命令与工具详解》《Ubuntu 22.04 安装 OpenVPN 指南》。