OpenVPN 配置参数详解

详解 OpenVPN 2.5.11 server.ovpn 服务端常用配置参数:协议端口、设备拓扑、证书、地址池、keepalive、push、加密、运行与日志,附带生产配置模板与 FAQ,参数释义照 OpenVPN 2.5 手册实测整理。

OpenVPNOpenVPN配置参数详解配置详解运维证书管理2026/10/09

OpenVPN 配置参数详解

目标:把 OpenVPN 2.5.11 服务端 server.ovpn(或 systemd 用的 server.conf)里的常用参数逐条讲清,给出真实取值与生产模板,读者能据此独立排参与排障。参数说明均对照 OpenVPN 2.5 手册(man openvpn)在本机 2.5.11 实测整理。

一、环境信息

项值
OpenVPN2.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
authHMAC 摘要算法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 指南》。