1.虚拟网络的简介

***(全称:Virtual Private Network)虚拟专用网络,
是依靠ISP和其他的NSP,在公共网络中建立专用的数据通信的网络技术,
所谓虚拟是指不需要去拉实际的长途物理线路,而是借用了公共Internet网络实现的。

2.作用

***的功能是帮助公司里的远程用户(出差,在家)、公司的分支机构、
商业合作伙伴及供应商等公司和自己的公司内部网络之间建立可信的安全连接或者是局域网连接,
确保数据的加密安全传输和业务访问,对于运维工程师来说,还可以连接不同的机房为局域网来处理相关事宜。

3.SSL

SSL ***(通过软件实现的)
SSL协议提供了数据私密性、端点验证、信息完整性等特性。SSL协议由许多子协议组成,
其中两个主要的子协议是握手协议和记录协议。
握手协议允许服务器和客户端在应用协议传输第一个数据字节以前,彼此确认,
协商一种加密算法和密码钥匙。在数据传输期间,
记录协议利用握手协议生成的秘钥加密和解密后来交换的数据。
SSL独立应用,因此任何一个应用程序都可以享受它的安全性而不必理会执行细节。
SSL置身于网络结构体系的传输层和应用层之间。此外,SSL本身就被几乎所有的WEB浏览器支持。
这意味着客户端不需要为了支持SSL链接安装额外的软件。这两个特征就是SSL能应用于v*p*n的关键点。
典型的SSL ***应用:Open ***,这是一个比较好的开源软件。`
Open v*p*n允许参与建立V P N的单点使用预设的私钥,
第三方证书,或者用户名/密码来进行身份验证。它大量使用了OpenSSL加密库,
以及SSLv3/TLSv1协议。Open***能在Linux、xBSD、MacOS 上运行。
它并不是一个基于Web的v*p*n软件,也不能与IPSec及其他v*p*n软件包兼容。

4.Open***

官网:https://openv*p*n.net/专用网:专用网就是在两个网络(例如,北京和广州)之间架设一条专用线路,
但是它并不需要真正地去铺设光缆之类的物理线路。虽然没有亲自去铺设,
但是需要向电信运营商申请租用专线,在这条专用的线路上只传输自己的信息,所以安全稳定,同时也费用高昂在众多的V P N产品中,OpenV P N无疑是Linux下开源v*p*n的经典产品,他提供了良好的访问性能和友好的用户GUI。Open v*p*n是一个用于创建虚拟专用网络加密通道的软件包,最早由James Yonan编写。
一个实现V PN 的开源软件,OpenV P N 是一个健壮的、高度灵活的 V P N 守护进程。
它支持 SSL/TLS 安全、Ethernet bridging、经由代理的 TCP 或 UDP 隧道和 NAT。
另外,它也支持动态 IP 地址以及DHCP,可伸缩性足以支持数百或数千用户的使用场景,
同时可移植至大多数主流操作系统平台上。

5.部署Open***

Openv*p*n 分为客户端和服务端

5.1服务端

# 1.安装openv*p*n和证书工具
[root@m01 ~]# yum -y install openv*p*n easy-rsa# 生成服务器配置文件
[root@m01 ~]# cp /usr/share/doc/openv*p*n-2.4.11/sample/sample-config-files/server.conf /etc/openv*p*n/# 准备证书签发相关文件
[root@m01 ~]# cp -r /usr/share/easy-rsa/ /etc/openv*p*n/easy-rsa-server# 准备签发证书相关变量的配置文件
[root@m01 ~]#  cp /usr/share/doc/easy-rsa-3.0.8/vars.example /etc/openv*p*n/easy-rsa-server/3/vars# 初始化PKI生成PKI相关目录和文件
[root@m01 3]# cd /etc/openv*p*n/easy-rsa-server/3# 初始化数据,在当前目录下生成pki目录及相关文件
[root@m01 3]# ./easyrsa init-pki# 创建CA机构 (直接回车)
[root@m01 3]# ./easyrsa build-ca nopass# 验证CA证书
[root@m01 3]# openssl x509 -in pki/ca.crt -noout -text
Certificate:Data:Version: 3 (0x2)Serial Number:e8:d1:bd:b8:92:1a:63:67Signature Algorithm: sha256WithRSAEncryption
...
# 创建服务端证书申请(或者说创建私钥)  (直接回车)
[root@m01 3]# ./easyrsa gen-req server nopass# 创建证书 (直接回车) 回复yes
[root@m01 3]# ./easyrsa sign server server# 验证证书  是一个随机字符串,使用tab补齐
# diff pki/certs_by_serial/(tab补齐)  pki/issued/server.crt 没有任何消息代代表成功
[root@m01 3]# diff pki/certs_by_serial/F28FE8C23953FF5613D37D1E951C41A5.pem pki/issued/server.crt

5.2创建 Diffie-Hellman 密钥

方式一:
[root@m01 3]# ./easyrsa gen-dh方式二:
[root@m01 3]# openssl dhparam -out /etc/openv*p*n/dh2048.pem 2048

6.客户端证书

# 复制证书到客户端
[root@m01 3]# cp -r /usr/share/easy-rsa/ /etc/openv*p*n/easy-rsa-client
[root@m01 3]# cp /usr/share/doc/easy-rsa-3.0.8/vars.example /etc/openv*p*n/easy-rsa-client/3/vars
[root@m01 3]# cd /etc/openv*p*n/easy-rsa-client/3
# 初始化证书目录
[root@m01 3]# ./easyrsa init-pki
# 生成客户端证书 (直接回车)
[root@m01 3]# ./easyrsa gen-req kid nopass
# 将客户端证书请求文件复制到CA的工作目录
[root@m01 3]# cd /etc/openv*p*n/easy-rsa-server/3
[root@m01 3]# ./easyrsa import-req /etc/openv*p*n/easy-rsa-client/3/pki/reqs/kid.req kid
# 签发客户端证书
[root@m01 3]# pwd 路径不能错
/etc/openv*p*n/easy-rsa-server/3 (yes)
[root@m01 3]# ./easyrsa sign client kid# 验证 (两次查看证书是一致的,不一致就恢复快照重来)
[root@m01 3]# cat pki/index.txt
V   240401022739Z       ADBFFB9F45E5CEF861E7F642BA6C447E    unknown /CN=server
V   240401023724Z       47765AD8225E12A13FB1EEBAC769B999    unknown /CN=kid
[root@m01 3]# ll pki/certs_by_serial/
total 16
-rw------- 1 root root 4438 Dec 28 10:37 47765AD8225E12A13FB1EEBAC769B999.pem
-rw------- 1 root root 4552 Dec 28 10:27 ADBFFB9F45E5CEF861E7F642BA6C447E.pem

7.下载&安装open***

https://www.download.io/openv*p*n-gui-download-windows.htmlopenv*p*n-install-2.4.7-I606-Win10.exe
设置设置安转路径,我不设置了.最好不要安在c盘,可能会涉及到windows的权限问题...

启动openv*p*n

8.创建链接配置文件

# 1.修改openv*p*n配置文件
[root@m01 3]# > /etc/openv*p*n/server.conf
[root@m01 3]# vim /etc/openv*p*n/server.conf
"""
port 1194
proto tcp
dev tun
ca  /etc/openv*p*n/certs/ca.crt
cert  /etc/openv*p*n/certs/server.crt
key  /etc/openv*p*n/certs/server.key
dh  /etc/openv*p*n/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 openv*p*n
group openv*p*n
status  /var/log/openv*p*n/openv*p*n-status.log
log-append   /var/log/openv*p*n/openv*p*n.log
verb 3
mute 20
# :wq
"""
# 创建日志文件目录
[root@m01 3]# mkdir -p /var/log/openv*p*n
# 切换路径
[root@m01 3]# cd
# 创建权限
[root@m01 ~]# chown openv*p*n.openv*p*n /var/log/openv*p*n
# 创建存放证书目录
[root@m01 ~]# mkdir -p /etc/openv*p*n/certs
# 复制证书
[root@m01 ~]# cp /etc/openv*p*n/easy-rsa-server/3/pki/dh.pem /etc/openv*p*n/certs/
[root@m01 ~]# cp /etc/openv*p*n/easy-rsa-server/3/pki/ca.crt /etc/openv*p*n/certs/
[root@m01 ~]# cp /etc/openv*p*n/easy-rsa-server/3/pki/private/server.key /etc/openv*p*n/certs/
[root@m01 ~]# cp /etc/openv*p*n/easy-rsa-server/3/pki/issued/server.crt /etc/openv*p*n/certs/
[root@m01 ~]# ll /etc/openv*p*n/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

# 2.启动Openv*p*n
# 开启系统内核网络转发功能
[root@m01 ~]# echo net.ipv4.ip_forward = 1 >> /etc/sysctl.conf
[root@m01 ~]# sysctl -p# 安装防火墙
[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# 添加iptables规则 重启失效!
[root@m01 ~]# iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j MASQUERADE# 永久保存Iptables规则
[root@m01 ~]# service iptables save
# 查看
[root@m01 ~]# iptables -t nat -L -v -n
...
Chain POSTROUTING (policy ACCEPT 3 packets, 228 bytes)pkts bytes target     prot opt in     out     source               destination         0     0 MASQUERADE  all  --  *      *       10.8.0.0/24          0.0.0.0/0
# 3.创建链接文件
[root@m01 ~]# mkdir -p /etc/openv*p*n/client/kid/# 切换路径
# 准备证书
[root@m01 kid]# cp /etc/openv*p*n/easy-rsa-server/3/pki/ca.crt /etc/openv*p*n/client/kid/
[root@m01 kid]# cp /etc/openv*p*n/easy-rsa-server/3/pki/issued/kid.crt /etc/openv*p*n/client/kid/
[root@m01 kid]# cp /etc/openv*p*n/easy-rsa-client/3/pki/private/kid.key /etc/openv*p*n/client/kid/# 4.准备链接文件
[root@m01 ~]# vim /etc/openv*p*n/client/kid/client.ov*p*n
"""
client
dev tun
proto tcp
remote 192.168.15.81 1194
resolv-retry infinite
nobind
ca ca.crt
cert kid.crt
key kid.key
remote-cert-tls server
cipher AES-256-CBC
verb 3
compress lz4-v2
# :wq
"""
# 5. 启动Openv*p*n
[root@m01 ~]# systemctl enable --now openv*p*n@server
# 6. 查看服务是否启动
[root@m01 ~]# systemctl status openv*p*n@server
● openv*p*n@server.service - Openv*p*n Robust And Highly Flexible Tunneling Application On serverLoaded: loaded (/usr/lib/systemd/system/openv*p*n@.service; enabled; vendor preset: disabled)Active: active (running) since Wed 2021-12-29 21:27:40 CST; 1min 26s ago
# 没启动就重新恢复镜像!重新设置
# 7.iptables设置开机自动启动
systemctl enable --now iptables
[root@m01 ~]# ip a
# 第四个网卡
...
4: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 100link/none inet 10.8.0.1 peer 10.8.0.2/32 scope global tun0valid_lft forever preferred_lft foreverinet6 fe80::bcce:c869:1de1:a47c/64 scope link flags 800 valid_lft forever preferred_lft forever

C:\Program Files\Openv*p*n\config 根据提示
/etc/openv*p*n/client/kid

如果提示没有权限下载带次目录的话需要获取权限,
右键增加“获取管理员的所有权限”菜单,
将下面的内容保存在记事本中,并另存为 获取管理员的所有权限--带图标.reg,然后双击执行
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\shell\runas]
[HKEY_CLASSES_ROOT\*\shell\runas]
@="获取超级管理员的所有权限"
"Icon"="C:\\Windows\\System32\\imageres.dll,-78"
"NoWorkingDirectory"=""
[HKEY_CLASSES_ROOT\*\shell\runas\command]
@="cmd.exe /c takeown /f \"%1\" && icacls \"%1\" /grant administrators:F"
"IsolatedCommand"="cmd.exe /c takeown /f \"%1\" && icacls \"%1\" /grant administrators:F"
[HKEY_CLASSES_ROOT\Directory\shell\runas]
[HKEY_CLASSES_ROOT\Directory\shell\runas]
@="获取超级管理员的所有权限"
"Icon"="C:\\Windows\\System32\\imageres.dll,-78"
"NoWorkingDirectory"=""
[HKEY_CLASSES_ROOT\Directory\shell\runas\command]
@="cmd.exe /c takeown /f \"%1\" /r /d y && icacls \"%1\" /grant administrators:F /t"
"IsolatedCommand"="cmd.exe /c takeown /f \"%1\" /r /d y && icacls \"%1\" /grant administrators:F /t"
[HKEY_CLASSES_ROOT\dllfile\shell]
[HKEY_CLASSES_ROOT\dllfile\shell\runas]
@="获取超级管理员的所有权限"
"HasLUAShield"=""
"NoWorkingDirectory"=""
[HKEY_CLASSES_ROOT\dllfile\shell\runas\command]
@="cmd.exe /c takeown /f \"%1\" && icacls \"%1\" /grant administrators:F"
"IsolatedCommand"="cmd.exe /c takeown /f \"%1\" && icacls \"%1\" /grant administrators:F"
[HKEY_CLASSES_ROOT\Drive\shell\runas]
[HKEY_CLASSES_ROOT\Drive\shell\runas]
@="获取超级管理员的所有权限"
"Icon"="C:\\Windows\\System32\\imageres.dll,-78"
"NoWorkingDirectory"=""
[HKEY_CLASSES_ROOT\Drive\shell\runas\command]
@="cmd.exe /c takeown /f \"%1\" /r /d y && icacls \"%1\" /grant administrators:F /t"
"IsolatedCommand"="cmd.exe /c takeown /f \"%1\" /r /d y && icacls \"%1\" /grant administrators:F /t"

9.连接测试

重新打开 Openv*p*n GUI软件

断开xshell
ssh root@172.16.1.81
连接成功!
cmd
ping  172.16.1.81

# 连接其它的虚拟机

10.附录

#server.conf文件中以#或;开头的行都为注释
[root@instance-gvpb80ao ~]# grep -Ev "^#|^$" /etc/openv*p*n/server.conf
;local a.b.c.d  #本机监听IP,默认为本机所有IP
port 1194       #端口
;proto tcp      #协议,生产推荐使用TCP
proto udp #默认协议
;dev tap   #创建一个以太网隧道,以太网使用tap,一个tap设备允许完整的以太网帧通过Openv*p*n隧道,可提供非ip协议的支持,比如IPX协议和AppleTalk协议,tap等同于一个以太网设备,它操作第二层数据包如以太网数据帧。
dev tun    #创建一个路由IP隧道,生产推存使用tun.互联网使用tun,一个tun设备大多时候,被用于基于IP协议的通讯。tun模拟了网络层设备,操作第三层数据包比如IP数据封包。
;dev-node MyTap  #TAP-Win32适配器。非windows不需要配置
ca ca.crt       #ca证书文件
cert server.crt  #服务器证书文件
key server.key   #服务器私钥文件
dh dh2048.pem    #dh参数文件
;topology subnet
server 10.8.0.0 255.255.255.0  #客户端连接后分配IP的地址池,服务器默认会占用第一个IP 10.8.0.1将做为客户端的网关
ifconfig-pool-persist ipp.txt  #为客户端分配固定IP,不需要配置,建议注释
;server-bridge 10.8.0.4 255.255.255.0 10.8.0.50 10.8.0.100  #配置网桥模式,不需要配置,建议注释
;server-bridge
;push "route 192.168.10.0 255.255.255.0"  #给客户端生成的到达服务器后面网段的静态路由,下一跳为openv*p*n服务器的10.8.0.1
;push "route 192.168.20.0 255.255.255.0"  #推送路由信息到客户端,以允许客户端能够连接到服务器背后的其它私有子网
;client-config-dir ccd #为指定的客户端添加路由,此路由通常是客户端后面的内网网段而不是服务端的,也不需要设置
;route 192.168.40.128 255.255.255.248
;client-config-dir ccd
;route 10.9.0.0 255.255.255.252
;learn-address ./script                #运行外部脚本,创建不同组的iptables规则,无需配置
;push "redirect-gateway def1 bypass-dhcp" #启用后,客户端所有流量都将通过v*p*n服务器,因此生产一般无需配置此项
;push "dhcp-option DNS 208.67.222.222"   #推送DNS服务器,不需要配置
;push "dhcp-option DNS 208.67.220.220"
;client-to-client                       #允许不同的client直接通信,不安全,生产环境一般无需要配置
;duplicate-cn                           #多个用户共用一个证书,一般用于测试环境,生产环境都是一个用户一个证书,无需开启
keepalive 10 120         #设置服务端检测的间隔和超时时间,默认为每10秒ping一次,如果 120 秒没有回应则认为对方已经down
tls-auth ta.key 0 #访止DoS等攻击的安全增强配置,可以使用以下命令来生成:openv*p*n --
genkey --secret ta.key #服务器和每个客户端都需要拥有该密钥的一个拷贝。第二个参数在服务器端应该为’0’,在客户端应该为’1’
cipher AES-256-CBC  #加密算法
;compress lz4-v2    #启用Openv*p*n2.4.X新版压缩算法
;push "compress lz4-v2"   #推送客户端使用新版压缩算法,和下面的comp-lzo不要同时使用
;comp-lzo          #旧户端兼容的压缩配置,需要客户端配置开启压缩,openv*p*n2.4.X等新版可以不用开启
;max-clients 100   #最大客户端数
;user nobody         #运行openv*p*n服务的用户和组
;group nobody
persist-key          #重启v*p*n服务时默认会重新读取key文件,开启此配置后保留使用第一次的key文件,生产环境无需开启
persist-tun          #启用此配置后,当重启v*p*n服务时,一直保持tun或者tap设备是up的,否则会先down然后再up,生产环境无需开启
status openv*p*n-status.log #openv*p*n状态记录文件,每分钟会记录一次
;log         openv*p*n.log   #第一种日志记录方式,并指定日志路径,log会在openv*p*n启动的时候清空日志文件,不建议使用
;log-append openv*p*n.log   #第二种日志记录方式,并指定日志路径,重启openv*p*n后在之前的日志后面追加新的日志,生产环境建议使用
verb 3                   #设置日志级别,0-9,级别越高记录的内容越详细,0 表示静默运行,只记录致命错误,4 表示合理的常规用法,5 和 6 可以帮助调试连接错误。9 表示极度冗余,输出非常详细的日志信息
;mute 20                 #相同类别的信息只有前20条会输出到日志文件中
explicit-exit-notify 1   #通知客户端,在服务端重启后自动重新连接,仅能用于udp模式,tcp模式不需要配置即可实现断开重新连接,且开启此项后tcp配置后将导致openv*p*n服务无法启动,所以tcp时必须不能开启此项

16.Linux环境搭建虚拟网络相关推荐

  1. Linux环境搭建(最全的搭建过程)

    Linux环境搭建 打开centOS,点击右下方的网络适配器,如图一所示.打开设置,出现图二所示. 图一 图二 在图二中选择网络适配器,其中有网络连接,常见有桥接模式以及NAT模式, 桥接模式相当于我 ...

  2. 使用VMware搭建虚拟网络

    一.实验目的 通过本实验可以: ① 了解VMware虚拟机软件的应用和特点: ② 掌握利用VMware 搭建单一子网的方法: ③ 掌握利用VMware 搭建具有路由功能的多个子网的方法: 为网络安全基 ...

  3. Linux 环境搭建一步到位,看这篇就够了!

    VMware Workstation 是一款功能强大的桌面虚拟软件,可模仿物理机器承载多个虚拟操作系统. 虚拟机下载安装 VMWare下载地址:https://pan.baidu.com/s/1OFV ...

  4. 21天学会Linux----Day1:Linux环境搭建

    · CSDN的uu们,大家好.这里是Linux的第一讲. · 座右铭:前路坎坷,披荆斩棘,扶摇直上. · 博客主页: @姬如祎 · 收录专栏:Linux保姆级教程 目录 1. Linux环境搭建的三种 ...

  5. 集群Linux环境搭建

    文章目录 集群Linux环境搭建 注意事项 复制虚拟机 修改mac地址和ip地址 每台虚拟机修改对应的主机名 配置域名映射 关闭防火墙和SELinux 关闭防火墙 关闭selinux 虚拟机免密码登录 ...

  6. 泰凌微ble mesh蓝牙模组天猫精灵学习之旅 ① 小白也痴迷,如何在 Linux环境搭建编译烧录 安信可TB02,点亮一盏LED灯;

    本<泰凌微ble mesh蓝牙模组天猫精灵学习之旅>系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1.小 ...

  7. Linux环境搭建和基础指令介绍

    目录: 一:环境搭建 二:基础指令介绍 三:Linux权限 一:环境搭建 搭建linux环境主要用到俩个工具,一个是Linux镜像,一个是远程终端软件. Linux镜像选择: 1.实惠选择:安装一个虚 ...

  8. Ubuntu 美化和常用环境搭建 -- Linux 环境搭建(下)

    NVIDIA显卡驱动安装 通过"附加驱动"安装驱动 通过PPA安装最新驱动 美化和扩展插件 GNOME 扩展推荐(针对 GNOME 桌面) 主题推荐(GNOME 和 Unity 桌 ...

  9. Linux环境搭建记录——Jenkins安装

    Linux环境搭建记录 Jenkins安装 Jenkins升级 Jenkins插件离线安装 构件Jenkins项目 Jenkins安装 更多Jenkins详细信息请参考:Jenkins官方文档 分步指 ...

  10. Linux(一)-- Linux环境搭建

    Linux环境搭建 一.虚拟机安装 1.下载地址 https://my.vmware.com/web/vmware/info/slug/desktop_end_user_computing/vmwar ...

最新文章

  1. 如何在Android手机上进行Google Map的开发。
  2. 一台服务器最多能创建多少个 TCP 连接?
  3. 定制Ocelot来满足需求
  4. 关于页面布局间距使用的经验之谈
  5. Angular实现图片点击缩放组件
  6. C/C++排序算法(5)归并排序
  7. NAPI 方式的实现
  8. Linux的history命令
  9. 数据集:男女身高体重(二维)
  10. Edraw Office Viewer 8.X Edraw Office Viewer
  11. 视频显示器与服务器之间使用什么线连接,显示器连接线有哪些?四种主流连线科普。...
  12. C语言2019软件,c语言模拟编程学习软件v2019 最新版
  13. ppt矩形里面的图片怎么放大缩小_PPT5题目要求-矩形放大缩小
  14. oracle数据库表空间扩容方法
  15. 微信策划推出指纹支付
  16. 【scipy】scipy.linalg.slove 求解线性方程组 python
  17. python批量放大图片
  18. Unity吃豆人敌人BFS广度(宽度)优先算法实现怪物追踪玩家寻路
  19. 什么是单片机,单片机有什么用 ?
  20. 如何解决Not able to find Java executable or version. Please check your Java installation?

热门文章

  1. WiFi大师4.0.5源码最新独立版本
  2. Matlab论文插图绘制模板第60期—瀑布图(Waterfall)
  3. 私人智库呼吁瑞士国家银行开发瑞士法郎代币,拥抱DLT技术
  4. JS(fullpage)的使用
  5. 【自动驾驶】华为车BU介绍(2021-11-23晚直播记录)
  6. 11.全站乱码过滤器
  7. Python烤地瓜案例
  8. 解决前端微信浏览器中video标签不能自动播放视频问题
  9. android inflate,【Android】【Inflate】inflate方法的三个参数
  10. 怎样学手机拼音打字html t=45,在手机上怎么学拼音打字