2、OpenVPN搭建

一、主机准备

主机名 公网IP 私有IP 系统 角色
vpnserver 192.168.236.135 172.16.30.135 centos7 VPN服务器
webserver N/A 172.16.30.134 centos7 模拟公司内部主机,无法连接外网
win10宿主机 192.168.236.1 N/A win11 模拟公司外员工电脑

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安全策略

sh 复制代码
#查看是否关闭
getenforce
##Enforcing 就是没有关闭,Disabled就是关闭了

#临时关闭
setenforce 0
#永久关闭
cat /etc/selinux/config

sed -i '7s#enforcing#disabled#g' /etc/selinux/config

reboot

2、关闭防火墙

sh 复制代码
#关闭防火墙
systemctl stop firewalld

#禁用开机启动防火墙(永久关闭)
systemctl disable firewalld

systemctl status firewalld
#Active:inactive (dead)  就是关闭了

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

sh 复制代码
#配置源更新地址为阿里云的
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、系统基础软件程序下载安装

sh 复制代码
yum install -y tree nmap lrzsz dos2unix nc lsof wget -y

yum 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 目录下
sh 复制代码
/tmp/ 目录下

2、解压:

sh 复制代码
cd /tmp

#安装zip解压工具
yum install unzip -y

unzip easy-rsa-old-master.zip

3、移动到/usr/local中:

sh 复制代码
cd /tmp
mv easy-rsa-old-master /usr/local/

4、配置easy文件:

sh 复制代码
cd /usr/local/easy-rsa-old-master/easy-rsa/2.0

vi 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、加载配置:

sh 复制代码
cd /usr/local/easy-rsa-old-master/easy-rsa/2.0

source ./vars

#执行
./clean-all

#会删除或创建keys目录,后期生成证书和私钥都保存在该目录下

2.2-2、生成证书文件

1、生成根证书和密钥文件
sh 复制代码
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、生成服务器端证书和密钥文件
sh 复制代码
cd /usr/local/easy-rsa-old-master/easy-rsa/2.0

./build-key-server vpnserver   #给生成的证书一个名字,一般server,名字要记住
  • 一路回车:遇到两次[y/n], 输入yes

  • 查看keys目录

    sh 复制代码
    ll ./keys
    
    #vpnserver 有3个文件,自己创建的证书,都是假证,只需要用到crt和key
    vpnserver.crt
    vpnserver.csr
    vpnserver.key
3、生成客户端证书和密钥文件
sh 复制代码
cd /usr/local/easy-rsa-old-master/easy-rsa/2.0

./build-key vpnclient   #给生成的证书一个名字,随意,名字要记得,一般client
  • 一路回车:遇到两次[y/n],都输入:yes

  • 查看keys目录

    sh 复制代码
    ll ./keys
    
    #3个文件,只需要crt和key文件
    vpnclient.crt
    vpnclient.csr
    vpnclient.key
4、生成密钥交换文件
sh 复制代码
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目录

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

2.3-2、vpn服务端配置

1、修改openvpn服务配置文件

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

  • 服务端的crt和key
  • ca的crt
  • 密钥交换文件:dh2048.pem
sh 复制代码
cd /etc/openvpn

cp /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服务模板配置文件

sh 复制代码
cp /usr/share/doc/openvpn-2.4.12/sample/sample-config-files/server.conf  /etc/openvpn

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

sh 复制代码
#下面的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、主机开启路由转发功能

sh 复制代码
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf

#执行这个命令激活内核配置文件的新配置
sysctl -p

#实现让vpn服务器具有路由器的功能,进行数据包的路由转发

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

sh 复制代码
cd /etc/openvpn/keys

openvpn --genkey --secret  ta.key

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

sh 复制代码
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服务

sh 复制代码
###关闭之前的进程
#先关闭使用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客户端程序配置文件:

sh 复制代码
#创建保存客户端文件信息的目录,并将客户端模板文件进行拷贝迁移
#在root目录下创建clent 目录,vpn客户端的配置存放在这里
mkdir /root/client


cd /root/client

#把客户端配置文件复制到/root/client目录下
cp /usr/share/doc/openvpn-2.4.12/sample/sample-config-files/client.conf /root/client/

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

sh 复制代码
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
sh 复制代码
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

sh 复制代码
cd /root/client

mv  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上

sh 复制代码
#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添加一条路由转发规则

sh 复制代码
#进入到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
相关推荐
我要成为嵌入式大佬8 分钟前
正点原子MP157--问题详解--四(关于根文件系统驱动模块指令的注意事项)
linux·运维·服务器
feng68_10 分钟前
Redis架构实践
linux·运维·redis·架构·bootstrap
欧云服务器13 分钟前
宝塔计划任务怎么自动删除多少个以外的文件?
linux·运维·服务器
F1FJJ27 分钟前
Shield CLI PostgreSQL 插件现已上架 VS Code 扩展市场
网络·vscode·网络协议·postgresql·开源软件
淼淼爱喝水28 分钟前
openEuler 系统下 Ansible 一键安装教程(保姆级)
运维·ansible·openeuler
XXOOXRT32 分钟前
零基础掌握Linux常用命令
linux·运维·服务器
迷海1 小时前
Linux g++编译与GDB调试完整流程(文末附图)
linux·gdb调试工具·g++编译器
softbangong1 小时前
815-批量Excel文件合并工具,批量excel文件、工作表合并软件
linux·windows·excel·文件合并·excel合并·数据整理
123过去1 小时前
responder使用教程
linux·网络·测试工具·安全·哈希算法
不知名。。。。。。。。1 小时前
数据链路层
linux·网络