OpenVPN

開放原始碼軟體應用程式

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

OpenVPN
原作者James Yonan
開發者OpenVPN 專案 / OpenVPN Inc.
首次發布2001年5月13日,​22年前​(2001-05-13[1]
目前版本
  • 2.6.10 (2024年3月20日;穩定版本)[2]
編輯維基數據鏈結
原始碼庫 編輯維基數據鏈結
程式語言C語言
平台
類型VPN
許可協定GNU通用公共許可證
網站openvpn.net

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

目前OpenVPN能在SolarisLinuxOpenBSDFreeBSDNetBSDMac OS XMicrosoft Windows以及AndroidiOS上執行,並包含了許多安全性的功能。它不與IPsec相容。

原理 編輯

OpenVPN的技術核心是虛擬網卡,其次是SSL協定實現。

虛擬網卡 編輯

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

加密 編輯

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

功能 編輯

身分驗證 編輯

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演算法壓縮。 但傳輸時使用lzo壓縮將遭受VORACLE威脅而暴露傳輸資料,官方預設不使用也不建議開啟此功能。[9]

安全性 編輯

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

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

版本 編輯

社群版本OpenVPN Community 編輯

伺服器端:需使用者自行下載原始碼編譯、安裝。

使用者端:使用OpenVPN Connect,支援Windows、Linux、Android與iOS。

商業版本OpenVPN Access Server 編輯

伺服器端使用與社群版本相同的OpenVPN程式碼,但在上層建置易於操作的網頁式介面。

商業版本提供無限期2個VPN連線授權可免費試用。

商業版提供下列三種安裝方式:[10]

  1. 軟體套件,支援Ubuntu、Debian、Redhat、CentOS。
  2. 虛擬機映像檔,支援ESXi 5.0與Microsoft Hyper-V。
  3. 雲端服務佈署,支援Amazon AWS、Microsoft Azure、Google GCP、Digital Ocean droplets與ORACLE VPC。

OpenVPN Cloud 編輯

提供使用者直接租用官方架設的OpenVPN Access Server,適用於不想自行安裝管理主機的企業使用者租用。

Private Tunnel 編輯

提供僅需要使用VPN通道服務的個人使用者直接租用。

受中國大陸的限制 編輯

由於OpenVPN通訊協定特徵明顯,當從中國大陸向境外OpenVPN伺服器傳輸大量資料或進行頻繁連接後,防火長城會封鎖OpenVPN伺服器所使用的TCP/UDP埠或伺服器IP位址,使OpenVPN無法連接。而在敏感時期則會針對OpenVPN伺服器回送憑證完成握手建立有效加密連接時干擾連接,在使用TCP協定模式時握手會被連接重設,而使用UDP協定時含有伺服器認證憑證的封包會被故意丟棄,使OpenVPN無法建立有效加密連接而連接失敗。而在中國大陸內部的連接不受這種限制。

偽裝的改進 編輯

  • Stunnel,通過使用Stunnel轉發OpenVPN流量以消除OpenVPN的協定特徵,達到提供安全保護與流量偽裝的目的(通常將Stunnel設定於443埠偽裝成Web網站)。
  • KCPtun,使用KCPtun將OpenVPN流量轉為UDP流量傳輸,也可以消除OpenVPN的協定特徵。
  • SSH,使用SSH建立隧道轉發OpenVPN流量,但SSH會暴露自身協定特徵[11],故這種方式已被淘汰。

參考文獻 編輯

  1. ^ OpenVPN Change Log - OpenVPN Change Log頁面存檔備份,存於網際網路檔案館
  2. ^ OpenVPN 2.6.10 released. 2024年3月20日 [2024年3月20日]. 
  3. ^ Downloads. openvpn.net. [2 February 2016]. (原始內容存檔於2018-10-06). 
  4. ^ Private Tunnel VPN - Android Apps on Google Play. [2018-01-26]. (原始內容存檔於2020-11-11). 
  5. ^ Private Tunnel VPN. App Store. 23 October 2014 [2018-01-26]. (原始內容存檔於2019-06-05). 
  6. ^ How to connect to Access Server from a Linux computer. [2018-01-26]. (原始內容存檔於2018-09-26). 
  7. ^ FreeBSD Ports Search. [2018-01-26]. (原始內容存檔於2020-09-29). 
  8. ^ The NetBSD Packages Collection: net/openvpn. [2018-01-26]. (原始內容存檔於2020-09-30). 
  9. ^ OpenVPN wiki. [2021-03-18]. (原始內容存檔於2021-04-15). 
  10. ^ OpenVPN官方網站. [2021-03-18]. (原始內容存檔於2021-06-04). 
  11. ^ Solidot | 中国刺探加密连接测试新屏蔽方式. www.solidot.org. [2020-07-07]. (原始內容存檔於2020-07-07). 

外部連結 編輯

參見 編輯