搭建步骤

安装OpenVPN服务端

测试环境介绍:
云服务器(Ubuntu20.04 64位)搭建服务端,公网IP:119.96.126.25
一台测试机搭建客户端(RedHat系),IP:10.10.111.24
另一台测试机搭建客户端(MOXA系统,Debian系),IP:10.10.112.63
最后目标是实现两台客户端之间能够互联

使用命令在三台主机上安装openVPN

RedHat系

yum install -y openvpn

Debian系

apt install openvpn

在这里插入图片描述

安装Easy RSA套件(用于生成服务端和客户端所需的证书和密钥)

下载Easy RSA源码包;

Easy RSA下载官网:https://github.com/OpenVPN/easy-rsa/releases
[root@localhost ~]wget https://github.com/OpenVPN/easy-rsa/releases/download/v3.1.2/EasyRSA-3.1.2.tgz

下载完后解压,在/etc/openvpn目录下创建目录easy-rsa,将刚才解压缩的所有文件复制到这个目录下

[root@localhost ~]#tar -zxvf EasyRSA-3.1.2.tgz
[root@localhost ~]#mkdir /etc/openvpn/easy-rsa
[root@localhost ~]#cp -r EasyRSA-3.1.2/* /etc/openvpn/easy-rsa
在这里插入图片描述

在服务端生成私钥和证书

– 进入Easy RSA的安装目录,并配置参数;
[root@localhost ~]# cd /etc/openvpn/easy-rsa/
[root@localhost easy-rsa]# cp vars.example vars
[root@localhost easy-rsa]# vim vars
在这里插入图片描述
– 清理原有证书和私钥并初始化;
[root@localhost easy-rsa]# ./easyrsa clean-all
在这里插入图片描述
– 生成CA根证书;
[root@localhost easy-rsa]# ./easyrsa build-ca
在这里插入图片描述
CA根证书生成位置:/etc/openvpn/easy-rsa/pki/ca.crt

– 为OpenVPN服务端生成server证书和私钥;
备注:这里使用nopass参数设置不需要密码,那么在启动OpenVPN服务的时候就不提示输入密码。
[root@localhost easy-rsa]# ./easyrsa build-server-full server nopass
在这里插入图片描述
服务端证书路径:/etc/openvpn/easy-rsa/pki/issued/server.crt
服务端私钥路径:/etc/openvpn/easy-rsa/pki/private/server.key

– 生成Diffie-Hellman算法需要的密钥文件;
[root@localhost easy-rsa]# ./easyrsa gen-dh
等待一段时间即可生成成功
在这里插入图片描述
– 生成tls-auth Key用于防止DDOS和TLS攻击;
[root@localhost easy-rsa]# openvpn --genkey --secret ta.key
在这里插入图片描述
ta.key路径:/etc/openvpn/easy-rsa/ta.key

OpenVPN服务端配置

– 修改OpenVPN服务端配置文件vim /etc/openvpn/server/server.conf;
在这里插入图片描述
在这里插入图片描述
– 拷贝私钥、公钥和证书等文件到server.conf同级目录下;
备注:需要拷贝的文件包括ca.crt、ca.key、server.crt、server.key、dh.pem、ta.key。
[root@localhost server]# cp /etc/openvpn/easy-rsa/pki/ca.crt .
[root@localhost server]# cp /etc/openvpn/easy-rsa/pki/private/ca.key .
[root@localhost server]# cp /etc/openvpn/easy-rsa/pki/issued/server.crt .
[root@localhost server]# cp /etc/openvpn/easy-rsa/pki/private/server.key .
[root@localhost server]# cp /etc/openvpn/easy-rsa/pki/dh.pem .
[root@localhost server]# cp /etc/openvpn/easy-rsa/ta.key .
在这里插入图片描述

启动服务端服务

[root@uos server]# openvpn --config server.conf

OpenVPN客户端配置

##在服务端生成客户端的证书和私钥,每多一个客户端就要多生成一份
[root@localhost easy-rsa]# ./easyrsa build-client-full client nopass
在这里插入图片描述
客户端证书路径:/etc/openvpn/easy-rsa/pki/issued/client.crt
客户端私钥路径:/etc/openvpn/easy-rsa/pki/private/client.key
将生成的客户端证书(client.crt)、私钥(client.key),服务端根证书(ca.crt)、ta.key打包发送到客户端的/etc/openvpn/client,可以用sz命令通过XSHEEL发送到Windows端,然后用rz命令从Windows端发送给客户端
在这里插入图片描述
– 修改OpenVPN客户端配置文件 vim /etc/openvpn/client/client.conf
在这里插入图片描述

启动客户端服务

[root@uos client]# openvpn --config client.conf
在这里插入图片描述
使用ifconfig查看虚拟网卡的IP地址
在这里插入图片描述
另外一台客户端执行同样的操作

在云服务器上配置安全组

之前启动客户端怎么也没法连上服务器,折腾半天最后发现是服务器上的端口没有放行,这条非常重要!!!
在这里插入图片描述

测试能否互连

一台服务端和两台客户端启动openVPN服务后,互相ping测试能否互连
在这里插入图片描述

在Windows配置openVPN客户端

跟之前一样先在服务端生成一份客户端的证书和密钥,然后将必要的这5份文件拷贝到如图所示的目录下。注意:在windows系统下client.conf的需要改成client.ovpn
在这里插入图片描述
打开openVPN客户端连接,可以看到当前状态连接成功
在这里插入图片描述

查看openVPN服务是否运行

ps -ef | grep openvpn

在这里插入图片描述

结束openvpn服务

kill -9 pid

在这里插入图片描述

在Linux环境下设置openVPN开机自启动脚本

1.打开终端并使用root权限登录到系统
2.创建一个systemd服务来在Linux系统启动时自动启动OpenVPN客户端

vim /etc/systemd/system/openvpn-client.service

3.将以下内容复制并粘贴到文件中:

[Unit]
Description=OpenVPN client service
After=network.target

[Service]
Type=simple
ExecStart=/usr/sbin/openvpn --cd /etc/openvpn/client --config /etc/openvpn/client/client.conf
Restart=always

[Install]
WantedBy=multi-user.target

在这里插入图片描述
4.保存关闭后,重新启动systemd服务

sudo systemctl daemon-reload
sudo systemctl enable openvpn-client.service

5.现在,当系统启动时,OpenVPN客户端将自动启动并连接到服务器。

在服务端下配置CCD功能,限制客户端之间互相访问

目的

client-moxa(openVPN虚拟IP地址:10.8.1.18)客户端能通过服务端访问client-24(openVPN虚拟IP地址:10.8.1.6)客户端,而client-24客户端不能通过服务端访问client-moxa客户端

配置步骤

1.首先,在服务端开启CCD功能,在 OpenVPN 服务器的配置文件中,添加以下行:

client-config-dir /etc/openvpn/ccd

在这里插入图片描述
其中,ccd 是一个文件夹路径,用于存放客户端 CCD 配置文件,我这里CCD文件夹创建的路径在/etc/openvpn/下。
在这里插入图片描述
2.在 ccd 文件夹中,为 client-24 客户端创建一个名为 client-24 的文件,文件内容为:

ifconfig-push 10.8.1.6 255.255.255.0

其中,这里的文件名一定要和客户端的文件名字一样
在这里插入图片描述
这将为 client-24 客户端分配一个固定的 IP 地址(例如 10.8.1.6)。

3.在 ccd 文件夹中,为 client-moxa 客户端创建一个名为 client-moxa 的文件,文件内容为:

iroute 10.8.1.6 255.255.255.255

这将告诉 OpenVPN 服务器将 client-moxa 客户端的请求路由到 10.8.1.6 这个 IP 地址(即 client-24 客户端的 IP 地址)。

4.最后,在服务器配置文件中,添加以下行:

push "route 10.8.1.0 255.255.255.0"

在这里插入图片描述
这将告诉客户端将流量路由到 10.8.1.0/24 子网,其中包括 client-moxa 客户端和 client-24 客户端的 IP 地址。
完成上述步骤后,即可完成配置

转自:https://blog.csdn.net/QAZ600888/article/details/129883353