如何在 CentOS 上创建 OpenVPN Server 和配置 Client的教程
如何在 CentOS 上创建 OpenVPN Server 和配置 Client的教程
一、安装 OpenVPN Server
在 CentOS 上快速安装 OpenVPN 服务的步骤如下:
1. 更新系统
首先,更新系统以确保所有软件包都是最新的:
sudo yum update -y
2. 安装 EPEL 源并安装 OpenVPN 和 Easy-RSA
安装 EPEL (Extra Packages for Enterprise Linux) 源,并安装 OpenVPN 和 Easy-RSA:
sudo yum install epel-release -y
sudo yum install openvpn easy-rsa -y
3. 手动创建目录并复制 Easy-RSA 文件
创建 OpenVPN 的目录,并将 Easy-RSA 文件复制到指定位置:
mkdir -p ~/openvpn-ca
cp -r /usr/share/easy-rsa/3/* ~/openvpn-ca/
cd ~/openvpn-ca
4. 初始化 Easy-RSA 环境
初始化 Easy-RSA 环境:
./easyrsa init-pki
5. 配置 CA 和证书
完成初始化后,你可以继续配置 CA 和证书。
5.1 生成 CA 证书
./easyrsa build-ca
5.2 生成服务器证书和密钥
./easyrsa build-server-full server nopass
5.3 生成 Diffie-Hellman 参数
./easyrsa gen-dh
6. 生成客户端证书和密钥
为每个客户端生成一个唯一的证书和密钥。以下以 client1
为例:
./easyrsa build-client-full client1 nopass
7. 复制证书和密钥到 OpenVPN 配置目录
将生成的证书和密钥文件复制到 OpenVPN 配置目录中:
mkdir -p /etc/openvpn/server
sudo cp pki/ca.crt pki/issued/server.crt pki/private/server.key pki/dh.pem /etc/openvpn/server
对于客户端证书,可以复制到 /etc/openvpn/clients/
或其他合适的位置:
mkdir -p ~/client-configs/keys
cp pki/ca.crt pki/issued/client1.crt pki/private/client1.key ~/client-configs/keys/
8. 生成 ta.key 文件
sudo openvpn --genkey --secret /etc/openvpn/server/ta.key
9. 配置 OpenVPN 服务器
复制默认的配置文件并进行修改:
sudo cp /usr/share/doc/openvpn*/sample/sample-config-files/server.conf /etc/openvpn/server/server.conf
然后编辑 /etc/openvpn/server/server.conf
,修改以下关键参数:
- 证书和密钥路径:
ca ca.crt
cert server.crt
key server.key
dh dh.pem
-
开启客户端之间的通信:取消注释
client-to-client
,允许客户端之间通信。 -
启用 NAT:确保启用 IP 转发,编辑
/etc/sysctl.conf
文件,设置以下内容:
net.ipv4.ip_forward = 1
运行以下命令使其生效:
sudo sysctl -p
10. 完整的 server.conf 配置文件
可以参考下面的配置:
port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key # This file should be kept secret
dh none
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 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"
duplicate-cn
keepalive 10 120
tls-crypt ta.key
cipher AES-256-GCM
auth SHA256
persist-key
persist-tun
status /var/log/openvpn/openvpn-status.log
verb 3
explicit-exit-notify 1
如果没有 /var/log/openvpn/
路径,请使用下面的命令创建:
mkdir -p /var/log/openvpn/
11. 配置防火墙
确保防火墙允许 OpenVPN 流量,通过以下命令添加防火墙规则:
sudo systemctl enable firewalld
sudo systemctl start firewalld
sudo firewall-cmd --zone=public --add-service=openvpn --permanent
sudo firewall-cmd --zone=public --add-masquerade --permanent
sudo firewall-cmd --reload
可以使用以下命令检查 firewalld
的 masquerade 设置是否已生效:
sudo firewall-cmd --zone=public --query-masquerade
如果返回 yes
,则 NAT 转发已成功启用。
12. 启动 OpenVPN 服务(在 CentOS 7+)
在 CentOS 7 及以上版本,OpenVPN 可能会使用 openvpn-server@
服务单元,而不是 openvpn@
。试试以下命令:
sudo systemctl start openvpn-server@server
sudo systemctl enable openvpn-server@server
检查服务状态:
sudo systemctl status openvpn-server@server
检查系统日志:
sudo journalctl -xe
你也可以手动运行 OpenVPN 来直接查看错误信息:
sudo openvpn --config /etc/openvpn/server/server.conf
二、配置 OpenVPN 客户端
1. 准备客户端配置文件
创建客户端配置文件 client1.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-GCM
auth SHA256
key-direction 1
#ignore-unknown-option block-outside-dns
tun-mtu 1400
mssfix 1360
verb 3
<ca>
# 将 ca.crt 的内容复制到这里
</ca>
<cert>
# 将 client1.crt 的内容复制到这里
</cert>
<key>
# 将 client1.key 的内容复制到这里
</key>
<tls-crypt>
# 将 ta.key 的内容复制到这里
</tls-crypt>
将 YOUR_SERVER_IP
替换为您的 OpenVPN 服务器的实际 IP 地址。
2. 将证书和密钥内容复制到配置文件中
在 client1.ovpn
文件中,将
,
,
,
标签替换为实际证书和密钥的内容。确保每个标签包含对应的文件内容,例如:
<ca>
-----BEGIN CERTIFICATE-----
...CA 证书内容...
-----END CERTIFICATE-----
</ca>
3. 导入客户端配置文件
将 client1.ovpn
文件导入到 OpenVPN 客户端(适用于 Windows、Mac、Linux 及移动设备的 OpenVPN 应用)。在客户端应用中选择 client1.ovpn
文件并连接。
4. 连接测试
启动 OpenVPN 客户端,选择配置文件进行连接。客户端应成功连接到服务器,获得 VPN IP 地址。