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