開源VPN之OpenVPN
什么是OpenVPN
VPN直譯就是虛擬專用通道,是提供給企業(yè)之間或者個人與公司之間安全數據傳輸的隧道,OpenVPN無疑是Linux下開源VPN的先鋒,提供了良好的性能和友好的用戶GUI。該軟件最早由James Yonan編寫。
OpenVPN允許參與建立VPN的單點使用預設的私鑰,第三方證書,或者用戶名/密碼來進行身份驗證。它大量使用了OpenSSL加密庫,以及SSLv3/TLSv1協議。OpenVPN能在Linux、xBSD、Mac OS X與Windows 2000/XP上運行。它并不是一個基于Web的VPN軟件,也不與IPsec及其他VPN軟件包兼容。
OpenVpn的技術核心是虛擬網卡,其次是SSL協議實現,由于SSL協議在其它的詞條中介紹的比較清楚了,這里重點對虛擬網卡及其在OpenVpn的中的工作機理進行介紹:
虛擬網卡是使用網絡底層編程技術實現的一個驅動軟件,安裝后在主機上多出現一個網卡,可以像其 它網卡一樣進行配置。服務程序可以在應用層打開虛擬網卡,如果應用軟件(如IE)向虛擬網卡發(fā)送數據,則服務程序可以讀取到該數據,如果服務程序寫合適的 數據到虛擬網卡,應用軟件也可以接收得到。虛擬網卡在很多的操作系統(tǒng)下都有相應的實現,這也是OpenVpn能夠跨平臺一個很重要的理由。 在OpenVpn中,如果用戶訪問一個遠程的虛擬地址(屬于虛擬網卡配用的地址系列,區(qū)別于真 實地址),則操作系統(tǒng)會通過路由機制將數據包(TUN模式)或數據幀(TAP模式)發(fā)送到虛擬網卡上,服務程序接收該數據并進行相應的處理后,通過 SOCKET從外網上發(fā)送出去,遠程服務程序通過SOCKET從外網上接收數據,并進行相應的處理后,發(fā)送給虛擬網卡,則應用軟件可以接收到,完成了一個 單向傳輸的過程,反之亦然。
OpenVPN的51CTO源碼下載地址為http://down.51cto.com/data/312355