OpenVPN

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協議由于存在無連接和重傳機制,導緻要隧道上層的協議進行重傳,效率非常低下。

openvpn是vpn的一個具體實現,它穿透能力強,是所有vpn産品中的佼佼者,不但性能優越,而且是開源軟件,可以免費使用,也可以二次開發,提供了多種平台的安裝版本。此外,它還提供了多種客戶端(包括window、linux、mac以及各種移動設備的客戶端安裝包)。

解析

該軟件最早由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從外網上接收數據,并進行相應的處理後,發送給虛拟網卡,則應用軟件可以接收到,完成了一個單向傳輸的過程,反之亦然。

VPN的英文全稱是“Virtual Private Network”,即虛拟專用網絡,顧名思義,我們可以把它理解成是虛拟出來的企業内部專線。它可以通過特殊的加密通訊協議,在連接于Internet上的位于不同地方的兩個或多個企業内部網之間建立一條專用的通訊線路,就好比是架設了一條專線一樣,但是它并不需要真正地去鋪設光纜之類的物理線路(圖1)。而且相對Internet這個全球性和開放性的、不可管理的國際互聯網絡,VPN最大的優勢在于企業用戶擁有高度控制性,尤其是基于安全基礎上的控制。一個内部VPN能使企業對所有的安全認證、網絡系統以及網絡訪問情況進行控制,建立端到端的安全架構,集成和協調現有的内部安全技術。

加密

OpenVPN使用OpenSSL庫加密數據與控制信息:它使用了OpenSSL的加密以及驗證功能,意味着,它能夠使用任何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以防止敏感數據交換到磁盤。

OpenVPN通過PKCS#11支持硬件加密标識,如智能卡。

對比

OpenSSH,能實現二/三層的基于隧道的VPN。OpenSSH logo

stunnel,使用SSL向任何單一端口的TCP服務提供安全保護。

相關詞條

相關搜索

其它詞條