目录

部署OpenVPN

OpenVPN 分为客户端和服务端

一、服务端

  1. 准备配置文件
  2. 生成CA机构证书
  3. 生成服务器证书(私钥)
  4. 给服务器证书创建 Diffie-Hellman 密钥
  5. 创建客户端证书

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的更多相关文章

  1. 浅谈一下SSI+Oracle框架的整合搭建

    浅谈一下SSI+Oracle框架的整合搭建 最近换了一家公司,公司几乎所有的项目都采用的是Struts2+Spring+Ibatis+Oracle的架构,上一个东家一般用的就是JSF+Spring,所 ...

  2. Python3.6 性能测试框架Locust的搭建与使用

    背景 Python3.6 性能测试框架Locust的搭建与使用 基础 python版本:python3.6 方法一: pip install locustio 方法二: 开发工具:pycharm 使用 ...

  3. 嵌入式框架Zorb Framework搭建一:嵌入式环境搭建、调试输出和建立时间系统

    我是卓波,我是一名嵌入式工程师,我万万没想到我会在这里跟大家吹牛皮. 嵌入式框架Zorb Framework搭建过程 嵌入式框架Zorb Framework搭建一:嵌入式环境搭建.调试输出和建立时间系 ...

  4. 嵌入式框架Zorb Framework搭建二:环形缓冲区的实现

    我是卓波,我是一名嵌入式工程师,我万万没想到我会在这里跟大家吹牛皮. 嵌入式框架Zorb Framework搭建过程 嵌入式框架Zorb Framework搭建一:嵌入式环境搭建.调试输出和建立时间系 ...

  5. 嵌入式框架Zorb Framework搭建三:列表的实现

    我是卓波,我是一名嵌入式工程师,我万万没想到我会在这里跟大家吹牛皮. 嵌入式框架Zorb Framework搭建过程 嵌入式框架Zorb Framework搭建一:嵌入式环境搭建.调试输出和建立时间系 ...

  6. 嵌入式框架Zorb Framework搭建四:状态机的实现

    我是卓波,我是一名嵌入式工程师,我万万没想到我会在这里跟大家吹牛皮. 嵌入式框架Zorb Framework搭建过程 嵌入式框架Zorb Framework搭建一:嵌入式环境搭建.调试输出和建立时间系 ...

  7. 嵌入式框架Zorb Framework搭建五:事件的实现

    我是卓波,我是一名嵌入式工程师,我万万没想到我会在这里跟大家吹牛皮. 嵌入式框架Zorb Framework搭建过程 嵌入式框架Zorb Framework搭建一:嵌入式环境搭建.调试输出和建立时间系 ...

  8. 嵌入式框架Zorb Framework搭建六:定时器的实现

    我是卓波,我是一名嵌入式工程师,我万万没想到我会在这里跟大家吹牛皮. 嵌入式框架Zorb Framework搭建过程 嵌入式框架Zorb Framework搭建一:嵌入式环境搭建.调试输出和建立时间系 ...

  9. 嵌入式框架Zorb Framework搭建七:任务的实现

    我是卓波,我是一名嵌入式工程师,我万万没想到我会在这里跟大家吹牛皮. 嵌入式框架Zorb Framework搭建过程 嵌入式框架Zorb Framework搭建一:嵌入式环境搭建.调试输出和建立时间系 ...

  10. [技术博客]Django框架-后端的搭建

    目录 Django框架-后端的搭建 前言 环境的部署 项目的创建 app的使用 创建app 修改配置文件 app中数据表的构建 前端接口 接口的路径 运行服务器 验证后端 Django框架-后端的搭建 ...

随机推荐

  1. Django_MVT(二)

    一.MVT简介 M全拼为Model,与MVC中的M功能相同,负责和数据库交互,进行数据处理. V全拼为View,与MVC中的C功能相同,接收请求,进行业务处理,返回应答. T全拼为Template,与 ...

  2. TestNG 运行Webdriver测试用例

    1.单击选中的新建工程的名称,按Ctrl+N组合键,弹出对话框选择"TestNG"下的"TestNG class"选项,点击"next" 2 ...

  3. 一键AI着色,黑白老照片画面瞬间鲜活

    很多老照片或者电影受时代技术所限制,只能以黑白形式保存:经过编辑后的黑白视频和图片早已丢失彩色原图,这对于保存者来说都十分遗憾.如何能将单一乏味.陈旧斑驳的黑白照片变成鲜活亮丽的彩色照片,从照片中重新 ...

  4. 《手把手教你》系列技巧篇(五十七)-java+ selenium自动化测试-下载文件-下篇(详细教程)

    1.简介 前边几篇文章讲解完如何上传文件,既然有上传,那么就可能会有下载文件.因此宏哥就接着讲解和分享一下:自动化测试下载文件.可能有的小伙伴或者童鞋们会觉得这不是很简单吗,还用你介绍和讲解啊,不说就 ...

  5. 基于Bert的恶意软件多分类

    基于Bert从Windows API序列做恶意软件的多分类 目录 基于Bert从Windows API序列做恶意软件的多分类 0x00 数据集 0x01 BERT BERT的模型加载 从文本到ids ...

  6. Solon 开发,五、切面与环绕拦截

    Solon 开发 一.注入或手动获取配置 二.注入或手动获取Bean 三.构建一个Bean的三种方式 四.Bean 扫描的三种方式 五.切面与环绕拦截 六.提取Bean的函数进行定制开发 七.自定义注 ...

  7. k8s中kubeconfig的配置及使用

    1.概述 kubeconfig文件保存了k8s集群的集群.用户.命名空间.认证的信息.kubectl命令使用kubeconfig文件来获取集群的信息,然后和API server进行通讯. 注意:用于配 ...

  8. elasticsearch启动流程

    本文基于ES2.3.2来描述.通过结合源码梳理出ES实例的启动过程. elasticsearch的启动过程是根据配置和环境组装需要的模块并启动的过程.这一过程就是通过guice注入各个功能模块并启动这 ...

  9. 比 WSL2 更香的是 Docker for windows!

    今天给大家推荐一个软件 -- "Docker for windows": 如果你对WSL2,还不熟悉,可以关注公众号或小程序看看我之前推送过的两篇文章. Docker for wi ...

  10. Go 循环控制

    #### Go 循环控制昨天有工作要忙, 断更一天,不过学习的事情,还是每天要坚持; 我还有头发, 还能学习^_^.***倘若我心中的山水, 你眼中都看到***上一节学习完流程控制,总结一下switc ...