当前位置: 首页 > news >正文

2、OpenVPN搭建

一、主机准备

主机名公网IP私有IP系统角色
vpnserver192.168.236.135172.16.30.135centos7VPN服务器
webserverN/A172.16.30.134centos7模拟公司内部主机,无法连接外网
win10宿主机192.168.236.1N/Awin11模拟公司外员工电脑

1.1、vpnserver虚拟机配置(xshell连接)

1、设置hostname:设置完,重新开一个终端。

hostname vpnserver

2、编辑虚拟机,选择添加网络适配器

3、添加多一张网卡后,给该网卡配置网络连接为LAN区段,一开始需要先创建LAN区段

LAN网段: 172.16.30.0/24 (多个虚拟机在同一个内部网络)

4、给网络适配器选择LAN区段 模式,选择2创建的全局区段

5、启动虚拟机:修改新增的网卡配置私有IP地址:

  • 查看新增网卡的名字

    • ip add show
      • 名字是ens32
  • 输入编辑网卡命令

    • nmtui
  • 选择编辑连接

  • 把有线连接删除掉

  • 点击右侧添加

  • 选择网卡类型:以太网

  • 编辑网卡信息:

    • 配置集名称和设备: ens32

  • IPv4配置:自动改手动

  • IPv4配置:点击右侧显示

  • IPv4配置:只需要配置上地址(172.16.30.135/24),其他网关和DNS都无需配置

  • 最后点击确定

6、查看网络信息

ip add show

1.2、webserver 虚拟机配置(xshell连接)

1、设置hostname: 设置后,重新开启一个终端

hostname webserver 

2、新增网络适配器

3、给新增的网络适配器,设置LAN区段,选择 1.1中配置好的全局区段

  • 这样,vpnserver和webserver 就在同一个私有网段中了

4、启动虚拟机:查看新增网卡名字

  • ip add show

    • 新增网卡名字:ens32

5、配置网卡信息

  • 输入:nmtui

  • 选择:编辑连接

  • 删除:有线连接,名字乱码的

  • 选择:添加

  • 选择:以太网—创建

  • 配置集名称和设备:ens32

  • IPv4配置:自动改手动

  • IPv4配置:点击<手动> 右侧的显示

  • IPv4配置:只需要配置地址(172.16.30.134/24)网关和DNS都不需要

  • 点击右下角的确定

5、一路退出网络配置

6、查看是否配置成功

ip add show

7、禁用外网:当前虚拟机模拟公司内部主机,无法访问外网。

vi /etc/sysconfig/network-scripts/ifcfg-ens33
  • 把ONBOOT: 设置no

8、此时宿主机就无法访问到webserver虚拟机了

1.3、连接通讯流程图

在这里插入图片描述

二、vpnserver主机部署

2.1、部署前的基本环境配置

1、关闭selinux安全策略

#查看是否关闭
getenforce
##Enforcing 就是没有关闭,Disabled就是关闭了#临时关闭
setenforce 0
#永久关闭
cat /etc/selinux/configsed -i '7s#enforcing#disabled#g' /etc/selinux/configreboot

2、关闭防火墙

#关闭防火墙
systemctl stop firewalld#禁用开机启动防火墙(永久关闭)
systemctl disable firewalldsystemctl status firewalld
#Active:inactive (dead)  就是关闭了

3、系统软件程序下载优化(配置阿里云)

#配置源更新地址为阿里云的
curl -s -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo#配置epel源是阿里云地址
curl -s -o /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo

4、系统基础软件程序下载安装

yum install -y tree nmap lrzsz dos2unix nc lsof wget -yyum install -y psmisc net-tools bash-completion vim-enhanced git -y

2.2、安装easy-rsa工具

2.2-1、安装流程

1、需要使用到easy-rsa.zip 工具制作

https://github.com/OpenVPN/easy-rsa-old
  • 下载zip包
  • 上传到linux服务器的 /tmp 目录下
/tmp/ 目录下

2、解压:

cd /tmp#安装zip解压工具
yum install unzip -yunzip easy-rsa-old-master.zip

3、移动到/usr/local中:

cd /tmp
mv easy-rsa-old-master /usr/local/

4、配置easy文件:

cd /usr/local/easy-rsa-old-master/easy-rsa/2.0vi vars
#修改的配置
export KEY_COUNTRY="cn"    #中国
export KEY_PROVINCE="guangdon"  #广东
export KEY_CITY="guangzhuo"  #广州
export KEY_ORG="guangshu"   #组织
export KEY_EMAIL="2414155342@qq.com" #邮箱 
#export KEY_EMAIL=mail@host.domain #注释,邮箱一个就行
export KEY_CN=guangshu #随意
export KEY_NAME=guangshu #随意
export KEY_OU=guangshu #随意
export PKCS11_MODULE_PATH=changeme
export PKCS11_PIN=1234#最后两个无需修改,默认就行

5、加载配置:

cd /usr/local/easy-rsa-old-master/easy-rsa/2.0source ./vars#执行
./clean-all#会删除或创建keys目录,后期生成证书和私钥都保存在该目录下

2.2-2、生成证书文件

1、生成根证书和密钥文件
cd /usr/local/easy-rsa-old-master/easy-rsa/2.0./build-ca#因为上面已经配置vars文件,一路回车即可#查看是否创建了ca.crt,ca.key
ll ./keys#两个文件
ca.crt
ca.key

2、生成服务器端证书和密钥文件
cd /usr/local/easy-rsa-old-master/easy-rsa/2.0./build-key-server vpnserver   #给生成的证书一个名字,一般server,名字要记住

  • 一路回车:遇到两次[y/n], 输入yes

  • 查看keys目录

    ll ./keys#vpnserver 有3个文件,自己创建的证书,都是假证,只需要用到crt和key
    vpnserver.crt
    vpnserver.csr
    vpnserver.key
    

3、生成客户端证书和密钥文件
cd /usr/local/easy-rsa-old-master/easy-rsa/2.0./build-key vpnclient   #给生成的证书一个名字,随意,名字要记得,一般client
  • 一路回车:遇到两次[y/n],都输入:yes

  • 查看keys目录

    • ll ./keys#3个文件,只需要crt和key文件
      vpnclient.crt
      vpnclient.csr
      vpnclient.key
      

4、生成密钥交换文件
cd /usr/local/easy-rsa-old-master/easy-rsa/2.0./build-dh
  • 查看keys目录

    • ll ./keys/#dh2048.pem
      

总结:需要用到的证书和密钥
  • 根证书和密钥:ca.crt , ca.key
  • 服务端证书和密钥:vpnserver.crt ,vpnserver.key
  • 客户端证书和密钥:vpnclient.crt,vpnclient.key
  • 密钥交换文件:dh2048.pem

2.3、安装OpenVPN服务

做了 ”2.1“ 中的 ”3、配置epel源是阿里云地址“ ,就可以直接安装。

2.3-1、安装流程

1、安装

yum install -y openvpn

2、查看安装是否成功:

# openvpn --version
2.4.12 版本#到时候客户端的软件程序,也应该是2.4.12版本,防止兼容性问题

3、安装的目录:/etc/openvpn

4、到/etc/openvpn的目录下创建keys目录

cd /etc/openvpn
mkdir keys
#把服务端要用的证书,私钥文件的一些信息,统一管理
#openvpn 到时候需要加载这些文件,

2.3-2、vpn服务端配置

1、修改openvpn服务配置文件

把之前生成的证书信息进行拷贝迁移/etc/openvpn/keys

  • 服务端的crt和key
  • ca的crt
  • 密钥交换文件:dh2048.pem
cd /etc/openvpncp /usr/local//easy-rsa-old-master/easy-rsa/2.0/keys/vpnserver.crt ./keys/cp /usr/local//easy-rsa-old-master/easy-rsa/2.0/keys/vpnserver.key ./keys/cp /usr/local//easy-rsa-old-master/easy-rsa/2.0/keys/ca.crt ./keys/cp /usr/local//easy-rsa-old-master/easy-rsa/2.0/keys/dh2048.pem ./keys/

2、拷贝openvpn服务模板配置文件

cp /usr/share/doc/openvpn-2.4.12/sample/sample-config-files/server.conf  /etc/openvpn

3、修改openvpn服务端配置文件server.conf

#下面的keys,就是/etc/openvpn/keys目录
vim /etc/openvpn/server.conf:set nu   #设置行号
#设置传输层协议:默认udp
#35行未激活tcp,默认激活udp,看公司要求
;proto tcp
proto udp#把78,79,80 ,85行,服务端证书的名字是vpnserver.xx
ca keys/ca.crt    #根证书目录
cert keys/vpnserver.crt  #服务端证书
key keys/vpnserver.key   #服务端私钥
dh keys/dh2048.pem       #密钥交换文件#设置隧道接口地址:101行,可以使用默认,也可以修改
server 10.0.1.0 255.255.255.0#设置客户端要访问的网段:141,142(这两个都没有激活)
;push "route 192.168.10.0 255.255.255.0"
;push "route 192.168.20.0 255.255.255.0"
#复制142一行,设置推送的给客户端的IP网段,(跟要访问的webserver的私有IP同一个网段,这样客户端才能连接上)
#配置推送路由,把私有IP推送给vpn客户端
push "route 172.16.30.0 255.255.255.0"#244,配置后可以抵御拒绝服务攻击,  到时还是放到keys目录下(此时为未创建ta.key)
tls-auth keys/ta.key 0 #252行:加密模式
cipher AES-256-GCM

4、主机开启路由转发功能

echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf#执行这个命令激活内核配置文件的新配置
sysctl -p#实现让vpn服务器具有路由器的功能,进行数据包的路由转发

5、在openvpn服务端建立ta.key文件,用来抵御服务器拒绝的攻击(dos攻击)

cd /etc/openvpn/keysopenvpn --genkey --secret  ta.key

6、启动openvpn服务:默认使用的端口是1194

cd /etc/openvpn#启动
openvpn --daemon --config  server.conf#验证
netstat -lntup | grep 1194#出现下面一条:12793是vpn服务的进程id
udp   0   0 0.0.0.0:1194   0.0.0.0:*     12793/openvpn 

7、使用systemctl管理vpnserver服务

###关闭之前的进程
#先关闭使用6启动的进程
ps -aux | grep openvpn#假设进程id是1367
kill 1367###使用systemctl来管理
###服务端配置文件放到 /etc/openvpn/server.conf
#设置开机自启动
systemctl enable openvpn@server
#启动
systemctl start openvpn@server
#重启
systemctl restart openvpn@server
#停止
systemctl stop openvpn@server
#状态
systemctl status openvpn@server#如果有多个服务端配置文件,都放到/etc/openvpn 目录下
systemctl start openvpn@配置文件名字

2.3-3、vpn客户端配置

1、编写配置openvpn客户端程序配置文件:

#创建保存客户端文件信息的目录,并将客户端模板文件进行拷贝迁移
#在root目录下创建clent 目录,vpn客户端的配置存放在这里
mkdir /root/clientcd /root/client#把客户端配置文件复制到/root/client目录下
cp /usr/share/doc/openvpn-2.4.12/sample/sample-config-files/client.conf /root/client/

2、编写客户端配置文件:

cd /root/client/vi client.conf#42和43都加上;
;remote my-server-1 1194
;remote my-server-2 1194
#新增,vpn客户端要访问的vpnserver的IP和端口
remote 192.168.236.135 1194#88,89,90行,client改为vpnclient(当时创建时就是用这个名字),,到时候把ca和客户端证书私钥都放到/root/client 目录中,与客户端配置文件同目录即可
ca ca.crt
cert vpnclient.crt
key vpnclient.key#116行,加密算法改为GCM,与服务端一致
cipher AES-256-GCM

3、把客户端需要的文件都复制到/root/client目录下

  • vpnclient.crt、vpnclient.key、ac.crt,ta.key
cp /usr/local/easy-rsa-old-master/easy-rsa/2.0/keys/vpnclient.key /root/client/cp /usr/local/easy-rsa-old-master/easy-rsa/2.0/keys/vpnclient.crt /root/client/cp /usr/local/easy-rsa-old-master/easy-rsa/2.0/keys/ca.crt /root/client/cp /etc/openvpn/keys/ta.key /root/client/

4、修改客户端文件后缀名称:vpn客户端软件识别客户端配置时,只能识别.ovpn

cd /root/clientmv  client.conf client.ovpn

5、最后,这些文件不是放到vpnserver中,而是给win11(vpn客户端软件使用的)

三、win11安装vpn客户端软件

1、客户端程序下载地址:

https://openvpn.net/community-downloads#选择2.4.12版本的客户端

2、选择win10版本:一路下一步就可以安装完成。

  • 默认安装位置:C:\Program Files\OpenVPN

3、把vpnserver主机上的客户端配置文件下载到win11上

#vpnserver就是:192.168.236.135主机(172.16.30.135)#使用xftp连接:192.168.236.135#进入 /root/client#下载
ca.crt
client.ovpn
ta.key
vpnclient.crt
vpnclient.key

4、修改vpn客户端软件配置

  • 双击:OpenVPNGUI 软件

  • 找到电脑右下角:点击 ^

    • 找到电脑加锁图标

  • 右键点击:电脑加锁图标—> 选项

    • 点击:高级

      • 配置文件
        • 文件夹:C:\Program Files\OpenVPN\config
      • 日志文件
        • 文件夹:C:\Program Files\OpenVPN\log

      • 点击确定

5、开始连接vpn服务器

  • 右键:电脑加锁图标—点击:连接

  • 等待几秒,图标变绿

6、查看win11的网络配置

  • 网络适配器:本地连接

  • 查看属性:IP是10.0.1.6

    • 因为在 /etc/openvpn/server.conf 配置的隧道IP网段就是10.0.1.0 
      #指定隧道接口地址的网段
      server 10.0.1.0 255.255.255.0#所有vpn客户端就会随机得到该网段的IP地址
      

四、连接测试

4.1、win11连接vpnserver私有地址

1、进入到vpnserver:192.168.236.135

  • ip add show

  • 有了tun0:隧道地址

2、win11 ping 172.16.30.135(vpnserver的私有IP地址)

ping 172.16.30.135

3、说明vpn客户端与vpn服务端已经打通了。

win11  可以访问到vpn服务器的私有ip地址了。

4.2、win11连接webserver(只有内网IP地址)

1、win11 pin 172.16.30.134

ping 172.16.30.134#显示超时

2、为什么会超时

  • 此时 win11 已经可以连接到vpnserver了,数据已经转发给vpnserver
  • win11的报文此时确实是能够通过vpnserver转发给到webserver(172.16.30.134)
  • 但是webserver,收到消息后,其实并没有转发给vpnserver
    • 因为在webserver中还确实一个路由转发规则

3、给webserver添加一条路由转发规则

#进入到webserver虚拟机中
route add -net 10.0.1.0 netmask 255.255.255.0 gw 172.16.30.135#将10.0.1.0 网段的消息转发到 vpnserver服务器(内网IP:172.16.30.135)

4、win11再次ping webserver

ping 172.16.30.134

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 学 Python 具体能干什么?
  • ZeroTier+Nomachine远程
  • 【Python】 使用SMOTE解决数据不平衡问题
  • 【加密与解密(第四版)】第十八章笔记
  • 【计算机网络】第三章——停止-等待协议
  • VGG论文解析—Very Deep Convolutional Networks for Large-Scale Image Recognition
  • clickhouse 中的数组(array)和元组(Tuple)—— clickhouse 基础篇(二)
  • STM32_ADC
  • 两种单例模式的区别
  • 【简明指南:Python中的异常处理与稳健代码设计】
  • 限流及限流算法
  • powershell脚本批量拉取 git仓库文件
  • 老外卖27刀每月的教程已经更新
  • c# sqlite使用
  • vue2 自定义指令
  • 分享的文章《人生如棋》
  • 【node学习】协程
  • es6(二):字符串的扩展
  • ES6核心特性
  • js如何打印object对象
  • Linux后台研发超实用命令总结
  • React的组件模式
  • React-生命周期杂记
  • Redis 懒删除(lazy free)简史
  • SQL 难点解决:记录的引用
  • vue2.0项目引入element-ui
  • 百度贴吧爬虫node+vue baidu_tieba_crawler
  • 彻底搞懂浏览器Event-loop
  • 动态规划入门(以爬楼梯为例)
  • 反思总结然后整装待发
  • 分享自己折腾多时的一套 vue 组件 --we-vue
  • 关于 Linux 进程的 UID、EUID、GID 和 EGID
  • 前嗅ForeSpider中数据浏览界面介绍
  • 详解NodeJs流之一
  • 新书推荐|Windows黑客编程技术详解
  • ​HTTP与HTTPS:网络通信的安全卫士
  • ​Kaggle X光肺炎检测比赛第二名方案解析 | CVPR 2020 Workshop
  • ​人工智能之父图灵诞辰纪念日,一起来看最受读者欢迎的AI技术好书
  • ​软考-高级-系统架构设计师教程(清华第2版)【第20章 系统架构设计师论文写作要点(P717~728)-思维导图】​
  • ​总结MySQL 的一些知识点:MySQL 选择数据库​
  • #565. 查找之大编号
  • #pragma once与条件编译
  • (9)STL算法之逆转旋转
  • (delphi11最新学习资料) Object Pascal 学习笔记---第13章第6节 (嵌套的Finally代码块)
  • (Redis使用系列) Springboot 实现Redis消息的订阅与分布 四
  • (附源码)流浪动物保护平台的设计与实现 毕业设计 161154
  • (回溯) LeetCode 46. 全排列
  • (力扣题库)跳跃游戏II(c++)
  • (深入.Net平台的软件系统分层开发).第一章.上机练习.20170424
  • (学习日记)2024.02.29:UCOSIII第二节
  • (一) springboot详细介绍
  • (原创) cocos2dx使用Curl连接网络(客户端)
  • (转)关于多人操作数据的处理策略
  • (转)树状数组
  • ******IT公司面试题汇总+优秀技术博客汇总