框架3.2--搭建V·P·N
部署OpenVPN
OpenVPN 分为客户端和服务端
一、服务端
- 准备配置文件
- 生成CA机构证书
- 生成服务器证书(私钥)
- 给服务器证书创建 Diffie-Hellman 密钥
- 创建客户端证书
1、安装openvpn和证书工具
[root@m01 ~]# yum -y install openvpn easy-rsa
PS:没有优化过的虚拟机无法安装,下载init.sh到虚拟机中,输入命令./init.sh运行自动安装几百个优化项目,静待安装完毕即可。
下载网址:
链接: https://pan.baidu.com/s/17JjbS7Dpp_XKMtz5s6FtAA 提取码: dvkh 复制这段内容后打开百度网盘手机App,操作更方便哦

2、生成服务器配置文件
将配置文件移动到openvpn下面:
[root@m01 ~]# cp /usr/share/doc/openvpn-2.4.11/sample/sample-config-files/server.conf /etc/openvpn/
然后再查看下是否移动成功:
[root@localhost ~]# ll /etc/openvpn

3、准备证书签发相关文件
也是将文件复制到指定目录下:
[root@m01 ~]# cp -r /usr/share/easy-rsa/ /etc/openvpn/easy-rsa-server

4、准备签发证书相关变量的配置文件
同样将文件复制到指定目录下:
[root@m01 ~]# cp /usr/share/doc/easy-rsa-3.0.8/vars.example /etc/openvpn/easy-rsa-server/3/vars
这里CA和OpenVPN服务器颁发的证书的有效期,可适当加长
[root@centos8 ~]# vim /etc/openvpn/easy-rsa-server/3/vars
CA的证书有效期默为为10年,可以适当延长,比如:36500天
原指令:set_var EASYRSA_CA_EXPIRE 3650
新指令:set_var EASYRSA_CA_EXPIRE 36500
服务器证书默为为825天,可适当加长,比如:3650天
原指令:set_var EASYRSA_CERT_EXPIRE 825
新指令:set_var EASYRSA_CERT_EXPIRE 3650
内部参数如下2图


以上准备完配置文件之后,可以查看下创建的目录树,用tree指令
先进行安装tree软件包,然后打印目录结构查看。
[root@localhost ~]# yum -y install tree
[root@localhost ~]# tree /etc/openvpn/

前面的是准备配置文件,接下来是用脚本easy-rsa来签发证书。
5、初始化PKI生成PKI相关目录和文件
pki就是存放证书的目录
必须移动到这个目录下进行。
[root@localhost ~]# cd /etc/openvpn/easy-rsa-server/3
6、初始化数据,在当前目录下生成pki目录及相关文件
生成pki文件
[root@localhost 3]# ./easyrsa init-pki

须知:
CA证书并不是我们自己创建的,而是CA机构创建的CA证书创建的,且最终需要的是CA证书创建的服务器证书。结构图如下:

7、创建CA机构
首先必须移动到此目录下面:
[root@localhost 3]# cd /etc/openvpn/easy-rsa-server/3
[root@localhost 3]# ./easyrsa build-ca nopass

使用默认的话,直接回车键即可。这样CA机构证书就创建完成啦。

8、查看下是否生成CA机构证书
[root@localhost 3]# cat pki/ca.crt
一篇乱码,咱也看不懂,就直接略过!

9、验证CA证书
[root@localhost 3]# openssl x509 -in pki/ca.crt -noout -text
生成一些乱七八糟东西,看不懂就是成功啦,哈哈!
·
·
以上是生成了CA机构证书了,接下来需要生成服务器证书
10、创建服务端证书申请(私钥)
也是必须在此目录下进行:
[root@localhost 3]# /etc/openvpn/easy-rsa-server/3
[root@localhost 3]# ./easyrsa gen-req server nopass
依然还是让你创建个申请的名字,跟上面一样,默认即可。

11、创建证书
[root@localhost 3]# ./easyrsa sign server server

输入yes命令,即可下一步。到目前为止进行了一半了,马上就要完工啦!

12、验证证书
先查看生成的证书编码,进而根据证书编码来进行验证。
[root@localhost 3]# tree pki

然后执行验证语句:
[root@localhost 3]# diff pki/certs_by_serial/0183598E0B283EA0EC780CFB00216763.pem pki/issued/server.crt

·
·
以上是证书创建完毕,接下来是给证书创建密钥
二、创建 Diffie-Hellman 密钥
方式一:
密钥加载时间较长,大概2分钟左右,主要看电脑配置。一直在写.+
[root@localhost 3]# ./easyrsa gen-dh
方式二:
[root@localhost 3]# openssl dhparam -out /etc/openvpn/dh2048.pem 2048

·
·
这样服务端的所有证书就都创建完了,接下来创建客户端证书。
三、客户端证书
1、准备配置文件
先创建客户端的环境,此时就要把密钥复制到客户端目录里来。
准备工作三步
[root@localhost 3]# cp -r /usr/share/easy-rsa/ /etc/openvpn/easy-rsa-client
[root@localhost 3]# cp /usr/share/doc/easy-rsa-3.0.8/vars.example /etc/openvpn/easy-rsa-client/3/vars
[root@localhost 3]# cd /etc/openvpn/easy-rsa-client/3

2、初始化证书目录
[root@localhost 3]# ./easyrsa init-pki

3、生成客户端证书
自己起个名字就行,这里我命名zhangyida
[root@localhost 3]# ./easyrsa gen-req zhangyida nopass

4、将客户端证书请求文件复制到CA的工作目录
因为客户端和服务端是要关联起来,所以就必须将客户端的证书加载到服务端去,然后服务端认为你这个客户端的证书是正确的话,那就通过。
因此,我们需要cd到服务端去,同意客户端这个证书。
[root@localhost 3]# cd /etc/openvpn/easy-rsa-server/3
[root@localhost 3]# ./easyrsa import-req /etc/openvpn/easy-rsa-client/3/pki/reqs/zhangyida.req zhangyida

5、签发客户端证书
前面已经发出了证书的请求了,现在就可以签发证书啦,且一定要在server目录端进行操作
[root@localhost 3]# pwd
/etc/openvpn/easy-rsa-server/3
[root@localhost 3]# ./easyrsa sign client zhangyida

6、验证
[root@localhost 3]# cat pki/index.txt
[root@localhost 3]# ll pki/issued/
[root@localhost 3]# ll pki/certs_by_serial/

PS:如果不一致,那么恭喜你可以恢复快照了!!!
·
·
·
此时,客户端证书就已经生成完毕了。也就是搭建完毕了。接下来就是要在Windows上面进行链接了。
1.首先下载openVPN软件的安装包把它安装到Windows电脑上。
网址:此软件无法分项,请自行下载,这里使用版本openvpn-install-2.4.7-I606-Win10
2.安装完成后,打开vpn软件会出现报错(下图),因为还没有进行配置。

上图显示没有找到可读取的配置文件,意思就是我们需要创建一个用来沟通配置文件的链接文件才行。也就是中间人用来传递信息。
3.综上所述,所以要先搞服务器端配置文件,详细见下文
四、创建链接配置文件
1、修改openvpn配置文件
[root@localhost 3]# vim /etc/openvpn/server.conf
里面都是些注释,需要把注释去掉,让它生效
[root@localhost 3]# grep -Ev '^#|^$' /etc/openvpn/server.conf
本机上有3个网卡,如果启动vpn他会自动创建一个tun网卡,此网卡专供于vpn使用。
下文是必须的配置内容,需要把此内容将server.conf文件的内容覆盖掉。所以先将配置文件清空。
[root@localhost 3]# >/etc/openvpn/server.conf
port 1194
proto tcp
dev tun
ca /etc/openvpn/certs/ca.crt
cert /etc/openvpn/certs/server.crt
key /etc/openvpn/certs/server.key
dh /etc/openvpn/certs/dh.pem
server 10.8.0.0 255.255.255.0
push "route 172.16.1.0 255.255.255.0"
keepalive 10 120
cipher AES-256-CBC
compress lz4-v2
push "compress lz4-v2"
max-clients 2048
user openvpn
group openvpn
status /var/log/openvpn/openvpn-status.log
log-append /var/log/openvpn/openvpn.log
verb 3
mute 20
然后将以上内容复制到/etc/openvpn/server.conf里面.(注意注意注意!!!粘贴也有可能出错,粘贴完,一定一定一定比对下,是否正确,然后再保存!)
2、创建日志文件等:
2.1 创建日志文件目录
[root@m01 3]# mkdir -p /var/log/openvpn
2.2 创建权限
[root@m01 ~]# chown openvpn.openvpn /var/log/openvpn
2.3 创建存放证书目录
[root@m01 ~]# mkdir -p /etc/openvpn/certs
2.4 复制证书
[root@m01 ~]# cp /etc/openvpn/easy-rsa-server/3/pki/dh.pem /etc/openvpn/certs/
[root@m01 ~]# cp /etc/openvpn/easy-rsa-server/3/pki/ca.crt /etc/openvpn/certs/
[root@m01 ~]# cp /etc/openvpn/easy-rsa-server/3/pki/private/server.key /etc/openvpn/certs/
[root@m01 ~]# cp /etc/openvpn/easy-rsa-server/3/pki/issued/server.crt /etc/openvpn/certs/
[root@m01 ~]# ll /etc/openvpn/certs/
total 20
-rw------- 1 root root 1172 Dec 28 10:54 ca.crt
-rw------- 1 root root 424 Dec 28 10:54 dh.pem
-rw------- 1 root root 4552 Dec 28 10:54 server.crt
-rw------- 1 root root 1704 Dec 28 10:54 server.key


·
·
·
我们需要从192.168.那个网段里边的网络流转到172.16.这里面来。所以我们需要添加一个iptables规则。但是再添加之前需要修改内核参数,
3、启动OpenVPN
3.1、开启系统内核网络转发功能
CentOS默认是关闭的,需要启动
[root@m01 ~]# echo net.ipv4.ip_forward = 1 >> /etc/sysctl.conf
[root@m01 ~]# sysctl -p
如果前面执行过init.sh优化文件,就不需要执行上面两行代码了,因为已经自动操作过了,可以查看下。
[root@localhost 3]# cat /etc/sysctl.conf
3.2、安装防火墙
[root@m01 ~]# yum install iptables-services -y
[root@m01 ~]# systemctl disable --now firewalld
[root@m01 ~]# systemctl start iptables
[root@m01 ~]# iptables -F
[root@m01 ~]# iptables -F -t nat

3.3 添加iptables规则
[root@m01 ~]# iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j MASQUERADE

如果看到这个iptables规则在,那就代表成功了!
但是一旦重启了,那么规则就没了,重启后那机器就宕机了,所以需要永久修改规则。
3.4 永久保存Iptables规则
[root@m01 ~]# service iptables save

3.5 启动OpenVPN
[root@m01 ~]# systemctl enable --now openvpn@server

3.6 检查
检查下vpn现在的状态,是启动还是关闭。
[root@localhost 3]# systemctl enable --now openvpn@server

查看下现在网卡有几个了,我这里4个了

4、创建链接文件
4.1 创建链接文件
[root@localhost 3]# mkdir -p /etc/openvpn/client/zhangyida/
4.2 准备证书
[root@localhost 3]# cp /etc/openvpn/easy-rsa-server/3/pki/ca.crt /etc/openvpn/client/zhangyida/
[root@localhost 3]# cp /etc/openvpn/easy-rsa-server/3/pki/issued/zhangyida.crt /etc/openvpn/client/zhangyida/
[root@m01 chenyang]# cp /etc/openvpn/easy-rsa-client/3/pki/private/chenyang.key /etc/openvpn/client/chenyang/
4.3 准备链接文件
[root@m01 ~]# vim /etc/openvpn/client/chenyang/client.ovpn
将以下内容复制到里面
client
dev tun
proto tcp
remote 192.168.15.81 1194
resolv-retry infinite
nobind
ca ca.crt
cert chenyang.crt
key chenyang.key
remote-cert-tls server
cipher AES-256-CBC
verb 3
compress lz4-v2

框架3.2--搭建V·P·N的更多相关文章
- 浅谈一下SSI+Oracle框架的整合搭建
浅谈一下SSI+Oracle框架的整合搭建 最近换了一家公司,公司几乎所有的项目都采用的是Struts2+Spring+Ibatis+Oracle的架构,上一个东家一般用的就是JSF+Spring,所 ...
- Python3.6 性能测试框架Locust的搭建与使用
背景 Python3.6 性能测试框架Locust的搭建与使用 基础 python版本:python3.6 方法一: pip install locustio 方法二: 开发工具:pycharm 使用 ...
- 嵌入式框架Zorb Framework搭建一:嵌入式环境搭建、调试输出和建立时间系统
我是卓波,我是一名嵌入式工程师,我万万没想到我会在这里跟大家吹牛皮. 嵌入式框架Zorb Framework搭建过程 嵌入式框架Zorb Framework搭建一:嵌入式环境搭建.调试输出和建立时间系 ...
- 嵌入式框架Zorb Framework搭建二:环形缓冲区的实现
我是卓波,我是一名嵌入式工程师,我万万没想到我会在这里跟大家吹牛皮. 嵌入式框架Zorb Framework搭建过程 嵌入式框架Zorb Framework搭建一:嵌入式环境搭建.调试输出和建立时间系 ...
- 嵌入式框架Zorb Framework搭建三:列表的实现
我是卓波,我是一名嵌入式工程师,我万万没想到我会在这里跟大家吹牛皮. 嵌入式框架Zorb Framework搭建过程 嵌入式框架Zorb Framework搭建一:嵌入式环境搭建.调试输出和建立时间系 ...
- 嵌入式框架Zorb Framework搭建四:状态机的实现
我是卓波,我是一名嵌入式工程师,我万万没想到我会在这里跟大家吹牛皮. 嵌入式框架Zorb Framework搭建过程 嵌入式框架Zorb Framework搭建一:嵌入式环境搭建.调试输出和建立时间系 ...
- 嵌入式框架Zorb Framework搭建五:事件的实现
我是卓波,我是一名嵌入式工程师,我万万没想到我会在这里跟大家吹牛皮. 嵌入式框架Zorb Framework搭建过程 嵌入式框架Zorb Framework搭建一:嵌入式环境搭建.调试输出和建立时间系 ...
- 嵌入式框架Zorb Framework搭建六:定时器的实现
我是卓波,我是一名嵌入式工程师,我万万没想到我会在这里跟大家吹牛皮. 嵌入式框架Zorb Framework搭建过程 嵌入式框架Zorb Framework搭建一:嵌入式环境搭建.调试输出和建立时间系 ...
- 嵌入式框架Zorb Framework搭建七:任务的实现
我是卓波,我是一名嵌入式工程师,我万万没想到我会在这里跟大家吹牛皮. 嵌入式框架Zorb Framework搭建过程 嵌入式框架Zorb Framework搭建一:嵌入式环境搭建.调试输出和建立时间系 ...
- [技术博客]Django框架-后端的搭建
目录 Django框架-后端的搭建 前言 环境的部署 项目的创建 app的使用 创建app 修改配置文件 app中数据表的构建 前端接口 接口的路径 运行服务器 验证后端 Django框架-后端的搭建 ...
随机推荐
- 基于CentOS7.x gitlab环境搭建,卸载,汉化 --卸载篇
gitlab环境搭建,卸载,汉化 --卸载篇 完全卸载 停止gitlab gitlab-ctl stop 卸载gitlab rpm -e gitlab-ce 查看gitlab进程 ps aux | ...
- centos7.5上安装go1.13.4
一.安装 1.下载go1.13.4.linux-amd64.tar.gz 先进入官网https://golang.google.cn/ 再 https://golang.google.cn/doc/i ...
- linux光标命令快捷键(常用)
Ctrl+a 移动到首行 Ctrl+e 移动到尾行 Ctrl+u 将当前光标后面的内容全部删除 (剪辑) ctrl+k 将当前光标前面的内容全部删除 (剪辑) Ctrl+→(左右同理) 移动到下个空格 ...
- C语言考题:输入一个字符串,将此字符串中特定的字符删去后, 显示新的字符串,要求用函数来完成删去字符的操作。
#include <stdio.h> #include <string.h> /*此题只需要删除单个字符,比较简单.相信大家也能做出来的.我这个也是可以实现的.只是加了两个判断 ...
- RDA5807M开发指南 & 开源库函数
文档标识符:RDA5807M_T-D-P16 作者:DLHC 最后修改日期:2022.1.14 最后修改内容:修改.添加内容 发布状态:已发布 本文链接:https://www.cnblogs.com ...
- 《Java核心技术·卷Ⅰ:基础知识(原版10》学习笔记 第5章 继承
<Java核心技术·卷Ⅰ:基础知识(原版10>学习笔记 第5章 继承 目录 <Java核心技术·卷Ⅰ:基础知识(原版10>学习笔记 第5章 继承 5.1 类.超类和子类 5.1 ...
- 带你十天轻松搞定 Go 微服务系列(一)
本文开始,我们会出一个系列文章跟大家详细展示一个 go-zero 微服务示例,整个系列分十篇文章,目录结构如下: 环境搭建(本文) 服务拆分 用户服务 产品服务 订单服务 支付服务 RPC 服务 Au ...
- 发现一个现象:golang中大量的go出新协程,必然在GC统计中出现1ms以上的GC延迟
结论:协程池还是有必要的,能够有效减小GC的压力. 我的某个服务,为了方(tou)便(lan),一些异步处理的场合直接go出协程来处理. 服务中使用这样的代码来统计GC的延迟: var mem run ...
- Linux深入探索01-stty与键盘信号
----- 最近更新[2021-12-20]----- 一.简介 最初的 Unix 设定假定人们使用终端连接主机计算机.30多年过去后,情况依然如此,即便是在自己的PC机上运行Unix.多年以来,终端 ...
- 返回值List是JsonArray
MyController中: index.jsp中