什么是 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 VPNL2TP VPNMPLS VPN
IPsec VPNGRE VPNSSL VPNOpenVPN
- 按协议层分类
数据链路层[ 第二层 ]
PPTP VPNL2TP VPNMPLS 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 - 第二层转发协议
- 用于建立
跨越公共网络的安全隧道来将ISPPOP连接到企业内部网关 - 这个隧道建立了一个用户与企业客户网络间的虚拟点对点连接
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