项目(十)openvpn架构实施方案(一)跨机房异地灾备

第一章VPN介绍

 

1.1 VPN概述

VPN(全称Virtual Private Network)虚拟专用网络,是依靠ISP和其他的NSP,在公共网络中建立专用的数据通信网络的技术,可以为企业之间或者个人与企业之间提供安全的数据传输隧道服务。在VPN中任意两点之间的连接并没有传统专网所需的端到端的物理链路,而是利用公共网络资源动态组成的,可以理解为通过私有的隧道技术在公共数据网络上模拟出来的和专网有同样功能的点到点的专线技术,所谓虚拟是指不需要去拉实际的长途物理线路,而是借用了公共Internet网络实现。

为了便于大家理解,给一个直观的形象图:

QQ截图20171107210724.png-84.2kB

 

1.2 VPN的作用

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

QQ截图20171107220916.png-299kB

 

1.3 VPN的分类

我们根据VPN的常见企业应用,将VPN分为以下4类应用:

(1)远程访问VPN服务

即通过个人电脑远程拨号到企业办公网络。

a.一般为企业内部员工出差,休假或特殊情况下在远离办公室的时候,又有需求访问公司的内部网络获取相关资源,就可以通过VPN拨号到公司内部。此时远程拨号的员工和办公室内的员工以及其他拨号的员工之间都相当于一个局域网络内。例如:访问内部的域控制器,文件服务器,OA系统,ERP,HTTP服务,内网飞秋聊天工具等局域网服务应用。

QQ截图20171107224921.png-28.9kB

  • 对于运维人员来说就是需要个人电脑远程拨号到企业网站IDC机房,远程维护IDC服务器。
  • 此点是技术人员特别是运维人员在工作中会经常用这个方法维护大量的机房内无外网的服务器及网络设备。

(2)企业内部网络之间VPN服务

  • 在公司的分支机构的局域网和公司总部LAN之间的VPN连接。通过公网Internet建立VPN将公司在各地的分支机构的LAN链接到公司总部的LAN。例如:各大超市之间业务结算等。
  • 这是由于地域的原因而产生的VPN的需求,通过VPN让不同地域内的机器可以互相访问,就好像是一个局域网一样。例如:办公室互联协同办公,机房互联数据同步及业务访问等。

(3)互联网公司多IDC机房之间VPN服务

此处是运维架构人员需要考虑的问题。不同机房之间业务管理和业务访问,数据流动。

(4)企业外部VPN服务

在供应商,合作伙伴的LAN和本公司的LAN之间建立的VPN服务。

(5)访问国外的网站

FQ业务应用

 

1.4 常见隧道协议介绍

(1)PPTP

点对点隧道协议(PPTP)是由包括微软和3Com等公司组成的PPTP论坛开发的一种点对点隧道协议,基于拨号使用的PPTP协议,使用PAP或CHAP之类的加密算法,或者使用Microsoft的点对点加密算法MPPE。其通过跨越基于TCP/IP的数据网络创建VPN实现了从远程客户端到专用企业服务器之间数据的安全传输。PPTP支持通过公共网络(例如Internet)建立按需的,多协议的,虚拟专用网络。PPTP允许加密IP通讯,然后在要跨越公司IP网络或公共IP网络(如Internet)发送的IP头中对其进行封装。典型的linux平台的开源软件为pptp。

PPTP属于点对点方式的应用,比较适合远程的企业用户拨号到企业进行办公等的应用

(2)L2TP

L2TP第2层隧道协议(L2TP)是LETF基于L2F(Cisco的第二层转发协议)开发的PPTP的后续版本。是一种工业标准Internet隧道协议,其可以为跨越面向数据包的媒体发送点到点协议(PPP)框架提供封装。PPTP和L2TP都使用PPP协议对数据进行封装,然后添加附加包头用于数据在互联网络上的传输。PPTP只能在两端点间建立单一隧道。L2TP支持在两端点间使用多隧道,用户可以针对不同的服务质量创建不同的隧道。L2TP可以提供隧道验证,而PPTP则不支持隧道验证。但是当L2TP或PPTP与IPSEC共同使用时,可以由IPSEC提供隧道验证,不需要在第2层协议上验证隧道使用L2TP。PPTP要求互联网络为IP网络。L2TP只要求隧道媒介提供面向数据包的点对点的连接,L2TP可以在IP(使用UDP),帧中继永久虚拟电路(PVCs),X.25虚拟电路(VCs)或ATM VCs网络上使用。

(3)IPsec

  • IP安全协议(IPSec:IP Security)实际上是一套协议包而不是一个独立的协议。从1995年开始IPSec的研究以来,IETF IPSec 工作组在它的主页上发布了几十个Internet草案文献和12个RFC文件。其中,比较重要的有RFC2409IKE(互联网密钥交换),RFC2401 IPSec协议,RFC2402 AH验证包头,RFC2406 ESP加密数据等文件。
  • IPSec隧道模式隧道是封装,路由与解封装的整个过程。隧道将原始数据包隐藏(或封装)在新的数据包内部。该新的数据包可能会有细心的寻址与路由信息,从而使其能够通过网络传输。隧道与数据保密性结合使用时,在网络上窃听通讯的人将无法获取原始数据包数据(以及原始的源和目标)。封装的数据包到达目的地后,会删除封装,原始数据包头用于将数据包路由到最终目的地。

  • 隧道本身是封装数据经过的逻辑数据路径,对原始的源和目的端,隧道是不可见的,而只能看到网络路径中的点对点连接。连接双方并不关心隧道起点和终点之间的任何路由器,交换机,代理服务器或者其他安全网关。将隧道和数据保密性结合使用时,可用于提供VPN。

  • 封装的数据包在网络中的隧道内部传输。在此示例中,该网络是Internet。网关可以是外部Internet与专用网络间的周界网关。周界网关可以是路由器,防火墙,代理服务器或其他安全网关。另外,在专用网络内部可使用两个网关来保护网络中不信任的通讯。
  • 当以隧道模式使用IPSec时,其只为IP通讯封装。使用IPSec隧道模式主要是为了与其他不支持IPSec上的L2TP或PPTP VPN隧道技术的路由器,网关或终端系统之间的相互操作。

(4)SSL VPN

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

QQ截图20171108134332.png-343.6kB

 

1.5 实现vpn功能的常见开源产品

(1)PPTP VPN

使用PPTP VPN的最大优势在于,无需在windows客户端单独安装客户端软件,windows默认就支持PPTP VPN拨号连接功能。另外,PPTP VPN属于点对点方式的应用,比较适合远程的企业用户拨号到企业进行办公等的应用。

(2)SSL VPN(OpenVPN)

  • PPTP主要为那些经常外出移动或家庭办公的用户考虑,而OpenVPN不但使用于PPTP的应用场景,还适合针对企业异地两地总分公司之间的VPN不间断按需连接,例如:ERP,OA,及时通讯工具等在企业中的应用。

(3)IPSec VPN

IPSec VPN也适合针对企业异地两地总分公司或多个IDC机房之间的VPN不间断按需连接,并且在部署使用上更简单方便。

 

1.6 根据企业生产场景需求选择vpn方案建议

  • :如果领导愿意花钱,可以选择相关硬件产品,不错的成熟的很多,例如:防火墙,负载均衡等硬件产品都附带VPN功能。

  • :对于多数互联网公司,为了体现我们运维架构师的价值,我们应该建议老板选择开源产品,优势就是省钱,可扩展性更强,例如:二次开发,相应的改动。

  • :对于开源的产品,Mr.chen建议:

    • 个人拨号选择openvpn,功能强大,稳定可靠。
    • 如果不希望单独安装客户端拨号,则可选择PPTP
    • 多个企业之间或者多个IDC机房直接互联,选择ipsecvpn或openvpn。
  • :本课程所讲解的:openvpn,ipsec vpn的完整企业实现。可以满足各种企业需求。

 

第二章 openvpn开源产品

 

2.1 openvpn产品介绍

  • 在众多vpn产品中,OpenVPN无疑是Linux下开源VPN的先锋,它提供了良好的访问性能和友好的用户GUI。
  • OpenVPN是一个用于创建虚拟专用网络加密通道的软件包,最早由James Yonan编写。OpenVPN允许参与建立VPN的单点使用预设的私钥,第三方证书,或者用户名/密码来进行身份验证。它大量使用了OpenSSL加密库,以及SSLv3/TLSv1协议。OpenVPN能在Linux,xBSD,MacOS X与Windows上运行。Openvpn是一个服务器和客户端软件,而不是一个基于Web的VPN软件,也不与IPSec及其他VPN软件包兼容。
 

2.2 openvpn依赖的SSL与TLS协议介绍

  • SSL即,安全套接层(Secure Sockets Layer,SSL)是一种安全协议,诞生的目的是为网络通信提供安全及数据完整性保障,SSL在传输层中对网络通信进行加密。
  • SSL采用公开密钥技术,保证两个应用间通信的保密性和可靠性,使客户与服务器应用之间的通信不被攻击者窃听。它在服务器和客户机两端可同时被支持,目前已成为互联网上保密通讯的工业标准。现行的Web浏览器亦普遍将HTTP和SSL相结合1,从而实现安全通信。SSL协议其继任者是TLS。
  • 后来IETF(www.ietf.org)将SSL作了标准化,即RFC2246,并将其称为TLS(Transport Layer Security),其最新版本是RFC5246,版本1.2。从技术上讲,TLS1.0与SSL3.0的差异非常微小。
  • TLS(Transport Layer Security)利用密钥算法在互联网上提供端点身份认证与通讯保密,其基础是公钥基础设施(public key infrastructure,PKI)。不过在实现的典型例子中,只有网络服务者被可靠身份验证,而其客户端则不一定。这是因为公钥基础设施普遍商业运营,电子签名证书通常需要付费购买。协议的设计在某种程度上能够使主从架构应用程序通讯本身防窃听,干扰(Tampering)和消息伪造。
 

2.3 openvpn的加密通信原理过程

OpenVPN使用TLS加密是通过使用公开密钥(非对称密钥,加密解密使用不同的key,一个称为Public key,另一个是Private key)对数据进行加密的,对于TLS传输的工作原理,这里暂且先不介绍。对于OpenVPN使用TLS_mode,首先Server和Client要有相同CA签发的证书,双方通过交换证书验证双方的合法性以决定是否建立VPN连接,然后使用对方CA把自己目前使用的数据加密方法(类似于密钥)加密后发送给对方,由于使用对方CA加密的,所以只有对方CA对应的Private key才能解密该字串,保证了此密钥的安全性,并且此密钥定期改变,对于窃听者来说,可能还没有破解出密钥,通信双方已经更换密钥了。

 

2.4 openvpn的多种身份验证方式

OpenVPN提供了多种身份验证方式,用以确认参与连接双方的身份,包括:预享私钥,第三方证书以及用户名/密码组合等。预享密钥最为简单,但同时它只能用于建立点对点的VPN;基于PKI的第三方证书提供了最完善的功能,但是需要额外的精力去维护一个PKI证书体系。OpenVPN2.0后引入了用户名/口令组合的身份验证方式,他可以省略客户端预享密钥,但是仍有一份服务器CA证书需要被用作加密,比较好的验证方式还有LDAP统一验证等。

 

2.5 openvpn通信原理

  • OpenVPN所有的通信都基于一个单一的IP端口(默认为1194),默认使用UDP协议通讯,同时TCP也被支持。OpenVPN连接能通过大多数的代理服务器,并且能够在NAT的环境中很好地工作。OpenVPN服务端具有向客户端“推送”某些网络配置信息的功能,这些信息包括:IP地址,路由设置等。OpenVPN提供了两种虚拟网络接口:通用Tun/Tap驱动,通过它们,可以建立三层IP隧道,或者虚拟二层以太网,后者可以传送任何类型的二层以太网络数据。传送的数据可通过LZO算法压缩。OpenVPN2.0以后版本每个进程可以同时管理数个并发的隧道。
  • OpenVPN使用通用网络协议(TCP与UDP)的特点使它成为IPsec等协议的理想替代1,尤其是在ISP(Internet server provider)过滤某些特定VPN协议的情况下。
  • 在选择协议时候,需要注意2个加密隧道之间的网络状况,如有高延迟或者丢包较多的情况下,请选择TCP协议作为底层协议,UDP协议由于存在无连接和重传机制,导致要隧道上层的协议进行重传,效率非常低下。这里建议用TCP协议方式。

参考资料:
http://www.baike.com/wiki/OpenVPN
http://zh.wikipedia.org/zh-cn/OpenVPN

  • OpenVPN的技术核心是虚拟网卡,其次是SSL协议实现,SSL协议前面已阐述过,这里重点对虚拟网卡及其在OpenVpn中的工作机理进行介绍:
  • 虚拟网卡是使用网络底层编程技术实现的一个驱动软件,安装后在主机上多出一个网卡,可以像其他网卡一样进行配置。服务程序可以在应用层打开虚拟网卡,如果应用软件(如IE)向虚拟网卡发送数据,则服务程序可以读取到该数据,如果服务程序写合适的数据到虚拟网卡,应用软件也可以接收得到。虚拟网卡在很多的操作系统下都有相应的实现,这也是OpenVPN能够跨平台一个很重要的理由。
  • 在OpenVPN中,如果用户访问一个远程的虚拟地址(属于虚拟网卡配用的地址系列,区别于真实地址),则操作性系统会通过路由机制将数据包(TUN模式)或数据帧(TAP模式)发送到虚拟网卡上,服务程序接收该数据并进行相应的处理后,通过SOCKET从外网上发送出去,远程服务程序通过SOCKET从外网上接收数据,并进行相应的处理后,发送给虚拟网卡,则应用软件可以接收到,完成了一个单向传输的过程,反之亦然。
  • OpenVPN使用OpenSSL库加密数据与控制信息:它使用了OpenSSL的加密以及验证功能,意味着,它能够使用任何OpenSSL支持的算法。它提供了可选的数据包HMAC功能以提高连接的安全性。此外,OpenSSL的硬件加速也能提高它的性能。

(1)openvpn驱动部分实现了网卡处理和字符设备。网卡处理网络数据,字符设备完成与应用层的数据交互。

(2)使用openvpn必须修改路由表

工作过程,发送数据:

1,应用程序发送网络数据
2,网络数据根据修改后的路由表把数据路由到虚拟网卡
3,虚拟网卡把数据放到数据队列中
4,字符设备从数据队列中取数据,然后送给应用层
5,应用层把数据转发给物理网卡
6,物理网卡发送数据

接收过程:

1,物理网卡接收到数据,并传到应用空间。
2,应用守护程序通过字符设备,把数据传给驱动网卡。
3,数据通过虚拟网卡重新进入网络堆栈。
4,网络堆栈把数据传给上层真实的应用程序。

 

2.6 openvpn生产环境常用场景

(1)远程拨号访问企业网络或IDC机房

用的最多的场景

(2)企业异地内部网络通过VPN连接成局域网

QQ截图20171110115258.png-63.3kB

(3)互联网公司多IDC机房之间通过VPN连接交换数据

此处是运维架构人员需要考虑的问题。不同机房之间业务管理和业务访问,数据流动。

(4)企业外部VPN服务

在供应商,合作伙伴的LAN和本公司的LAN之间建立的VPN服务。
从技术上来说,2,3,4的实现是一样的。

 

2.7 企业生产场景常用VPN工作结构图

(1)企业vpn远程拨号访问场景逻辑图(OpenVPN)

QQ截图20171117234117.png-62.5kB

  • 当用户从家里拨号上网后,通过OpenVPN Client软件可以拨号到OpenVPN Server(ip:124.43.12.115)上,此时,在个人笔记本和OpenVPN Server之间会建立一个加密的专用隧道(默认会使用10.6.27.0段的IP),使得个人笔记本可以访问得到OpenVPN Server的内网卡IP地址(172.16.1.7),但是,此时通过笔记本直接访问和OpenVPN Server相同的内部局域网中的其他Server(ip:172.16.1.8)是访问不到的,因为,OpenVPN Server不知道如何帮你转发这个访问请求。
  • 在生产环境中的常用做法是,当个人笔记本连接上OpenVPN Server之后,在OpenVPN Server上加入一条防火墙NAT规则(部署时人工增加),使得当笔记本(来源地址段为10.6.27.0)访问和OpenVPN Server相同的内部局域网Server(ip:172.16.1.9)时,把笔记本的访问去请求伪装成OpenVPN Server的请求(即把笔记本的访问来源地址更改为OpenVPN Server的内网卡IP地址,本文为172.16.1.7),这样,从笔记本就可以轻松访问和OpenVPN Server相同的内部局域网的其它Server(ip:172.16.1.9)了,因为经过NAT转换后,二者看起来是在同一个局域网网段内。在访问请求时,笔记本的IP已经转换为OpenVPN Server的内网卡IP地址,本文为172.16.1.7,而和OpenVPN Server相同的内部局域网的所有Server的IP段都在172.16.1.0/24段,这样家里的笔记本也就相当于在172.16.1.0/24了,从而实现局域网互相访问的效果。
  • 当然,OpenVPN的功能及应用不仅仅是我上面描述的,在生产环境中,还可以有其它的使用方案,例如:配置VPN实现“FQ”功能。

(2)企业或IDC机房网络互联场景逻辑图(IPsec)

QQ截图20171110214914.png-60.6kB

 

第三章 OpenVPN生产环境需求及环境模拟

 

3.1 环境需求

设备/项目 IP
模拟公网VPN客户端(笔记本或PC) 192.168.0.100/24(模拟公网IP)
OpenVPN Server(双网卡) eth0:192.168.0.200/24(公网) eth1:192.168.200.100/24(内网)
IDC机房内部局域网服务器 192.168.200.200/24(模拟内网服务器无公网IP)

实现需求:
在远端通过VPN客户端(笔记本)拨号到VPNserver,然后可以直接访问VPNServer所在局域网内的多个servers,进行管理维护。

QQ截图201711102+340.png-38kB

 

3.2 大规模集群环境VPN逻辑架构

QQ截图20171113200125.png-133kB

 

3.3 openvpn实验初始环境搭建

猜你喜欢

转载自www.cnblogs.com/hai-better/p/10015860.html