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