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服务端
[root@m01 ~]
[root@m01 ~]
[root@m01 ~]
[root@m01 ~]
[root@m01 3]
[root@m01 3]
[root@m01 3]
[root@m01 3]
Certificate:
Data:
Version: 3 (0x2)
Serial Number:
e8:d1:bd:b8:92:1a:63:67
Signature Algorithm: sha256WithRSAEncryption
...
[root@m01 3]
[root@m01 3]
[root@m01 3]
5.2创建 Diffie-Hellman 密钥
方式一:
[root@m01 3]
方式二:
[root@m01 3]
![image-20211229201808345](https://i-blog.csdnimg.cn/blog_migrate/ed37fee3dc6cfa7f04450021c1871b03.png)
6.客户端证书
[root@m01 3]
[root@m01 3]
[root@m01 3]
[root@m01 3]
[root@m01 3]
[root@m01 3]
[root@m01 3]
[root@m01 3]
/etc/openv*p*n/easy-rsa-server/3 (yes)
[root@m01 3]
[root@m01 3]
V 240401022739Z ADBFFB9F45E5CEF861E7F642BA6C447E unknown /CN=server
V 240401023724Z 47765AD8225E12A13FB1EEBAC769B999 unknown /CN=kid
[root@m01 3]
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.html
openv*p*n-install-2.4.7-I606-Win10.exe
设置设置安转路径,我不设置了.最好不要安在c盘,可能会涉及到windows的权限问题...
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/7ca4587b7da5ce25283ddd9a0dede619.png)
![1](https://i-blog.csdnimg.cn/blog_migrate/ae66f6c8f39549682d92594d5bcb2c46.gif)
启动openv*p*n
![image-20211229203748491](https://i-blog.csdnimg.cn/blog_migrate/bc8ccfaa49e151e0601b077b927eb78a.png)
8.创建链接配置文件
[root@m01 3]
[root@m01 3]
"""
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
"""
[root@m01 3]
[root@m01 3]
[root@m01 ~]
[root@m01 ~]
[root@m01 ~]
[root@m01 ~]
[root@m01 ~]
[root@m01 ~]
[root@m01 ~]
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
![image-20211229204219369](https://i-blog.csdnimg.cn/blog_migrate/6859f15b8ded9ba0a4e2d6cb0efc267f.png)
[root@m01 ~]
[root@m01 ~]
[root@m01 ~]
[root@m01 ~]
[root@m01 ~]
[root@m01 ~]
[root@m01 ~]
[root@m01 ~]
[root@m01 ~]
[root@m01 ~]
...
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
[root@m01 ~]
[root@m01 kid]
[root@m01 kid]
[root@m01 kid]
[root@m01 ~]
"""
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
"""
[root@m01 ~]
[root@m01 ~]
● openv*p*n@server.service - Openv*p*n Robust And Highly Flexible Tunneling Application On server
Loaded: 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
systemctl enable --now iptables
[root@m01 ~]
...
4: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 100
link/none
inet 10.8.0.1 peer 10.8.0.2/32 scope global tun0
valid_lft forever preferred_lft forever
inet6 fe80::bcce:c869:1de1:a47c/64 scope link flags 800
valid_lft forever preferred_lft forever
![image-20211229213647214](https://i-blog.csdnimg.cn/blog_migrate/d03eceeefe2f0d05ccbb71de3bb6e191.png)
C:\Program Files\Openv*p*n\config 根据提示
/etc/openv*p*n/client/kid
![image-20211229214218598](https://i-blog.csdnimg.cn/blog_migrate/56f5325c344061d6bbf77cd3a4bd0b74.png)
![image-20211229213954515](https://i-blog.csdnimg.cn/blog_migrate/cb0dffbf11c161d77a4403a2ff4fc11c.png)
![image-20211229214915848](https://i-blog.csdnimg.cn/blog_migrate/afb1ec98b807e8da170806087943962b.png)
如果提示没有权限下载带次目录的话需要获取权限,
右键增加“获取管理员的所有权限”菜单,
将下面的内容保存在记事本中,并另存为 获取管理员的所有权限--带图标.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"
![image-20211229214315352](https://i-blog.csdnimg.cn/blog_migrate/031d25517695b62f86dc49bd5a713d9e.png)
9.连接测试
重新打开 Openv*p*n GUI软件
![image-20211229215039000](https://i-blog.csdnimg.cn/blog_migrate/a1ce634cfb0144dd65ef872299569b3c.png)
断开xshell
ssh root@172.16.1.81
连接成功!
cmd
ping 172.16.1.81
![image-20211229215528601](https://i-blog.csdnimg.cn/blog_migrate/bda76e9a7b059142a061635173eb8cf9.png)
![image-20211229215845559](https://i-blog.csdnimg.cn/blog_migrate/db4392b3bc80a6fb6921de545ee2c206.png)
# 连接其它的虚拟机
![image-20220104172440346](https://i-blog.csdnimg.cn/blog_migrate/b5b99cdb6c8c076391713fcaae854550.png)
10.附录
[root@instance-gvpb80ao ~]
;local a.b.c.d
port 1194
;proto tcp
proto udp
;dev tap
dev tun
;dev-node MyTap
ca ca.crt
cert server.crt
key server.key
dh dh2048.pem
;topology subnet
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
;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"
;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
;push "redirect-gateway def1 bypass-dhcp"
;push "dhcp-option DNS 208.67.222.222"
;push "dhcp-option DNS 208.67.220.220"
;client-to-client
;duplicate-cn
keepalive 10 120
tls-auth ta.key 0
genkey --secret ta.key
cipher AES-256-CBC
;compress lz4-v2
;push "compress lz4-v2"
;comp-lzo
;max-clients 100
;user nobody
;group nobody
persist-key
persist-tun
status openv*p*n-status.log
;log openv*p*n.log
;log-append openv*p*n.log
verb 3
;mute 20
explicit-exit-notify 1