一、安装前的准备
1、更新系统:确保系统软件包是最新的。
sudo yum update y
2、安装 EPEL 源:EPEL(Extra Packages for EnterPRise Linux)提供了一些额外的软件包,包括 OpenVPN。
sudo yum install epelrelease y
3、安装 OpenVPN 和 EasyRSA:OpenVPN 是一个开源的 VPN 解决方案,EasyRSA 用于生成证书。
sudo yum install openvpn easyrsa y
二、生成证书和密钥
1、创建并进入证书目录:
mkdir p ~/openvpnca cd ~/openvpnca cp r /usr/share/easyrsa/3/* ~/openvpnca/
2、初始化 EasyRSA 环境:
./easyrsa initpki
3、生成 CA 证书:
./easyrsa buildca
4、生成服务器证书和密钥:
./easyrsa buildserverfull server nopass
5、生成 DiffieHellman 参数:
./easyrsa gendh
6、生成客户端证书和密钥:以client1
为例,每个客户端都需要一个唯一的证书和密钥。
./easyrsa buildclientfull client1 nopass
三、配置 OpenVPN 服务器
1、复制证书和密钥到 OpenVPN 配置目录:
sudo mkdir p /etc/openvpn/server sudo cp pki/ca.crt pki/issued/server.crt pki/private/server.key pki/dh.pem /etc/openvpn/server/
2、生成 ta.key 文件:用于 TLS 认证。
sudo openvpn genkey secret /etc/openvpn/ta.key
3、编辑配置文件:复制默认配置文件并进行修改。
sudo cp /usr/share/doc/openvpn*/sample/sampleconfigfiles/server.conf /etc/openvpn/server/server.conf sudo nano /etc/openvpn/server/server.conf
4、修改关键参数:
port 1194
监听端口。
proto udp
协议类型。
dev tun
设备类型。
ca ca.crt
CA 证书路径。
cert server.crt
服务器证书路径。
key server.key
服务器私钥路径。
dh dh.pem
DiffieHellman 参数路径。
server 10.8.0.0 255.255.255.0
分配给客户端的地址池。
push "redirectgateway def1 bypassdhcp"
强制所有流量通过 VPN,设置 DNS 服务器。
keepalive 10 120
保活时间。
tlscrypt ta.key
启用 TLS 认证。
cipher AES256GCM
加密算法。
auth SHA256
认证算法。
persistkey
和persisttun
重启后保持连接。
status /var/log/openvpn/openvpnstatus.log
状态日志路径。
verb 3
日志级别。
clienttoclient
允许客户端之间通信。
explicitexitnotify 1
明确退出通知。
四、配置防火墙和网络转发
1、启动并启用 firewalld:
sudo systemctl start firewalld sudo systemctl enable firewalld
2、添加防火墙规则:允许 OpenVPN 流量和 IP 伪装。
sudo firewallcmd zone=public addservice=openvpn permanent sudo firewallcmd zone=public addmasquerade permanent sudo firewallcmd reload
3、检查 NAT 转发是否生效:
sudo firewallcmd zone=public querymasquerade
如果返回yes
,则 NAT 转发已成功启用。
五、启动 OpenVPN 服务
1、启动并启用 OpenVPN 服务:在 CentOS 7 及以上版本,OpenVPN 可能会使用openvpnserver@
服务单元。
sudo systemctl start openvpnserver@server sudo systemctl enable openvpnserver@server
2、检查服务状态:
sudo systemctl status openvpnserver@server
3、查看错误信息(如果有):可以通过以下命令直接运行 OpenVPN 来查看错误信息:
sudo openvpn config /etc/openvpn/server/server.conf
六、配置 OpenVPN 客户端
1、准备客户端配置文件:创建一个名为client1.ovpn
的文件,内容如下:
client dev tun proto udp remote YOUR_SERVER_IP 1194 resolvretry infinite nobind persistkey persisttun remotecerttls server complzo verb 3 <ca>path to your ca.crt> <cert>path to your client1.crt> <key>path to your client1.key> <tlscrypt>path to your ta.key>
将YOUR_SERVER_IP
替换为你的 OpenVPN 服务器的 IP 地址,并将证书和密钥的路径替换为实际路径。
2、连接客户端:使用 OpenVPN 客户端连接到服务器,可以使用以下命令:
sudo openvpn config client1.ovpn
七、FAQs问答环节
Q1: OpenVPN 服务器无法启动,应该如何排查问题?A1: 首先检查 OpenVPN 服务的状态和日志,运行sudo systemctl status openvpnserver@server
查看服务状态,运行sudo journalctl xe
查看系统日志,或者手动运行 OpenVPN 来直接查看错误信息:sudo openvpn config /etc/openvpn/server/server.conf
,确保防火墙规则正确,NAT 转发已启用,并且证书和配置文件没有错误。
Q2: 如何在 CentOS 7 上更改 OpenVPN 服务器的监听端口?A2: 要更改 OpenVPN 服务器的监听端口,只需编辑服务器配置文件/etc/openvpn/server/server.conf
,找到port
行并将其值更改为所需的端口号(例如port 2022
),然后保存文件并重启 OpenVPN 服务:sudo systemctl restart openvpnserver@server
,确保防火墙规则也相应地更新,以允许新的端口通过。