什么是 OpenVPN
OpenVPN
是一个用于创建虚拟专用网络 (Virtual Private Network
)加密通道
的免费开源
软件OpenVPN
可以方便地在专用网络通道内互相访问( 当两个网络是使用私有 IP 地址
的私有局域网络
时,它们之间是不能相互访问的
)OpenVPN
采用了高强度
的数据加密
,再加上其开源免费
的特性,使得OpenVPN
成为中小型企业及个人的VPN
首选产品
OpenVPN 原理
OpenVPN 核心机制就是在 OpenVPN 服务器和客户端所在的计算机上都安装一个虚拟网卡 (又称虚拟网络适配器),并获得一个对应的虚拟 IP 地址
- OpenVPN 的服务器和多个客户端就可以通过虚拟网卡,使用这些虚拟 IP 进行相互访问了
- 其中,OpenVPN 服务器起到一个路由和控制的作用 (相当于一个虚拟的路由器)
VPN 的常用实现方式
VPN 服务器
-通过在网络中心搭建 VPN 服务器的方法实现 VPN
硬件 VPN
-通过专用的硬件实现
软件 VPN
-通过专用的软件实现
集成 VPN
-通过含有 VPN 功能的网络设备,如:防火墙、路由器实现
VPN 分类
VPN 技术:在
公有网络
中构建专用
的虚拟
网络
- 按协议分类:
PPTP VPN
L2TP VPN
MPLS VPN
IPsec VPN
GRE VPN
SSL VPN
OpenVPN
- 按协议层分类
数据链路层
[ 第二层 ]
PPTP VPN
L2TP VPN
MPLS VPN
网络层
[ 第三层 ]
IPsec VPN
GRE VPN
传输层与应用层之间
SSL VPN
PPTP VPN
点对点隧道协议
- 一种支持多协议虚拟专用网络(VPN)的网络技术
- 以同样工作在第二层的
点对点传输协议
(PPP
)为基础
PPTP
将PPP 帧
封装成IP 数据包
,以便于在互联网上传输并可以通过密码验证协议
(PAP
),可扩展认证协议
(EAP
)增加安全性
远程用户
能够通过安装
有点对点协议
的操作系统
访问公司网络资源
PPTP VPN
的实现需要:
客户机
和服务器
之间必须有联通并且可用的 IP 网络
PPTP VPN
可在Windows
、Linux
环境下搭建,或者通过配置路由器来实现
L2TP VPN
二层隧道协议
L2F
- 第二层转发协议
- 用于建立
跨越公共网络
的安全隧道
来将ISP
POP
连接到企业内部网关
- 这个隧道建立了一个用户与企业客户网络间的虚拟点对点连接
L2F
允许高层协议的链路层隧道技术,使得把原始拨号服务器的位置和拨号协议连接终止与提供的网络访问位置分离成为可能
- 结合
PPTP
与L2F
两种二层隧道协议的优点
L2TP
扩展了PPP
模型,它使用PPP
来封装用户数据
,允许多协议
通过隧道传送
- 作为安全性增强,
L2TP
与IPSec
(Internet 协议安全性
)结合 –L2TP/IPsec
L2TP
基于UDP 协议
- 因此
L2TP
不保证数据消息的可靠投递
,若数据丢失,不予重传
L2TP
的实现与PPTP
不同
PPTP
要求网络为IP 网络
L2TP
要求面向数据包
的点对点连接
MPLS VPN
多协议标签交换
- 一种用于快速
数据包交换
和路由
的体系
- 它为网络数据流量提供了
目标
、路由地址
、转发
和交换
等能力
- 更特殊的是,它具有
管理各种不同形式通信流
的机制 - 它提供了一种方式,将
IP 地址
映射为简单的具有固定长度
的标签
,用于不同的包转发和包交换技术
- 传统的
VPN
是基于PPTP
、L2TP
等隧道协议来实现私有网络间数据流在公网上的传送
- 而
LSP
本身就是公网上的隧道
- 所以用
MPLS
来实现VPN
有天然的优势 - 基于
MPLS
的VPN
就是通过LSP
将私有网络
的不同分支联结起来
,形成一个统一的网络
- 基于
MPLS
的VPN
还支持对不同VPN
间的互通控制
MPLS VPN
网络主要由CE
、PE
和P
等 3 部分组成
CE(Customer Edge)
-用户网络边缘设备,可以是路由器交换机主机
PE(Provider Edge)
-服务商边缘路由器,位于骨干网络
P(Provider)
-服务提供商网络中的骨干路由器
MPLS VPN
需通过配置路由器搭建
IPsec VPN
Internet 协议安全性
- 一种开放标准的
框架结构
,通过使用加密
的安全服务
以确保在Internet 协议 (IP)
网络上进行保密
而安全
的通讯 IPSec
· 协议通过包封装
技术,还可以封装内部网络
的地址,实现异地网络
的互连联IPSec
不是一个单独的协议,它给出了应用于IP 层
上网络数据安全的一整套体系结构,该体系结构包括:
AH( Authentication Header )
- 认证头协议ESP( EncapsulatingSecurity Payload )
- 封装安全负载协议
IPSec
可以在两种模式下运行传输模式
-被用来计算 AH 或 ESP 头,AH 或 ESP 头以及 ESP 加密的用户数据被放置在原 IP 包头后面。通常,传输模式应用在两台主机之间的通讯,或一台主机和一个安全网关之间的通讯
隧道模式
-用户的整个 IP 数据包被用来计算 AH 或 ESP 头,AH 或 ESP 头以及 ESP 加密的用户数据被封装在一个新的 IP 数据包中。通常,隧道模式应用在两个安全网关之间的通讯。由此可知隧道模式可以掩盖原 IP 地址实现异地网络访问内部网络,也就是 VPN
IPSec VPN
可在Windows
、Linux
环境下搭建
- 或者通过配置
防火墙
、路由器
、第三方软件
实现
GRE VPN
通用路由封装协议(Generic Routing Encapsulation)
- 应用于
网络设备
,目前有多数厂商的网络设备均支持GRE 隧道协议
GRE VPN
是对某些网络层协议的数据报进行封装,使这些被封装的数据报能够在另一个网络层协议中传输
GRE VPN
是 VPN 的第三层隧道协议
,在协议层之间采用了一种被称之为Tunnel(隧道)
的技术- 可通过网络设备搭建
Tunnel
是一个虚拟的点对点的连接
- 在实际中可以看成仅支持点对点连接的虚拟接口,这个接口提供了一条通路使封装的数据报能够在这个通路上传输,并且在一个 tunnel 的两端分别对数据报进行封装及解封装
SSL VPN
·安全套接层协议( Secure Sockets Layer )·
- 指定了一种在
应用程序协议
(如HTTP
、Telenet
、NMTP
和FTP
等)和TCP/IP 协议
之间提供数据安全性分层的机制
- 为
TCP/IP
连接提供数据加密
、服务器认证
、消息完整性
以及可选的客户机认证
SSL
协议可分为两层
SSL 记录协议 (SSL Record Protocol)
-建立在可靠的传输协议(如 TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持
SSL 握手协议 (SSL Handshake Protocol)
-建立在 SSL 记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等
SSL VPN
是接入
企业内部的应用
,而不是企业的整个网络
- 使用
SSL VPN
可通过标准的WEB 浏览器
连接因特网即可通过网页访问到企业应用 - 大多数执行基于
SSL 协议
的远程访问不需要依赖客户端软件
OpenVPN
基于 SSL 加密的应用层 VPN 协议
OpenVPN
的技术核心是虚拟网卡
,其次是SSL 协议
实现虚拟网卡
是使用网络底层编程技术实现的一个驱动软件
,安装后在主机上多出现一个网卡,可以像其它网卡一样进行配置
- 服务程序可以在应用层打开虚拟网卡
- 如果应用软件向虚拟网卡发送数据,则服务程序可以读取到该数据
- 如果服务程序写合适的数据到虚拟网卡,应用软件也可以接收得到
- 虚拟网卡在很多的操作系统下都有相应的实现,这也是
OpenVPN
能够跨平台的一个很重要的理由
OpenVPN 部署
OpenVPN
需要epel
源
- 下面的命令可以看出来
OpenVPN
需要epel 源
yum provides /usr/*bin/openvpn
没有 epel 源
会有下面的报错
No matches found
使用下面的命令可以安装
epel 源
yum install -y epel-release.noarch
有 epel 源
就会输出相关的信息
- 目前来说,稳定版本是
2.4.12
,当然,官方已经更新到2.6_beta1
Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile openvpn-2.4.12-1.el7.x86_64 : A full-featured SSL VPN solution Repo : epel Matched from: Filename : /usr/sbin/openvpn