如何在 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>, <cert>, <key>, <tls-crypt> 标签替换为实际证书和密钥的内容。确保每个标签包含对应的文件内容,例如:

<ca>
-----BEGIN CERTIFICATE-----
...CA 证书内容...
-----END CERTIFICATE-----
</ca>

3. 导入客户端配置文件
将 client1.ovpn 文件导入到 OpenVPN 客户端(适用于 Windows、Mac、Linux 及移动设备的 OpenVPN 应用)。在客户端应用中选择 client1.ovpn 文件并连接。

4. 连接测试
启动 OpenVPN 客户端,选择配置文件进行连接。客户端应成功连接到服务器,获得 VPN IP 地址。
————————————————

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/weixin_41961749/article/details/144541355

阅读剩余
THE END