admin 管理员组

文章数量: 887021

一、主机准备

主机名公网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/config

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

reboot

2、关闭防火墙

#关闭防火墙
systemctl stop firewalld

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

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

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

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

#配置epel源是阿里云地址
curl -s -o /etc/yum.repos.d/epel.repo https://mirrors.aliyun/repo/epel-7.repo

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

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/OpenVPN/easy-rsa-old
  • 下载zip包
  • 上传到linux服务器的 /tmp 目录下
/tmp/ 目录下

2、解压:

cd /tmp

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

unzip 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.0

vi vars
#修改的配置
export KEY_COUNTRY="cn"    #中国
export KEY_PROVINCE="guangdon"  #广东
export KEY_CITY="guangzhuo"  #广州
export KEY_ORG="guangshu"   #组织
export KEY_EMAIL="xxxx@qq" #邮箱 
#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.0

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

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/keys

openvpn --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/client


cd /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/client

mv  client.conf client.ovpn

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

三、win11安装vpn客户端软件

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

https://openvpn/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

本文标签: OpenVPN