OpenVPN

生活百科 2023-01-25 21:21生活百科www.aizhengw.cn

OpenVPN

VPN直译就是虚拟专用通道,是提供给企业之间或者个人与公司之间安全数据传输的隧道,OpenVPN无疑是Linux下开源VPN的先锋,提供了良好的性能和友好的用户GUI。

它大量使用了OpenSSL加密库中的SSLv3/TLSv1协定函式馆。

目前OpenVPN能在Solaris、Linux、OpenBSD、FreeBSD、NetBSD、Mac OS X与Microsoft Windows以及Android和iOS上运行,并包含了许多安全性的功能。它并不是一个基于Web的VPN软体,也不与IPsec及其他VPN软体包兼容。

基本介绍

  • 外文名OpenVPN
  • 软体许可GPL许可
  • 兼容性类UNIX系统,Windows NT系统
  • 软体类型VPN软体

简介

OpenVPN 是一个基于 OpenSSL 库的套用层 VPN 实现。和传统 VPN 相比,它的优点是简单易用。
OpenVPN允许参与建立VPN的单点使用共享金钥,电子证书,或者用户名/密码来进行身份验证。它大量使用了OpenSSL加密库中的SSLv3/TLSv1 协定函式库。OpenVPN能在Solaris、Linux、OpenBSD、FreeBSD、NetBSD、Mac OS X与Windows 2000/XP/Vista上运行,并包含了许多安全性的功能。它并不是一个基于Web的VPN软体,也不与IPsec及其他VPN软体包兼容。
OpenVPN2.0后引入了用户名/口令组合的身份验证方式,它可以省略客户端证书,仍有一份伺服器证书需要被用作加密。 OpenVPN所有的通信都基于一个单一的IP连线埠, 默认且推荐使用UDP协定通讯,TCP也被支持。OpenVPN连线能通过大多数的代理伺服器,并且能够在NAT的环境中很好地工作。服务端具有向客 户端“推送”某些网路配置信息的功能,这些信息包括IP位址、路由设定等。OpenVPN提供了两种虚拟网路接口通用Tun/Tap驱动,通过它们, 可以建立三层IP隧道,或者虚拟二层乙太网,后者可以传送任何类型的二层乙太网络数据。传送的数据可通过LZO算法压缩。在选择协定时候,需要注意2个加密隧道之间的网路状况,如有高延迟或者丢包较多的情况下,请选择TCP协定作为底层协定,UDP协定由于存在无连线和重传机制,导致要隧道上层的协定进行重传,效率非常低下。

解析

该软体最早由James Yonan编写。OpenVPN允许参与建立VPN的单点使用预设的私钥,第三方证书,或者用户名/密码来进行身份验证。它大量使用了OpenSSL加密库,以及SSLv3/TLSv1协定。
OpenVPN能在Linux、xBSD、Mac OS X与Windows2000/XP上运行。它并不是一个基于Web的VPN软体,也不与IPsec及其他VPN软体包兼容。

原理

OpenVpn的技术核心是虚拟网卡,是SSL协定实现,由于SSL协定在其它的词条中介绍的比较清楚了,这里重点对虚拟网卡及其在OpenVpn的中的工作机理进行介绍
虚拟网卡是使用网路底层编程技术实现的一个驱动软体,安装后在主机上多出现一个网卡,可以像其它网卡一样进行配置。服务程式可以在套用层打开虚拟网卡,如果套用软体(如IE)向虚拟网卡传送数据,则服务程式可以读取到该数据,如果服务程式写合适的数据到虚拟网卡,套用软体也可以接收得到。虚拟网卡在很多的作业系统下都有相应的实现,这也是OpenVpn能够跨平台一个很重要的理由。
在OpenVpn中,如果用户访问一个远程的虚拟地址(属于虚拟网卡配用的地址系列,区别于真实地址),则作业系统会通过路由机制将数据包(TUN模式)或数据帧(TAP模式)传送到虚拟网卡上,服务程式接收该数据并进行相应的处理后,通过SOCKET从外网上传送出去,远程服务程式通过SOCKET从外网上接收数据,并进行相应的处理后,传送给虚拟网卡,则套用软体可以接收到,完成了一个单向传输的过程,反之亦然。

加密

OpenVPN使用OpenSSL库加密数据与控制信息它使用了OpenSSL的加密以及验证功能,意味着,它能够使用任何OpenSSL支持的算法。它提供了可选的数据包HMAC功能以提高连线的安全性。,OpenSSL的硬体加速也能提高它的性能。

验证

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

网路

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

安全

OpenVPN与生俱来便具备了许多安全特性它在用户空间运行,无须对核心及网路协定栈作修改;初始完毕后以chroot方式运行,放弃root许可权;使用mlockall以防止敏感数据交换到磁碟。
OpenVPN通过PKCS#11支持硬体加密标识,如智慧卡。

对比

OpenSSH,能实现二/三层的基于隧道的VPN。stunnel,使用SSL向任何单一连线埠的TCP服务提供安全保护。

Copyright@2015-2025 www.aizhengw.cn 癌症网版板所有