一、openVPN服务端的搭建

1、安装其他依赖包

安装epel仓库和vim,tree

1
yum install epel-release vim tree -y

2、安装rsa密钥生成工具

安装rsa密钥生成工具

1
yum install easy-rsa -y

安装完成后,可以看到在/usr/share/easy-rsa目录下后几个版本,这里只用3.0.8版本

image-20240108144117894

3、生成ca证书和服务端、客户端证书

3.1 创建/opt/easy-rsa目录用来生成与存放证书

创建并进入/opt/easy-rsa目录

1
2
mkdir /opt/easy-rsa
cd /opt/easy-rsa

3.2 复制相关文件到当前目录下

因为只使用3.0.8版本,只复制这个版本的内容

1
2
cp -a /usr/share/easy-rsa/3.0.8/* .
cp -a /usr/share/doc/easy-rsa-3.0.8/vars.example ./vars

3.3 创建证书

  1. 初始化,在当前目录创建pki目录,用于存储证书
1
./easyrsa init-pki

可以看到,当前目录下多了pki目录

image-20240108150301886

  1. 创建ca根证书,会提示设置密码,用于ca对之后生成的server和client证书签名时使用,其他提示内容直接回车
1
./easyrsa build-ca

image-20240108154258836

  1. 创建server端证书和私钥文件,nopass表示不加密私钥文件,提示内容直接回车即可
1
./easyrsa gen-req server nopass

image-20240108154500891

  1. 给server端证书签名,提示内容需要输入yes和创建ca根证书时候的密码(前面设置的123456)
1
./easyrsa sign server server

image-20240108154715004

  1. 创建Diffie-Hellman文件,密钥交换时的Diffie-Hellman算法
1
./easyrsa gen-dh
  1. 创建client端的证书和私钥文件,nopass表示不加密私钥文件,提示内容直接回车
1
./easyrsa gen-req client nopass

image-20240108155028845

  1. 给client端证书签名,提示内容输入yes和创建ca根证书时候的密码(前面设置的123456)
1
./easyrsa sign client client

image-20240108155149428

  1. 使用tree命令查看生成的证书
1
tree

image-20240108155809916

4、安装openVPN服务端

4.1 安装软件

1
yum install openvpn -y

4.2 修改配置文件

1
vim /etc/openvpn/server.conf

修改为以下内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
port 1194                                  #端口
proto tcp #协议
dev tun #采用路由隧道模式
ca /opt/easy-rsa/pki/ca.crt #ca证书的位置
cert /opt/easy-rsa/pki/issued/server.crt #服务端公钥的位置
key /opt/easy-rsa/pki/private/server.key #服务端私钥的位置
dh /opt/easy-rsa/pki/dh.pem #证书校验算法
server 10.8.0.0 255.255.255.0 #给客户端分配的地址池
push "route 192.168.1.0 255.255.255.0" #允许客户端访问的内网网段
ifconfig-pool-persist ipp.txt #地址池记录文件位置,未来让openvpn客户端固定ip地址使用的
keepalive 10 120 #存活时间,10秒ping一次,120秒如果未收到响应则视为短线
max-clients 100 #最多允许100个客户端连接
status openvpn-status.log #日志位置,记录openvpn状态
log /var/log/openvpn.log #openvpn日志记录位置
verb 3 #openvpn版本
client-to-client #允许客户端与客户端之间通信
persist-key #通过keepalive检测超时后,重新启动VPN,不重新读取
persist-tun #检测超时后,重新启动VPN,一直保持tun是linkup的,否则网络会先linkdown然后再linkup
duplicate-cn #客户端密钥(证书和私钥)是否可以重复
script-security 3
auth SHA256
tun-mtu 1500
cipher AES-256-GCM
ncp-ciphers AES-256-GCM:AES-128-GCM

4.3 启动服务

1
systemctl start openvpn@server

重启服务:systemctl restart openvpn@server

停止服务:systemctl stop openvpn@server

查看服务:systemctl status openvpn@server

设置开机自启:systemctl enable openvpn@server

二、客户端搭建

客户端装在window上,安装的openVPN GUI

1、下载并安装openVPN GUI

下载地址:https://openvpn.net/community-downloads/

下载openVPN GUI是要下载和服务端openVPN一样的版本的

查看服务端openvpn版本

1
openvpn --verion

image-20240108164437774

如果openvpn --verion报错,试试openvpn -verion

image-20240108170448454

2、安装

双击下载的安装包:

image-20240108170717419

一直点击next,直到出现安装路径,自定义安装路径:

image-20240108170948690

点击安装即可

3、配置

打开安装openVPN GUI的目录,然后点击进去找到config目录

image-20240108171248456

然后把在服务器生成的ca证书,客户端的crt证书和key证书放到里面

image-20240108171918227

然后在config文件夹里创建一个client.ovpn文件

image-20240108172219205

写入以下配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
client
dev tun
proto tcp
remote xxxx 1194
resolv-retry infinite
nobind
user nobody
group nobody
persist-key
persist-tun
remote-cert-tls server
verb 3
ca ca.crt
cert client.crt
key client.key
ns-cert-type server
#auth-user-pass
#auth-nocache
auth SHA256
#link-mtu 1500
tun-mtu 1500
cipher AES-256-GCM
ncp-ciphers AES-256-GCM:AES-128-GCM

其中,remote要写服务端的ip地址,1194是默认端口,如果做了端口映射或者修改了服务端的端口,需要修改

4、启动

双击桌面openVPN GUI的图标,此时并没有什么反应,看电脑右下角是否出现了如下图标

image-20240108172738552

鼠标右击该图标,然后点击连接

image-20240108172804462

连接成功会有提示

image-20240108172837320

同时右下角的图标会填充绿色

image-20240108172900252