OpenVPN

維基百科,自由的百科全書
前往: 導覽搜尋
OpenVPN
Ovpntech logo-s REVISED.png
穩定版本 2.3.2 / 2013年6月3日;14個月前 (2013-06-03)
預覽版本 2.X 系列 / 每個星期日
型別 虛擬私人網路軟體
許可協定 GPLv2
網站 http://openvpn.net/

OpenVPN是一個用於建立虛擬私人網路絡加密通道的軟體包,最早由James Yonan編寫。OpenVPN允許建立的VPN使用公開金鑰電子證書、或者用戶名/密碼來進行身份驗證。

它大量使用了OpenSSL加密庫中的SSLv3/TLSv1協定函式庫。

目前OpenVPN能在SolarisLinuxOpenBSDFreeBSDNetBSDMac OS XWindows 2000/XP/Vista/7以及AndroidiOS上執行,並包含了許多安全性的功能。它並不是一個基於Web的VPN軟體,也不與IPsec及其他VPN軟體包相容。

原理[編輯]

OpenVpn的技術核心是虛擬網卡,其次是SSL協定實現,由於SSL協定在其它的詞條中介紹的比較清楚了,這裡重點對虛擬網卡及其在OpenVpn的中的工作機理進行介紹:

虛擬網卡是使用網路底層編程技術實現的一個驅動軟體,安裝後在主機上多出現一個網卡,可以像其它網卡一樣進行配置。服務程式可以在應用層開啟虛擬網卡,如果應用軟體(如IE)向虛擬網卡傳送資料,則服務程式可以讀取到該資料,如果服務程式寫合適的資料到虛擬網卡,應用軟體也可以接收得到。虛擬網卡在很多的作業系統下都有相應的實現,這也是OpenVpn能夠跨平台一個很重要的理由。

在OpenVpn中,如果用戶存取一個遠端的虛擬位址(屬於虛擬網卡配用的位址系列,區別於真實位址),則作業系統會透過路由機制將封包(TUN模式)或資料影格(TAP模式)傳送到虛擬網卡上,服務程式接收該資料並進行相應的處理後,透過SOCKET從外網上傳送出去,遠端服務程式透過SOCKET從外網上接收資料,並進行相應的處理後,傳送給虛擬網卡,則應用軟體可以接收到,完成了一個單向傳輸的過程,反之亦然。

加密[編輯]

OpenVPN使用OpenSSL,PolarSSL(2.3.0之後版本引入)庫來加密資料與控制資訊。這意味著,它能夠使用任何OpenSSL支援的演算法。它提供了可選的封包HMAC功能以提高連線的安全性。此外,OpenSSL的硬體加速也能提高它的效能。

身份驗證[編輯]

OpenVPN提供了多種身份驗證方式,用以確認連線雙方的身份,包括:

  • 預享私鑰
  • 第三方證書
  • 用戶名/密碼組合

預享金鑰最為簡單,但同時它只能用於建立點對點的VPN;基於PKI的第三方證書提供了最完善的功能,但是需要額外維護一個PKI證書系統。OpenVPN2.0後引入了用戶名/口令組合的身份驗證方式,它可以省略客戶端證書,但是仍需要一份伺服器證書用作加密。

功能與埠[編輯]

  • OpenVPN所有的通訊都基於一個單一的IP,預設且推薦使用UDP協定通訊,同時也支援TCP。IANA(Internet Assigned Numbers Authority)指定給OpenVPN的官方埠為1194。OpenVPN 2.0以後版本每個行程可以同時管理數個並行的隧道。OpenVPN使用通用網路協定(TCPUDP)的特點使它成為IPsec等協定的理想替代,尤其是在ISP(Internet service provider)過濾某些特定VPN協定的情況下。
  • OpenVPN連線能透過大多數的代理伺服器,並且能夠在NAT的環境中很好地工作。
  • 伺服端具有向客戶端「推播」某些網路配置資訊的功能,這些資訊包括:IP位址、路由設定等。
  • OpenVPN提供了兩種虛擬網路介面:通用Tun/Tap驅動,透過它們,可以建立三層IP隧道,或者虛擬二層乙太網,後者可以傳送任何型別的二層乙太網絡資料。
  • 傳送的資料可透過LZO演算法壓縮。


安全[編輯]

OpenVPN與生俱來便具備了許多安全特性:它在用戶空間執行,無須對核心及網路協定棧作修改;初始完畢後以chroot方式執行,放棄root許可權;使用mlockall以防止敏感資料交換到磁碟。

OpenVPN透過PKCS#11支援硬體加密標識,如智慧卡

對比[編輯]

  • OpenVPN,能實現二/三層的基於隧道的VPN。
  • stunnel,使用SSL向任何單一埠的TCP服務提供安全保護。

參考文獻[編輯]

外部連結[編輯]

參見[編輯]