·验证
·网络
·安全
·对比
·openvpn项目主页
openvpn是一个用于创建虚拟专用网络加密通道的软件包,最早由jamesyonan编写。
openvpn允许参与建立vpn的单点使用预设的私钥,第三方证书,或者用户名/密码来进行身份验证。它大量使用了openssl加密库,以及sslv3/tlsv1协议。
openvpn能在linux、xbsd、macosx与windows2000/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(internetassignednumbersauthority)指定给openvpn的官方端口为1194。openvpn2.0以后版本每个进程可以同时管理数个并发的隧道。
openvpn使用通用网络协议(tcp与udp)的特点使它成为ipsec等协议的理想替代,尤其是在isp(internetserviceprovider)过滤某些特定vpn协议的情况下。
在选择协议时候,需要注意2个加密隧道之间的网络状况,如有高延迟或者丢包较多的情况下,请选择tcp协议作为底层协议,udp协议由于存在无连接和重传机制,导致要隧道上层的协议进行重传,效率非常低下。
安全openvpn与生俱来便具备了许多安全特性:它在用户空间运行,无须对内核及网络协议栈作修改;初始完毕后以chroot方式运行,放弃root权限;使用mlockall以防止敏感数据交换到磁盘。
openvpn通过pkcs#11支持硬件加密标识,如智能卡。
对比openssh,能实现二/三层的基于隧道的vpn。
stunnel,使用ssl向任何单一端口的tcp服务提供安全保护。
openvpn项目主页http://openvpn.net/