在Linux系统中搭建OpenVPN服务可以为企业或个人提供安全可靠的远程访问解决方案,本文将详细介绍在CentOS 7系统上部署OpenVPN服务器的完整流程,包括环境准备、安装配置、证书管理及客户端连接等关键步骤。

环境准备
首先需要准备一台具有公网IP的Linux服务器,推荐使用CentOS 7或Ubuntu 18.04及以上版本,确保系统已更新至最新状态,并关闭防火墙和SELinux以简化初始配置,实际生产环境中建议正确配置防火墙规则而非直接关闭,执行以下命令更新系统并安装必要的依赖包:
sudo yum update -y sudo yum install -y epel-release wget openssl
安装OpenVPN
通过EPEL仓库安装OpenVPN及其依赖组件,使用以下命令完成安装:
sudo yum install -y openvpn easy-rsa
安装完成后,将Easy-RSA证书工具移动到/etc/openvpn目录下,便于后续管理证书:
sudo mkdir -p /etc/openvpn/easy-rsa sudo cp -rf /usr/share/easy-rsa/* /etc/openvpn/easy-rsa/
配置证书颁发机构
证书是VPN安全性的核心基础,首先初始化PKI(Public Key Infrastructure)结构:
cd /etc/openvpn/easy-rsa sudo ./easyrsa init-pki
创建根证书颁发机构(CA):

sudo ./easyrsa build-ca nopass
生成服务器证书并签名:
sudo ./easyrsa gen-req server nopass sudo ./easyrsa sign-req server server
创建Diffie-Hellman参数文件:
sudo ./easyrsa gen-dh
生成HMAC密钥以增强TLS验证:
sudo openvpn --genkey --secret pki/ta.key
配置OpenVPN服务器
创建服务器配置文件/etc/openvpn/server.conf,内容如下:
port 1194 proto udp dev tun 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 server 10.8.0.0 255.255.255.0 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 tls-crypt /etc/openvpn/easy-rsa/pki/ta.key cipher AES-256-CBC auth SHA256 user nobody group nobody persist-key persist-tun status /var/log/openvpn/openvpn-status.log verb 3
启动并配置服务
创建日志目录并设置权限:

sudo mkdir -p /var/log/openvpn sudo chown nobody:nobody /var/log/openvpn
启动OpenVPN服务并设置为开机自启:
sudo systemctl start openvpn@server sudo systemctl enable openvpn@server
配置防火墙允许VPN流量:
sudo firewall-cmd --permanent --add-port=1194/udp sudo firewall-cmd --permanent --add-masquerade sudo firewall-cmd --reload
生成客户端配置
为客户端创建配置文件需要提取证书和密钥,以下是客户端配置文件模板示例:
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 auth-user-pass verb 3 <ca> -----BEGIN CERTIFICATE----- [此处插入ca.crt内容] -----END CERTIFICATE----- </ca> <cert> -----BEGIN CERTIFICATE----- [此处插入客户端证书内容] -----END CERTIFICATE----- </cert> <key> -----BEGIN PRIVATE KEY----- [此处插入客户端私钥内容] -----END PRIVATE KEY----- </key> <tls-crypt> -----BEGIN OpenVPN Static key V1----- [此处插入ta.key内容] -----END OpenVPN Static key V1----- </tls-crypt>
常见问题排查
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
| 客户端连接失败 | 防火墙阻止 | 检查firewalld和iptables规则 |
| 无法访问内网资源 | IP转发未启用 | 确认net.ipv4.ip_forward=1已设置 |
| 证书验证错误 | 证书不匹配 | 检查ca.crt、client.crt和server.crt |
| 连接速度慢 | 加密算法过重 | 尝试切换至AES-128-CBC |
完成以上配置后,OpenVPN服务器即可正常运行,建议定期备份证书文件和配置,并考虑使用双因素认证增强安全性,对于多用户环境,可以部署OpenVPN的集中式管理方案,如使用OpenVPN Access Server或结合LDAP进行用户认证。


















