Open虚拟专用网络
目录
一:OpenVPN虚拟网络专用
1.简介:
OpenVPN是一个跨平台 VPN (虚拟专用网络)客户端/服务器。 与...兼容 微软 Windows,GNU / Linux的,macOS操作系统,甚至有免费的应用程序 Android系统 以及 iOS系统。 OpenVPN的另一个优点是一些路由器制造商正在将其整合到他们的设备中,因此我们将有可能在路由器上配置OpenVPN服务器。
2.OpenVPN的作用
OpenVPN是基于免费软件的软件,它使我们能构建虚拟专用网络(VPN) 以远程连接到服务器。VPN的功能是帮助公司里的远程用户(出差,在家)、公司的分支机构、商业合作伙伴及供应商等公司和自己的公司内部网络之间建立可信的安全连接或者是局域网连接,确保数据的加密安全传输和业务访问,对于运维工程师来说,还可以连接不同的机房为局域网来处理相关事宜。
3.远程访问VPN服务
> 通过个人电脑远程拨号到企业办公网络。
1. 一般为企业内部员工出差、休假或特殊情况下载原离办公室的时候,又有需求访问公司的内部网络获取相关资源,就可以通过VPN拨号到公司内部。此时远程拨号的员工和办公室内的员工以及其他拨号的员工之间都相当于在一个局域网内。例如:访问内部的域控、文件服务器、OA系统等局域网应用。
2. 对于运维人员来说就是需要个人电脑远程拨号到企业网站的服务器机房,远程维护机房中的(无外网IP的)服务器。
这种形式的VPN一般在运维人员在工作中会经常遇到。
4.OpenVPN两种类型的VPN体系结构
- 远程访问VPN: 我们有一个中央VPN服务器,以及几个在您的计算机,智能手机,平板电脑或其他设备上安装了软件的VPN客户端,它们都集中连接到VPN服务器。
- 站点到站点VPN: 此体系结构允许我们在不同站点之间进行互通,以通过安全的网络共享资源,并使用端点到断加密进行保护。这种类型的VPN允许我们与办公室,公司总部等进行互相通信。
5.全面解析OpenVPN执行流程
1.远程在家办公,用户 使用openvpn客户端软件,通过ip地址集中连接到公司的中央VPN服务器。
2.公司中央VPN服务器返回虚拟网卡给客户端,客户端通过内网ip访问公司服务器设备机房。
NAT(网络地址转换) : 在计算机网络中是一种在IP数据包通过路由器或防火墙时重写来源IP地址或目的IP地址的技术。这种技术被普遍使用在有多台主机但只通过一个公有IP地址访问互联网的私有网络中。它是一个方便且得到了广泛应用的技术。当然,NAT也让主机之间的通信变得复杂,导致了通信效率的降低。
INTERNET : 因特网
10.10.10.0/30 : 虚拟网卡
公共IP : 公共IP地址是您的家庭或企业路由器从ISP接收的IP地址。 任何可公开访问的网络硬件都需要公共IP地址,例如家庭路由器以及托管网站的服务器。 公共IP地址是插入公共互联网的所有设备的不同之处。 每个访问互联网的设备都使用唯一的IP地址。
OPENVPNSERVER : VPN中央服务器
GitHub地址:https://github.com/OpenVPN/openvpn
6.Openvpn定义
OpenVPN是一个用于创建虚拟专用网络加密通道的软件包,最早由James Yonan编写。OpenVPN允许创建的VPN使用公开密钥、电子证书、或者用户名/密码来进行身份验证。
7.Openvpn原理
OpenVPN的技术核心是虚拟网卡,其次是SSL协议实现。
二:全面了解 OpenVPN中的虚拟网卡
虚拟网卡是使用网络底层编程技术实现的一个驱动软件。安装此类程序后主机上会增加一个非真实的网卡,并可以像其它网卡一样进行配置。服务程序可以在应用层打开虚拟网卡,如果应用软件(如网络浏览器)向虚拟网卡发送数据,则服务程序可以读取到该数据。如果服务程序写合适的数据到虚拟网卡,应用软件也可以接收得到。虚拟网卡在很多的操作系统中都有相应的实现,这也是OpenVPN能够跨平台使用的一个重要原因。
在OpenVPN中,如果用户访问一个远程的虚拟地址(属于虚拟网卡配用的地址系列,区别于真实地址),则操作系统会通过路由机制将数据包(TUN模式)或数据帧(TAP模式)发送到虚拟网卡上,服务程序接收该数据并进行相应的处理后,会通过SOCKET从外网上发送出去。这完成了一个单向传输的过程,反之亦然。当远程服务程序通过SOCKET从外网上接收到数据,并进行相应的处理后,又会发送回给虚拟网卡,则该应用软件就可以接收到。
三:OpenVPN使用一组在传输层工作的SSL / TLS协议,我们有两种操作类型:
TUN :本 TUN 控制器模拟点对点设备,用于创建 使用IP协议运行的虚拟隧道 。 这样,通过它传输的所有数据包都可以封装为TCP段或UDP数据报(稍后您将看到我们选择UDP而不是TCP,并且您会问为什么,因为TCP是可连接的,可靠的并且面向Connection )。 链接每一端后面的计算机将属于不同的子网。
TAP :模拟这些虚拟隧道的以太网网络接口(通常称为网桥或网桥模式) 直接封装以太网数据包 。 这种情况允许包装与IP不同的结构。 链接两端的机器可以作为同一子网的一部分(如果使用IP协议)。 网桥操作模式对于链接远程用户特别有用,因为它们可以连接到同一台服务器并且实际上是主网络的一部分,但是,如果连接了源的专用网络与目的地重合,则我们将遇到路由问题和交流将无法进行。
在众多的VPN产品中,OpenVPN无疑是Linux下开源VPN的经典产品,他提供了良好的访问性能和友好的用户GUI。
四:部署OpenVPN流程
OpenVPN 分为客户端和服务端
server : 服务端
client : 客户端
1.服务端证书
1.安装openvpn和证书工具
[root@m01 ~]# yum -y install openvpn easy-rsa
作用:
为什么要证书?
openvpn其实是ssl,需要证书,证书需要证书工具
2.查看是否安装成功
rpm -q openvpn
3.生成服务器配置文件
[root@m01 ~]# cp /usr/share/doc/openvpn-2.4.11/sample/sample-config-files/server.conf /etc/openvpn/
4.准备证书签发相关文件
[root@m01 ~]# cp -r /usr/share/easy-rsa/ /etc/openvpn/easy-rsa-server
5.准备签发证书相关变量的配置文件
[root@m01 ~]# cp /usr/share/doc/easy-rsa-3.0.8/vars.example /etc/openvpn/easy-rsa-server/3/vars
作用:
证书相关变量的配置文件内写的内容
vim /etc/openvpn/easy-rsa-server/3/vars
CA的证书有效期默认为10年,可以适当延长,比如:36500天
私钥 10年
set_var EASYRSA_CA_EXPIRE 3650
set_var EASYRSA_CA_EXPIRE 36500
服务器证书默认为825天,可以延长,比如:3650天
set_var EASYRSA_CERT_EXPIRE 825
将上面修改成下面
set_var EASYRSA_CERT_EXPIRE 3650
6.初始化PKI生成PKI相关目录和文件
[root@m01 3]# cd /etc/openvpn/easy-rsa-server/3
7.初始化数据,在当前目录下生成pki目录及相关文件
[root@m01 3]# ./easyrsa init-pki
8.创建CA机构
[root@m01 3]# ./easyrsa build-ca nopass
注意:
默认即可
9.验证CA证书
[root@m01 3]# openssl x509 -in pki/ca.crt -noout -text
10.创建服务端证书申请
[root@m01 3]# ./easyrsa gen-req server nopass
注意:
默认即可
11.创建证书
[root@m01 3]# ./easyrsa sign server server
作用:
服务器证书创建完毕
12.验证证书
[root@m01 3]# diff pki/certs_by_serial/ADBFFB9F45E5CEF861E7F642BA6C447E.pem pki/issued/server.crt
验证是否成功解析:
1.没有任何输出代表正确
2.有任何输出代表错误
2.创建 Diffie-Hellman 密钥
创建 Diffie-Hellman 密钥有两种方法均可使用
方式一:
[root@m01 3]# ./easyrsa gen-dh
注意:
请耐心等待(短则 1分钟 长则 10分钟)
方式二:
[root@m01 3]# openssl dhparam -out /etc/openvpn/dh2048.pem 2048
3.客户端证书
1.生成客服端配置文件
[root@m01 3]# cp -r /usr/share/easy-rsa/ /etc/openvpn/easy-rsa-client
2.准备证书签发相关文件
[root@m01 3]# cp /usr/share/doc/easy-rsa-3.0.8/vars.example /etc/openvpn/easy-rsa-client/3/vars
3.切换到cd目录
[root@m01 3]# cd /etc/openvpn/easy-rsa-client/3
4.初始化证书目录
[root@m01 3]# ./easyrsa init-pki
5.生成客户端证书
[root@m01 3]# ./easyrsa gen-req chenyang nopass
注意:
可设定名字 默认
6.将客户端证书请求文件复制到CA的工作目录
[root@m01 3]# cd /etc/openvpn/easy-rsa-server/3
[root@m01 3]# ./easyrsa import-req /etc/openvpn/easy-rsa-client/3/pki/reqs/chenyang.req chenyang
作用解析:
CA : 服务端 切换到服务端
让客户端和服务端关联 相当于加载了客户端证书《请求》
server : 服务端
client : 客服端
7.签发客户端证书
[root@m01 3]# pwd
/etc/openvpn/easy-rsa-server/3
[root@m01 3]# ./easyrsa sign client chenyang
解析:
通过服务端签发客户端《证书》
8.验证
[root@m01 3]# cat pki/index.txt
V 240401022739Z ADBFFB9F45E5CEF861E7F642BA6C447E unknown /CN=server
V 240401023724Z 47765AD8225E12A13FB1EEBAC769B999 unknown /CN=chenyang
[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
- 安装 openVPN GUI
4.创建链接配置文件
1、修改openvpn配置文件
1.1 文件内注释全去掉
grep -Ev '^#|^$' /etc/openvpn/server.conf
1.2 清空
>/etc/openvpn/server.conf
1.3 vim进入文件将以下复制
[root@m01 3]# vim /etc/openvpn/server.conf
port 1194
proto tcp
dev tun
ca /etc/openvpn/certs/ca.crt
cert /etc/openvpn/certs/server.crt
key /etc/openvpn/certs/server.key
dh /etc/openvpn/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 openvpn
group openvpn
status /var/log/openvpn/openvpn-status.log
log-append /var/log/openvpn/openvpn.log
verb 3
mute 20
启动VPN会启动tun网卡
- 启动VPN会启动tun网卡显示虚拟网卡
2.创建日志文件目录
[root@m01 ~]# mkdir -p /var/log/openvpn
3.创建权限
[root@m01 ~]# chown openvpn.openvpn /var/log/openvpn
4.创建存放证书目录
[root@m01 ~]# mkdir -p /etc/openvpn/certs
5.复制证书
[root@m01 ~]# cp /etc/openvpn/easy-rsa-server/3/pki/dh.pem /etc/openvpn/certs/
[root@m01 ~]# cp /etc/openvpn/easy-rsa-server/3/pki/ca.crt /etc/openvpn/certs/
[root@m01 ~]# cp /etc/openvpn/easy-rsa-server/3/pki/private/server.key /etc/openvpn/certs/
[root@m01 ~]# cp /etc/openvpn/easy-rsa-server/3/pki/issued/server.crt /etc/openvpn/certs/
6.查看证书是否复制
[root@m01 ~]# ll /etc/openvpn/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
7.启动OpenVPN
# 开启系统内核网络转发功能(CentOS 默认是关闭的)
[root@m01 ~]# echo net.ipv4.ip_forward = 1 >> /etc/sysctl.conf
[root@m01 ~]# sysctl -p
注意:
如优化脚本init以开启,就不需要再启动了
8.安装iptables
[root@m01 ~]# yum install iptables-services -y # 安装
9.关闭firewalld防火墙
[root@m01 ~]# systemctl disable --now firewalld # 关闭
10.启动iptables防火墙
[root@m01 ~]# systemctl start iptables # 启动防火墙
11.查看防火墙状态
systemctl status iptables
12.重启
systemctl restart iptables
13.清空iptables
[root@m01 ~]# iptables -F
[root@m01 ~]# iptables -F -t nat
14.添加iptables规则
[root@m01 ~]# iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j MASQUERADE
注意:
iptables 重启就会失效 所以用到了永久保存
‘’‘’图‘’‘’
15.永久保存Iptables规则
[root@m01 ~]# service iptables save
16.启动OpenVPN
[root@m01 ~]# systemctl enable --now openvpn@server
17.查看启动OpenVPN状态
systemctl status openvpn@server
18.创建链接文件
[root@m01 ~]# mkdir -p /etc/openvpn/client/chenyang/
19.准备证书
[root@m01 chenyang]# cp /etc/openvpn/easy-rsa-server/3/pki/ca.crt /etc/openvpn/client/chenyang/
[root@m01 chenyang]# cp /etc/openvpn/easy-rsa-server/3/pki/issued/chenyang.crt /etc/openvpn/client/chenyang/
[root@m01 chenyang]# cp /etc/openvpn/easy-rsa-client/3/pki/private/chenyang.key /etc/openvpn/client/chenyang/
20.准备链接文件(将以下内容写入文件)
[root@m01 ~]# vim /etc/openvpn/client/chenyang/client.ovpn
client
dev tun # tun网卡
proto tcp # tcp协议
remote 192.168.15.81 1194 # 公网 端口
resolv-retry infinite
nobind
ca ca.crt
cert chenyang.crt # 客户端证书
key chenyang.key # 证书请求 私钥
remote-cert-tls server
cipher AES-256-CBC
verb 3 # 不能随意改动
compress lz4-v2 # 压缩
六:连接OpenVPN部署
1.打开xftp,输入linux源地址ip
2.将linux目标服务器配置托到OpenVPN指定路径
3.打开OpenVPN连接。
4.显示Successful代表成功
5.部署成功《模拟远程连接测试》
- 提前虚拟机开启普罗米修斯服务器,在Xshell 连接普罗米修斯服务器 实战远程内网连接。出现以下即成功!