?
一、名詞解釋
?OpenVPN 是一個基于 OpenSSL 庫的應(yīng)用層 VPN 實現(xiàn),和傳統(tǒng) VPN 相比,它的優(yōu)點是簡單易用。
?
OpenVPN?介紹:
OpenVPN 是一個基于 OpenSSL庫的應(yīng)用層 VPN 實現(xiàn)。和傳統(tǒng) VPN 相比,它的優(yōu)點是簡單易用。vpn直譯就是虛擬專用通道,是提供企業(yè)之間或者公司之間安全數(shù)據(jù)傳輸?shù)乃淼?。OpenVPN是一個全特性的SSL VPN,它使用2層或3層的安全網(wǎng)絡(luò)技術(shù),使用的是工業(yè)標(biāo)準(zhǔn)的SSL/TLS協(xié)議。SSL(Secure Sockets Layer 安全套接層),及其繼任者傳輸層安全(TransportLayer Security,TLS)是為網(wǎng)絡(luò)通信提供安全及數(shù)據(jù)完整性的一種安全協(xié)議。OpenVPN支持靈活的客戶端授權(quán)方式,支持證書、智能卡、用戶名和密碼,允許用戶可以通過防火墻連接到VPN的虛擬接口,OpenVPN不是一個基于web代理的應(yīng)用,也不是基于瀏覽器訪問。
?
?OpenVPN允許參與建立VPN的單點使用共享金鑰,電子證書,或者用戶名/密碼來進行身份驗證。它大量使用了OpenSSL加密庫中的SSLv3/TLSv1 協(xié)議函式庫。OpenVPN能在Solaris、Linux、OpenBSD、FreeBSD、NetBSD、Mac OS X與Windows 2000/XP/Vista上運行,并包含了許多安全性的功能。它并不是一個基于Web的VPN軟件,也不與IPsec及其他VPN軟件包兼容。
?OpenVPN2.0后引入了用戶名/口令組合的身份驗證方式,它可以省略客戶端證書,但是仍有一份服務(wù)器證書需要被用作加密。 OpenVPN所有的通信都基于一個單一的IP端口, 默認(rèn)且推薦使用UDP協(xié)議通訊,同時TCP也被支持。OpenVPN連接能通過大多數(shù)的代理服務(wù)器,并且能夠在NAT的環(huán)境中很好地工作。服務(wù)端具有向客 戶端“推送”某些網(wǎng)絡(luò)配置信息的功能,這些信息包括:IP地址、路由設(shè)置等。
?OpenVPN提供了兩種虛擬網(wǎng)絡(luò)接口:通用Tun/Tap驅(qū)動,通過它們,可以建立三層IP隧道,或者虛擬二層以太網(wǎng),后者可以傳送任何類型的二層以太網(wǎng)絡(luò)數(shù)據(jù)。傳送的數(shù)據(jù)可通過LZO算法壓縮。在選擇協(xié)議時候,需要注意2個加密隧道之間的網(wǎng)絡(luò)狀況,如有高延遲或者丟包較多的情況下,請選擇TCP協(xié)議作為底層協(xié)議,UDP協(xié)議由于存在無連接和重傳機制,導(dǎo)致要隧道上層的協(xié)議進行重傳,效率非常低下。
OpenVpn客戶端配置鏈接:http://m.noblerbaby.cn/index.php?option=com_content&view=article&id=138:openvpn&catid=39&Itemid=241
二、如何使用
1.字段說明
【生成客戶端配置】:
導(dǎo)出服務(wù)端的參數(shù)配置,包括CA證書等。
【顯示日志】:
顯示服務(wù)端日志信息,包括服務(wù)端啟動時間,客戶端撥號日志等。
【服務(wù)端口】:
?openvpn服務(wù)進程使用的端口。IANA(Internet Assigned Numbers Authority)指定給OpenVPN的官方端口為1194。
【VPN網(wǎng)段】/【網(wǎng)段掩碼】:
?vpn所用地址池網(wǎng)段及所用IP地址范圍
?
?
【認(rèn)證方式】:分為賬號認(rèn)證和靜態(tài)秘鑰(tls-auth)、靜態(tài)秘鑰(tls-crypt)。靜態(tài)秘鑰認(rèn)證方式在路由版本為3.5.3版本及以上支持使用。
靜態(tài)秘鑰使用教程:
靜態(tài)秘鑰(tls-auth):靜態(tài)秘鑰(tls-auth)
靜態(tài)秘鑰(tls-crypt):靜態(tài)秘鑰(tls-crypt)
?
?
?
【隧道協(xié)議】:
?OpenVPN所有的通信都基于一個單一的IP端口,默認(rèn)且推薦使用UDP協(xié)議通訊,同時TCP也被支持;
?在選擇協(xié)議時候,需要注意2個加密隧道之間的網(wǎng)絡(luò)狀況,如有高延遲或者丟包較多的情況下,請選擇TCP協(xié)議作為底層協(xié)議
【隧道類型】:
?OpenVPN提供了兩種虛擬網(wǎng)絡(luò)接口:通用Tun/Tap驅(qū)動,通過它們,可以建立三層IP隧道,或者虛擬二層以太網(wǎng),后者可以傳送任何類型的二層以太網(wǎng)絡(luò)數(shù)據(jù)。
【加密算法】:
?在傳輸前,對數(shù)據(jù)進行加密,可以保證在傳輸過程中,即使數(shù)據(jù)包遭截取,信息也無法被讀。該特性在IPSec中為可選項,與IPSec策略的具體設(shè)置相關(guān)?
【LZO壓縮】:
?傳送的數(shù)據(jù)可通過LZO算法壓縮;壓縮節(jié)省帶寬,但是會占用一定的CPU資源
【MTU】:
?最大傳輸單元;建議填寫大小為:鏈路MTU-100;默認(rèn)1400。
【CA證書】:
?用于簽發(fā)服務(wù)器和客戶端證書的證書;
【服務(wù)器證書】/【服務(wù)器私鑰】:
?本地證書的兩部分,成對出現(xiàn);
注意事項:
?如果有想更改對應(yīng)證書和密鑰的,可以通過OPENVPNSSL生成;如果沒有或不懂怎么生成的,使用默認(rèn)的證書和密鑰即可!
【推送路由】:
?服務(wù)端告知客戶端,訪問哪些網(wǎng)段是需要走VPN撥號的線路;在3.7.16及以上版本支持對推送路由進行備注;
【附加配置】:
?專業(yè)用戶,如愛快的openvpn缺少部分配置,可由用戶自主填寫。
?參考o(jì)penvpn軟件幫助,自定義原始OpenVPN配置項。
?
Open VPN IPv6使用教程:Open VPN IPv6
?
?
?
2.舉例說明
網(wǎng)絡(luò)結(jié)構(gòu)如下:
?
OPENVPN連接后如服務(wù)端無法訪問客戶端需要嚴(yán)格按照一下順序設(shè)置:
1、開啟服務(wù)端,設(shè)置推送路由(推送本地內(nèi)網(wǎng)網(wǎng)段)
2、在服務(wù)端認(rèn)證賬號管理--賬號管理中,添加賬號并為賬號設(shè)置固定IP
3、在服務(wù)端設(shè)置靜態(tài)路由,目的地址填寫客戶端內(nèi)網(wǎng)網(wǎng)段,下一條網(wǎng)關(guān)填寫,在賬號管理中設(shè)置的固定IP
4、最后在客戶端填寫賬號密碼進行撥號,客戶端開啟服務(wù)器路由推送
?
需要實現(xiàn)客戶端網(wǎng)絡(luò)通過OPENVPN的方式撥號到服務(wù)端
同時實現(xiàn)客戶端和服務(wù)端內(nèi)網(wǎng)互訪
相關(guān)步驟必須嚴(yán)格按照下面的步驟進行。
①服務(wù)端配置:
服務(wù)端需設(shè)置推送路由將本段的內(nèi)網(wǎng)網(wǎng)段推送給客戶端,客戶端也需要接受推送路由即可實現(xiàn)客戶端訪問服務(wù)端內(nèi)網(wǎng)
?
②創(chuàng)建VPN賬號
在認(rèn)證計費--認(rèn)證賬號管理--賬號管理,里面添加VPN賬號密碼,必須提前設(shè)置固定IP,否則無法訪問
添加賬號時,設(shè)置固定IP為10.7.6.2
注意事項:
當(dāng)愛快與愛快之間創(chuàng)建open vpn服務(wù)時,VPN的賬號設(shè)置一定要是固定IP地址,并且設(shè)置的IP地址必須是默認(rèn)IP地址池范圍之內(nèi)的IP,如果填寫IP地址池范圍之外的IP,會導(dǎo)致?lián)懿簧先ヌ枴?/span>
?
?
③靜態(tài)路由設(shè)置
僅在服務(wù)端配置靜態(tài)路由即可,實現(xiàn)服務(wù)端可通過VPN線路訪問客戶端內(nèi)網(wǎng)
④客戶端配置
?
設(shè)置完成,客戶端和服務(wù)端內(nèi)網(wǎng)可以實現(xiàn)正?;ピL。
注意事項:
客戶端一定要開啟服務(wù)器路由推送才可訪問服務(wù)端推送的內(nèi)網(wǎng)網(wǎng)段
【添加路由】:
告知客戶端,哪些網(wǎng)段的地址需要走VPN線路。
?
注意事項:
?客戶端必須勾選允許服務(wù)端推送路由客戶端才可以訪問服務(wù)端的網(wǎng)段。
?服務(wù)端拓?fù)漕愋瓦x擇NET30時,服務(wù)端無法訪問客戶端內(nèi)網(wǎng)。
?
open VPN如何使用視頻教程:Open VPN使用教程
?
?
?
?
?
三、知識擴展
原理
OpenVpn的技術(shù)核心是虛擬網(wǎng)卡,其次是SSL協(xié)議實現(xiàn),由于SSL協(xié)議在其它的詞條中介紹的比較清楚了,這里重點對虛擬網(wǎng)卡及其在OpenVpn的中的工作機理進行介紹:
虛擬網(wǎng)卡是使用網(wǎng)絡(luò)底層編程技術(shù)實現(xiàn)的一個驅(qū)動軟件,安裝后在主機上多出現(xiàn)一個網(wǎng)卡,可以像其它網(wǎng)卡一樣進行配置。服務(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)的實現(xiàn),這也是OpenVpn能夠跨平臺一個很重要的理由。
在OpenVpn中,如果用戶訪問一個遠程的虛擬地址(屬于虛擬網(wǎng)卡配用的地址系列,區(qū)別于真實地址),則操作系統(tǒng)會通過路由機制將數(shù)據(jù)包(TUN模式)或數(shù)據(jù)幀(TAP模式)發(fā)送到虛擬網(wǎng)卡上,服務(wù)程序接收該數(shù)據(jù)并進行相應(yīng)的處理后,通過SOCKET從外網(wǎng)上發(fā)送出去,遠程服務(wù)程序通過SOCKET從外網(wǎng)上接收數(shù)據(jù),并進行相應(yīng)的處理后,發(fā)送給虛擬網(wǎng)卡,則應(yīng)用軟件可以接收到,完成了一個單向傳輸?shù)倪^程,反之亦然。
?
加密
OpenVPN使用OpenSSL庫加密數(shù)據(jù)與控制信息:它使用了OpenSSL的加密以及驗證功能,意味著,它能夠使用任何OpenSSL支持的算法。它提供了可選的數(shù)據(jù)包HMAC功能以提高連接的安全性。此外,OpenSSL的硬件加速也能提高它的性能。
?
驗證
OpenVPN提供了多種身份驗證方式,
用以確認(rèn)參與連接雙方的身份,包括:預(yù)享私鑰,第三方證書以及用戶名/密碼組合。預(yù)享密鑰最為簡單,但同時它只能用于建立點對點的VPN;基于PKI的第三方證書提供了最完善的功能,但是需要額外的精力去維護一個PKI證書體系。[1]??OpenVPN2.0后引入了用戶名/口令組合的身份驗證方式,它可以省略客戶端證書,但是仍有一份服務(wù)器證書需要被用作加密。
?
網(wǎng)絡(luò)
OpenVPN所有的通信都基于一個單一的IP端口,默認(rèn)且推薦使用UDP協(xié)議通訊,同時TCP也被支持。OpenVPN連接能通過大多數(shù)的代理服務(wù)器,并且能夠在NAT的環(huán)境中很好地工作。服務(wù)端具有向客戶端“推送”某些網(wǎng)絡(luò)配置信息的功能,這些信息包括:IP地址、路由設(shè)置等。OpenVPN提供了兩種虛擬網(wǎng)絡(luò)接口:通用Tun/Tap驅(qū)動,通過它們,可以建立三層IP隧道,或者虛擬二層以太網(wǎng),后者可以傳送任何類型的二層以太網(wǎng)絡(luò)數(shù)據(jù)。傳送的數(shù)據(jù)可通過LZO算法壓縮。IANA(Internet Assigned Numbers Authority)指定給OpenVPN的官方端口為1194。OpenVPN 2.0以后版本每個進程可以同時管理數(shù)個并發(fā)的隧道。
OpenVPN使用通用網(wǎng)絡(luò)協(xié)議(TCP與UDP)的特點使它成為IPsec等協(xié)議的理想替代,尤其是在ISP(Internet service provider)過濾某些特定VPN協(xié)議的情況下。
在選擇協(xié)議時候,需要注意2個加密隧道之間的網(wǎng)絡(luò)狀況,如有高延遲或者丟包較多的情況下,請選擇TCP協(xié)議作為底層協(xié)議,UDP協(xié)議由于存在無連接和重傳機制,導(dǎo)致要隧道上層的協(xié)議進行重傳,效率非常低下。
?
安全
OpenVPN與生俱來便具備了許多安全特性:它在用戶空間運行,無須對內(nèi)核及網(wǎng)絡(luò)協(xié)議棧作修改;初始完畢后以chroot方式運行,放棄root權(quán)限;使用mlockall以防止敏感數(shù)據(jù)交換到磁盤。OpenVPN通過PKCS#11支持硬件加密標(biāo)識,如智能卡。
?
對比
OpenSSH,能實現(xiàn)二/三層的基于隧道的VPN。stunnel,使用SSL向任何單一端口的TCP服務(wù)提供安全保護。
?
openvpn的這個拓?fù)漕愋瓦x項,subnet和net30有什么區(qū)別呀?
解釋:這個255.255.255.252子網(wǎng)掩碼模式(叫做net30模式)就是為了使TUN模式兼容iOS、Windows等設(shè)備而使用的,我們在OpenVPN支持的所有模式中做了取舍 -- net30是兼容性最好的。
下面列一下各種模式的兼容情況:
1. net30 -- 即255.255.255.252子網(wǎng)掩碼,兼容Linux(及愛快)、Windows、iOS、Android,缺點是無法以tun模式支持非Linux的固定IP;
2. p2p -- p2p接口類型,子網(wǎng)掩碼是255.255.255.255,對固定IP的支持不限網(wǎng)段,但只兼容Linux;
3. subnet -- 直接使用用戶配置的子網(wǎng)掩碼,也就是樓主配置的255.255.255.0,兼容Linux、Windows、支持固定IP,其他系統(tǒng)均不兼容。
總結(jié)來說,由于OpenVPN是個非標(biāo)準(zhǔn)的VPN協(xié)議,在各種系統(tǒng)上的實現(xiàn)方法也不盡相同,導(dǎo)致無法以同一個服務(wù)器配置來支持所有的系統(tǒng)+所有的場景。我們能做到默認(rèn)同一個服務(wù)器支持所有系統(tǒng),但不保證所有的系統(tǒng)都能使用固定IP。
?
注意事項:
??為了保證VPN的穩(wěn)定,在3.5.5版本及以上建議帶300個以內(nèi)的VPN客戶端,3.5.5版本以下建議帶200個以內(nèi)的VPN客戶端。
?
?
?
四、常見問題
?
1、愛快OPENVPN不支持TLS驗證,如對端有此驗證,請取消。
?
2、VPN客戶端和服務(wù)端內(nèi)網(wǎng)無法互訪排查方法
①當(dāng)前路由表里面是否已經(jīng)有打到對方網(wǎng)段的路由表,路由表內(nèi)的網(wǎng)段是否有沖突
②使用ping測試,ping對端lan口網(wǎng)關(guān)是否可以通,如果可以,但是ping不通下面的設(shè)備,檢查這個設(shè)備是否開啟了防火墻、是否有設(shè)置了網(wǎng)關(guān)并可正常上網(wǎng)
③使用tracert功能看路徑是否正確,在達到哪個網(wǎng)關(guān)的時候無法找尋到下一跳
?
3、OPENVPN連接后如服務(wù)端無法訪問客戶端需要嚴(yán)格按照一下順序設(shè)置:
1、先在賬號里面固定IP
2、在服務(wù)端設(shè)置靜態(tài)路由
3、最后進行撥號
?
4、客戶端數(shù)量超過官方推薦值如何設(shè)置:
可以在 OpenVPN服務(wù)端-附加配置選項填寫自定義參數(shù)如:max-clients 100 (數(shù)字100為客戶端的最大上限值)
注意:修改此參數(shù)后代表放棄對此功能的技術(shù)支持服務(wù)。

?
?