OpenVPN中文概述
趣多多译
OpenVPN 是一个具备完全特征的SSL VPN解决方案,能够进行大范围的配置操作,包括远程访问、站点-站点间VPN、WiFi安全及企业级远程访问解决方案,支持负载均衡,错误恢复及细粒度的访问控制。
OpenVPN通过使用工业标准SSL/TLS协议 实现了OSI 2层及3层安全网络扩展,支持灵活的基于证书、智能卡的客户端认证方法,允许通过在VPN虚拟接口上应用防火墙规则实现用户及组访问控制策略。OpenVPN并非一个Web应用代理,也不能通过Web浏览器进行操作。
作为一个不错的关于OpenVPN的概念介绍,可以参考James Ynan在Linux Fest Northwest 上2004年发表的程序注释――理解用户空间VPN:历史、概念基础及实际应用(Understanding the User-Space VPN: History, Conceptual Foundations, and Practical Usage)。也可以参考Charlie Hosner的OpenVPN及SSL VPN革命(OpenVPN and the SSL VPN Revolution)。
OpenVPN 是一个开源项目,遵从GPL许可协议。商业许可对重新发布其基于OpenVPN的应用程序的公司也有效。获得更多信息请联系info@openvpn.net。
OpenVPN 能够运行于Linux、Windows 2000/XP及更高版本、OpenBSD、FreeBSD、NetBSD、Mac OS X及Solaris平台。
通过OpenVPN,你可以:
在任意IP局部网络或虚拟以太网适配器上通过单个UDP或TCP端口建立隧道;
使用一或多台机器配置可裁剪的、负载均衡的VPN服务器群以处理成千上万的来自VPN客户端的动态连接;
能够使用在OpenSSL库中所提供所有的加密、认证及证书特性以保护私有网络在Internet网络上的数据传输;
使用OpenSSL库所支持的任意加密算法、密钥长度或HMAC数字签名(用于数据报完整性检查);
先把基于静态密钥传统加密方法或基于证书的公钥加密方法;
使用静态、预先公有的密钥或基于TLS的动态密钥交换;
使用实时的自适配压缩及流量整形以管理链路带宽分配;
为动态公共点(如DHCP或拨号客户端)提供隧道传输;
无需显示定义防火墙规则为面向连接的防火墙提供网络隧道传输;
基于NAT的网络隧道;
通过虚拟的tap设备创建安全的以太网桥;
在Windows或Mac OS X系统上通过GUI界面控制OpenVPN。
OpenVPN与其它VPN有何区别?
OpenVPN的主要特征包括跨平台的可移植性、优秀的稳定性、成百上千或成千上个客户端支持的可伸展性、相对简单的安装过程、支持动态IP地址及NAT。
OpenVPN 提供一个设计为易于针对站点定制的可扩展的VPN框架,例如提供发布自定义安装包到客户端,或通过OpenVPN插件模块接口支持可选的认证方法(例如openvpn-auth-pam 模块允许OpenVPN使用任意PAM认证方法认证客户端,这种方法可以单独使用,也可以与基于X509证书结合使用以进行认证)。
OpenVPN 提供一个管理接口,可以用于远端控制或中央控制一个OpenVPN守护进程。管理接口也可以用于开发基于GUI或web的前端应用程序。
在Windows平台上,OpenVPN能够使用Windows Crypto API从智能卡上读取证书或私钥。
OpenVPN 使用设计用于可保护被动攻击和主动攻击的工业强度的安全模型。OpenVPN的安全模型基于SSL/TLS进行会话认证及使用IPSec ESP协议用于基于UDP的安全隧道传输。OpenVPN支持X509 PKI (public key infrastructure)用于会话认证,TLS协议用于密钥交换,OpenSSL的加密算法无关的EVP接口用于加密隧道数据,HMAC-SHA1算法用于认证隧道数据。
OpenVPN建立为可移植的, OpenVPN可以运行于Linux、Solaris、OpenBSD、FreeBSD、NetBSD、Mac OS X及Windows 2000/XP,因为OpenVPN作为用户空间守护进程编写而非内核模块或对IP层的复杂变更,移植操作的简易性是值得留意的。
OpenVPN易于使用,通常,一个隧道的建立和配置可以通过一个单独的命令完成(无需任何必要的配置文件)。OpenVPN文档包含了的示例进行了详细解释。
OpenVPN 经过严格设计,并在不可靠的网络中进行了强度测试。OpenVPN的一个主要的设计目标就是在正常操作和错误恢复情况下IP层都能够快速响应。这意味着如果IP层断开5分钟,当它再次恢复时,隧道流量能够立即恢复,即使动态密钥交换在这期间已经过期。
OpenVPN 有着健壮的模块设计。所有加密都由OpenSSL库处理,所有IP隧道功能都由TUN/TAP虚拟网络驱动提供。
模块化的好处是显而易见的,例如,OpenVPN可以与新版本的OpenSSL库动态链接并立即能够使用其在新版本中所提供的新功能。例如,当OpenVPN基于最后版本的OpenSSL(0.9.7)编译时,它能够使用新的加密算法,如AES-256(高级加载标准,256位密钥),以及OpenSSL特定目的的硬件加速器优化加密、解密及认证性能的加密引擎功能。
同样地,OpenVPN的用户空间设计易于移植到任何包含TUN/TAP虚拟网络驱动的OS中。
OpenVPN 运行速度很快,在Pentium II 266MHz机器上运行Redhat 7.2 ,使用基于TLS的认证方法,Blowfish加密算法,SHA1 用于隧道数据认证,当隧道传输一个巨大的,经过预先压缩文件的FTP会话时,OpenVPN达到了每秒(CPU时间,包括内核及用户态时间)1.455MB的收/发传输速度。
OpenVPN提供了用于控制VPN隧道的安全参数的选项,同时提供了用于保证服务器本身安全的选项,例如—chroot用于限制OpenVPN守护进程能够访问的文件系统部分,--user 及—group选项用于降低守护进程在初始化之后的优先级,--mlock用于确认密钥原始内容及隧道数据从不被分页到磁盘上,从而避免被后期恢复。
为什么先把TLS作为OpenVPN的根本认证及密钥协商协议呢?TLS是SSL协议族的最后成果,最初由Netscape开发用于他们最初的安全web浏览器。多年来,TLS及其SSL前身已经在web上得到了广泛应用,并得到了深入的弱点分析。这些分析使得它不断被加强,从而形成如今的协议,SSL/TLS被认为是最强壮及最成熟的安全协议之一。因此,我们相信TLS是作为VPN产品认证及密钥交换机制的极好的先把。
OpenVPN 支持IPSec或PPTP吗?
目前被广泛应用的VPN实现中有三个主流:SSL、IPSec及PPTP。OpenVPN是一个SSL VPN,因此并不与IPSec、L2TP或PPTP兼容。
IPSec协议设计为内核空间IP栈的修正,不同的操作系统需要其自身的IPSec实现。
相对而言,OpenVPN的用户空间实现允许跨操作系统及处理器体系、防火墙及NAT友好操作、动态地址支持、多协议支持(包括协议桥接)的移植。
优点与缺点并存,OpenVPN的主要优点在于可移植、易于配置及与NAT和动态地址兼容。OpenVPN的安装和使用与其它安全相关的守护进程软件,例如SSH相似。
由于历史因素,IPSecr的优点在于获得了众多厂商的支持,虽然OpenVPN也逐渐开始致力于硬件设备的支持。
PPTP协议的优点在于其在Windows平台预装了客户端,密码分析专家已经透露了其安全弱点。
OpenVPN符合标准吗?
作为一个用户空间VPN守护进程,OpenVPN与SSL/TLS、RSA证书及X509 PKI、NAT、DHCP及TUN/TAP兼容。
OpenVPN与IPSec、IKE、PPTP或L2TP并不兼容。
OpenVPN 隧道能够基于TCP连接传输吗?
是的,OpenVPN 1.5以上版本均支持基于TCP连接的隧道传输。
我是否能够使用web浏览器作为OpenVPN客户端?
不可以,虽然OpenVPN使用SSL/TLS协议用于安全传输,OpenVPN并不是一个Web应用代理。它是一个OSI 2层或3层Internet网络隧道解决方案,要求OpenVPN同时安装于客户端和服务器端。
编译OpenVPN
OpenVPN 在Linux或BSD系列系统中很容易通过源码编译。而在Windows上编译则比较复杂,你可以在OpenVPN下载站中找到预编译的安装包。
OpenVPN 的编译:
基于OpenSSL 加密及SSL库(版本0.9.6或更高),可以提供基于证书的认证、公钥加密、基于TLS的动态密钥交换;
只基于OpenSSL加密库,可以提供基于静态密钥的传统加密和认证;
不基于OpenSSL,只提供未加密的UDP隧道。
OpenVPN也可以与LZO实时加密库链接。OpenVPN支持自适配压缩,这意味着它可以在隧道数据流能够被压缩时进行链路压缩。
OpenVPN完全运行于用户空间,除了在Windows、Linux及BSD系列系统上需要TUN/TAP虚拟网络驱动外,不需要其它任何特殊的内核组件。
捐助OpenVPN项目
请考虑捐助OpenVPN项目。OpenVPN是GPL协议下一个完全由社区支持的成果,你的捐助对我们大有帮助,它可以确保OpenVPN的持续开发,包括保持最高安全性,维持一个严格的测试程序,添加新特性,改善文档及提供技术支持。