【51CTO.com独家特稿】目前openVPN在企业中的应用部署,我总结了其应用范畴:
一、使用openVPN实现网通、电信机房快速、安全通信(需要至少一台电信和网通的双线服务器,CDN系统的首选)
二、使用openVPN作为公司的远程办公环境,可与PPTPD服务器作为互备(openVPN这时可选择网桥和路由模式)
三、openVPN可以穿透一些顽固型的防火墙,直接访问其后的局域网环境中的资源(这点就比较强悍,具体作用看我们在企中的需求了)
四、使用openVPN作为“翻墙”软件,游戏及Facebook还有被和谐的网站;
openVPN安全
openVPN作为企业内网的一个入口,我们不建议作DMZ映射,其实仅仅只需要映射一个内网IP的1194的TCP和UDP即可,效果也非常好;而且我建议openVPN的外网IP为电信的比较好,这样速度能得到保证。
关于用户证书的有效期限
一般来说,我们在服务器端使用命令 build-key * 建立client用户的时候,系统默认client用户的key的有效期限为10年的,如何更改这个有效期限呢,其实可以修改 build-key.bat文件 就可以实现.方法是
右击 easy-rsa 目录下的 build-key.bat 文件 ,选择 编辑 , 查找 -days ,把后面的 3650 修改成你想要的有效期限,保存后再使用 build-key * 生成的client用户的期限就会变成你想要的期限了,过期了key文件是登陆不了服务器的。
我尝试过另外一种做法,更改openssl.conf文件也可以达到更改默认有效期为10年
openVPN的负载均衡
首先在不同的地方或者不同ip的服务器配置相同vpn服务器,方法是首先在其中A服务器上配置好一个vpn服务器,然后把 整个 openvpn文件夹备份 ,然后在B服务器上先安装一个openvpn,再把之前A服务器上备份的 openvpn文件夹里面 的文件拷贝到 B服务器,覆盖掉原来的,这样两个服务器的配置是相同的.多个服务器如法炮制.
然后在客户端配置文件上加上
- remote A服务器ip 端口 //如 remote 201.3.31.1 443
- remote B服务器ip 端口
- . . .
- . . .
- remote-random //这个为随机选择服务器登陆,要是A服务器登陆不了或者掉线,会自动尝试登陆B服务器的,从而实现负载均衡
以上部分资料参考了熊茂林的文章
我个人觉得这办法麻烦,所以单独配置了一台PPTPD服务器,采用的网通IP,作为openVPN的备份,如果同事们在家移动办公时,因为机房电信线路出问题时,可用pptpd网通服务器登陆,这样不影响工作;但有一个比较悲剧的是,pptpd的穿透很弱,一般的家用路由器都不支持GRE,所以大家都愿意选择openVPN。#p#
下面,我就企业和市面上应用得多的VPN作一下归纳和总结:
PPTP
点对点隧道协议 (PPTP) 是由包括微软和3Com等公司组成的PPTP论坛开发的一种点对点隧道协,基于拨号使用的PPP协议使用PAP或CHAP之类的加密算法,或者使用 Microsoft的点对点加密算法MPPE。其通过跨越基于 TCP/IP 的数据网络创建 VPN 实现了从远程客户端到专用企业服务器之间数据的安全传输。PPTP 支持通过公共网络(例如 Internet)建立按需的、多协议的、虚拟专用网络。PPTP 允许加密 IP 通讯,然后在要跨越公司IP 网络或公共IP网络(如Internet)发送的 IP 头中对其进行封装。
L2TP
第2 层隧道协议 (L2TP) 是IETF基于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网络上使用。
IPSec
隧道模式隧道是封装、路由与解封装的整个过程。隧道将原始数据包隐藏(或封装)在新的数据包内部。该新的数据包可能会有新的寻址与路由信息,从而使其能够通 过网络传输。隧道与数据保密性结合使用时,在网络上窃听通讯的人将无法获取原始数据包数据(以及原始的源和目标)。封装的数据包到达目的地后,会删除封 装,原始数据包头用于将数据包路由到最终目的地。
隧道本身是封装数据经过的逻辑数据路径,对原始的源和目的端,隧道是不可见的,而只能看到网络路径中的点对点连接。连接双方并不关心隧道起点和终点之间的任何路由器、交换机、代理服务器或其他安全网关。将隧道和数据保密性结合使用时,可用于提供VPN。
封装的数据包在网络中的隧道内部传输。在此示例中,该网络是 Internet。网关可以是外部 Internet 与专用网络间的周界网关。周界网关可以是路由器、防火墙、代理服务器或其他安全网关。另外,在专用网络内部可使用两个网关来保护网络中不信任的通讯。
当以隧道模式使用IPSec时,其只为为IP通讯提供封装。使用IPSec隧道模式主要是为了与其他不支持IPSec上的L2TP或PPTP VPN隧道技术的路由器、网关或终端系统之间的相互操作。
OpenVPN
OpenVPN允许参与建立VPN的单点使用预设的私钥,第三方证书,或者用户名/密码来进行身份验证。它大量使用了OpenSSL加密库,以及SSLv3/TLSv1 协议。OpenVPN能在Linux、xBSD、Mac OS X与Windows 2000/XP上运行。它并不是一个基于Web的VPN软件,也不与IPsec及其他VPN软件包兼容。
隧道加密:OpenVPN使用OpenSSL库加密数据与控制信息:它使用了OpesSSL的加密以及验证功能,意味着,它能够使用任何OpenSSL支持的算法。 它提供了可选的数据包HMAC功能以提高连接的安全性。此外,OpenSSL的硬件加速也能提高它的性能。
验证:OpenVPN提供了多种身份验证方式,用以确认参与连接双方的身份,包括:预享私钥,第三方证书以及用户名/密码组合。预享密钥最为简单,但同时它 只能用于建立点对点的VPN;基于PKI的第三方证书提供了最完善的功能,但是需要额外的精力去维护一个PKI证书体系。OpenVPN2.0后引入了用 户名/口令组合的身份验证方式,它可以省略客户端证书,但是仍有一份服务器证书需要被用作加密.
网络:OpenVPN所有的通信都基于一个单一的IP端口,默认且推荐使用UDP协议通讯,同时TCP也被支持。OpenVPN连接能通过大多数的代理服务 器,并且能够在NAT的环境中很好地工作。服务端具有向客户端“推送”某些网络配置信息的功能,这些信息包括:IP地址、路由设置等。OpenVPN提供 了两种虚拟网络接口:通用Tun/Tap驱动,通过它们,可以建立三层IP隧道,或者虚拟二层以太网,后者可以传送任何类型的二层以太网络数据。传送的数 据可通过LZO算法压缩。IANA(Internet Assigned Numbers Authority)指定给OpenVPN的官方端口为1194。OpenVPN 2.0以后版本每个进程可以同时管理数个并发的隧道。
OpenVPN使用通用网络协议(TCP与UDP)的特点使它成为IPsec等协议的理想替代,尤其是在ISP(Internet service provider)过滤某些特定VPN协议的情况下。在选择协议时候,需要注意2个加密隧道之间的网络状况,如有高延迟或者丢包较多的情况下,请选择 TCP协议作为底层协议,UDP协议由于存在无连接和重传机制,导致要隧道上层的协议进行重传,效率非常低下。
安全:OpenVPN与生俱来便具备了许多安全特性:它在用户空间运行,无须对内核及网络协议栈作修改;初始完毕后以chroot方式运行,放弃root权限; 使用mlockall以防止敏感数据交换到磁盘。
【51CTO.com独家特稿,非经授权谢绝转载!合作媒体转载请注明原文出处及作者!】