OpenVPN 在 Linux 系统中的完整配置指南
OpenVPN 是一款广泛使用的开源虚拟专用网络(VPN)工具,它通过 SSL/TLS 协议提供安全的远程访问解决方案,本文将详细介绍如何在 Linux 系统中配置 OpenVPN 服务器和客户端,涵盖环境准备、证书管理、服务端配置、客户端连接及故障排查等关键步骤。

环境准备与依赖安装
在开始配置前,需确保系统满足基本要求,以 Ubuntu/Debian 为例,建议使用最新稳定版系统,并具备 root 或 sudo 权限,首先更新系统包列表并安装必要的依赖:
sudo apt update && sudo apt upgrade -y sudo apt install -y openvpn easy-rsa openssl wget
对于 CentOS/RHEL 系统,可使用以下命令:
sudo yum update -y sudo yum install -y epel-release sudo yum install -y openvpn easy-rsa openssl wget
安装完成后,检查 OpenVPN 版本以确保服务正常运行:
openvpn --version
构建证书颁发机构(CA)与密钥
OpenVPN 依赖 SSL/TLS 证书进行身份验证,使用 easy-rsa 工具生成证书和密钥:
-
初始化 PKI 环境
创建目录并复制 easy-rsa 模板文件:mkdir -p ~/openvpn-ca cp -r /usr/share/easy-rsa/* ~/openvpn-ca/ cd ~/openvpn-ca
-
配置变量文件
编辑vars文件,设置证书默认参数(如国家、组织、邮箱等):nano vars
取消注释并修改以下行:
set_var EASYRSA_REQ_COUNTRY "CN" set_var EASYRSA_REQ_PROVINCE "Beijing" set_var EASYRSA_REQ_CITY "Beijing" set_var EASYRSA_REQ_ORG "My Company" set_var EASYRSA_REQ_EMAIL "admin@example.com" set_var EASYRSA_REQ_OU "MyOrganizationalUnit"
-
构建 CA 证书
初始化 PKI 并构建根证书:
./easyrsa init-pki ./easyrsa build-ca nopass
过程中会生成
ca.crt和ca.key,需妥善保存。 -
生成服务器与客户端证书
- 服务器证书:
./easyrsa gen-req server nopass ./easyrsa sign-req server server
- 客户端证书(需为每个客户端单独生成):
./easyrsa gen-req client1 nopass ./easyrsa sign-req client client1
- 服务器证书:
-
生成 Diffie-Hellman 参数
增强密钥交换安全性:./easyrsa gen-dh
配置 OpenVPN 服务器
-
创建服务器配置文件
复制示例配置文件并编辑:sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/ sudo gunzip -c /etc/openvpn/server.conf.gz | sudo tee /etc/openvpn/server.conf
-
关键配置项
编辑/etc/openvpn/server.conf,修改以下参数:port 1194 proto udp dev tun ca /root/openvpn-ca/pki/ca.crt cert /root/openvpn-ca/pki/issued/server.crt key /root/openvpn-ca/pki/private/server.key dh /root/openvpn-ca/pki/dh.pem server 10.8.0.0 255.255.255.0 # 定义 VPN 客户端网段 ifconfig-pool-persist /var/log/openvpn/ipp.txt push "redirect-gateway def1 bypass-dhcp" push "dhcp-option DNS 8.8.8.8" keepalive 10 120 comp-lzo user nobody group nogroup persist-key persist-tun status /var/log/openvpn/openvpn-status.log verb 3
-
启用 IP 转发
编辑/etc/sysctl.conf,取消注释net.ipv4.ip_forward=1,并应用:sudo sysctl -p
-
配置防火墙规则
允许 OpenVPN 端口和 NAT 转发:sudo ufw allow 1194/udp sudo iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE sudo apt install -y iptables-persistent sudo netfilter-persistent save
-
启动并启用服务

sudo systemctl start openvpn@server sudo systemctl enable openvpn@server
配置 OpenVPN 客户端
-
生成客户端配置文件
在服务器端创建客户端配置模板client.ovpn,包含以下内容:client dev tun proto udp remote your_server_ip 1194 resolv-retry infinite nobind persist-key persist-tun remote-cert-tls server cipher AES-256-CBC auth SHA256 comp-lzo no verb 3 <ca> $(cat /root/openvpn-ca/pki/ca.crt) </ca> <cert> $(cat /root/openvpn-ca/pki/issued/client1.crt) </cert> <key> $(cat /root/openvpn-ca/pki/private/client1.key) </key>
-
传输配置文件
将client.ovpn通过安全方式(如 SFTP)传输到客户端设备。 -
客户端连接
在 Linux 客户端安装 OpenVPN 并连接:sudo apt install -y openvpn sudo openvpn --config client.ovpn
故障排查与优化
-
检查日志
服务器日志:journalctl -u openvpn@server -f
客户端日志:sudo openvpn --config client.ovpn --verb 6 -
常见问题
- 连接超时:检查防火墙规则和服务器端口是否开放。
- 证书错误:确保证书路径正确且未过期。
- 无法访问网络:验证 NAT 转发规则和客户端 DNS 配置。
-
性能优化
- 使用
cipher AES-256-GCM替代 AES-256-CBC 提升性能。 - 调整
keepalive参数以适应网络环境。
- 使用
通过以上步骤,您已成功搭建了基于 Linux 的 OpenVPN 服务器,并实现了安全可靠的远程访问,定期更新证书和监控系统日志是保障长期稳定运行的关键。














