◆劉希平 李文 王剛 趙明明
基于WireGuard的高性能虛擬專用網(wǎng)絡(luò)架構(gòu)設(shè)計與實現(xiàn)
◆劉希平 李文 王剛 趙明明
(昆侖銀行股份有限公司西安分行 陜西 710018)
WireGuard是一種新的虛擬專用網(wǎng)絡(luò)(Virtual Private Network)協(xié)議,相較于目前廣泛使用的IPSec,WireGuard使用了更先進的加密算法和安全可信架構(gòu),在保證網(wǎng)絡(luò)安全的前提下提供了強大的性能。本文將設(shè)計并實現(xiàn)一個基于WireGuard的跨平臺多點接入的虛擬專用網(wǎng)絡(luò),并與傳統(tǒng)的IPSec進行性能比較,闡明WireGuard的優(yōu)勢特點。
WireGuard;虛擬專用網(wǎng)絡(luò);VPN;跨平臺;路由
虛擬專用網(wǎng)絡(luò)(Virtual Private Network)是目前應(yīng)用非常廣泛的內(nèi)部網(wǎng)絡(luò)接入方式,不少企業(yè)和學校使用虛擬專用網(wǎng)絡(luò)構(gòu)建起跨越地理區(qū)域的內(nèi)部網(wǎng)絡(luò),使各分支機構(gòu)(或分校區(qū))具有和公司總部(主校區(qū))一致的網(wǎng)絡(luò)體驗。通常這種網(wǎng)絡(luò)使用了傳統(tǒng)的虛擬專用網(wǎng)協(xié)議(如:IPSec、OpenVPN等)進行構(gòu)建,雖然行業(yè)內(nèi)已經(jīng)有了成熟的解決方案,但由于發(fā)布時間較早,相關(guān)漏洞的發(fā)現(xiàn)對傳統(tǒng)虛擬專用網(wǎng)協(xié)議造成了較大的影響,特別是2014年OpenSSL heartbleed漏洞的曝出,嚴重威脅到不少企業(yè)的虛擬專網(wǎng)安全。隨著相關(guān)技術(shù)不斷發(fā)展,具有后發(fā)優(yōu)勢的WireGuard采用了更加科學合理的安全可信架構(gòu),并引入多種新的加密算法,逐漸成了構(gòu)建虛擬專用網(wǎng)絡(luò)更好的選擇。
WireGuard使用時僅需要簡單配置并交換公鑰即可,其余的工作將由WireGuard自動完成,終端用戶不需要管理連接、關(guān)心狀態(tài)、管理守護進程或擔心隱藏的內(nèi)容,大大降低了使用及維護門檻。
WireGuard支持目前最先進的加密技術(shù),如:Noise協(xié)議框架、Curve25519、ChaCha20、Poly1305、BLAKE2、SipHash24、HKDF等加密算法,同時還采用了安全可信架構(gòu)來保證其整體的安全性。其實現(xiàn)方式已經(jīng)被不少密碼學專家所認可。
WireGuard設(shè)計簡潔易于實現(xiàn)。僅用少量代碼實現(xiàn)并進行開源,便于全世界的安全專家們進行安全漏洞審核。與*Swan/IPSec或OpenVPN/OpenSSL等實現(xiàn)方式相比,WireGuard有效降低源碼審核工作量,甚至可以由單個個人進行全面審查。
WireGuard構(gòu)建的安全網(wǎng)絡(luò)具有高速加密傳輸?shù)奶攸c。由于它簡潔的代碼和較高的執(zhí)行效率,WireGuard在PC和小型嵌入式設(shè)備(如智能手機和路由器)均能獲得不錯的傳輸性能。
基于上述特點,WireGuard在行業(yè)內(nèi)迅速得到認可,并且從Linux 內(nèi)核版本5.6開始,WireGuard已作為內(nèi)核模塊加入其中,可以預(yù)見未來WireGuard將會迅速普及推廣。
對于有多個分支機構(gòu)的公司或?qū)W校來說,使用運營商提供的數(shù)字電路(專線)來連接不同地理區(qū)域的內(nèi)部網(wǎng)絡(luò)雖然可行,但是數(shù)字電路(專線)不僅費用昂貴,還存在著施工周期長、靈活性差的缺點。所以這類需求一般都通過在Internet上建立虛擬專用網(wǎng)來解決。下面就以某個有多個分支機構(gòu)的中型公司為例,詳細闡述基于WireGuard的虛擬專用網(wǎng)絡(luò)架構(gòu)設(shè)計及實現(xiàn)過程。
公司總部機房作為網(wǎng)絡(luò)核心所在地,也將作為虛擬專用網(wǎng)絡(luò)的接入中心,具體的設(shè)計方案如下:
(1)中心服務(wù)端。公司總部機房設(shè)置WireGuard接入網(wǎng)關(guān),作為服務(wù)端接受各分支機構(gòu)的連接請求,同時設(shè)置必要的網(wǎng)絡(luò)安全設(shè)備(如防火墻等)。公司總部機房的Internet線路最好有固定的IP地址,確保與各分支機構(gòu)虛擬專用網(wǎng)絡(luò)穩(wěn)定可靠連接;
(2)固定接入端。公司各分支機構(gòu)機房設(shè)置WireGuard網(wǎng)關(guān),作為客戶端發(fā)起虛擬專用網(wǎng)絡(luò)連接,同時設(shè)置必要的網(wǎng)絡(luò)安全設(shè)備(如防火墻等),分支機構(gòu)的Internet線路無須固定的公網(wǎng)IP地址,甚至使用普通的家庭寬帶PPPOE或手機熱點也可以連接。
(3)移動接入端。外出辦公人員可使用筆記本電腦或PC的WireGuard客戶端以終端方式直接接入虛擬專用網(wǎng)絡(luò)。只需有穩(wěn)定的互聯(lián)網(wǎng)即可。支持在不同地理位置的漫游。
具體的網(wǎng)絡(luò)拓撲結(jié)構(gòu)見圖1。
(1)中心服務(wù)端。公司內(nèi)部使用A類私有地址10.0.0.0/8,為WireGuard服務(wù)端及客戶端劃分出一個專用地址段10.6.0.0/24。WireGuard服務(wù)端地址為10.6.0.1。
(2)固定接入端。按照公司統(tǒng)一地址規(guī)劃,每個分支機構(gòu)內(nèi)部IP地址段為10.33.x.0/24,其中再劃分出若干30位掩碼地址作為網(wǎng)絡(luò)設(shè)備互聯(lián)地址使用。
(3)移動接入端。移動接入端以終端方式直接接入網(wǎng)絡(luò),WireGuard客戶端的10.6.0.x即為終端地址,接入后立即可用。

圖1 WireGuard的虛擬專用網(wǎng)絡(luò)拓撲圖
具體地址分配見表1:

表1 IP地址規(guī)劃表
公司總部內(nèi)部和各分支機構(gòu)可使用RIP或OSPF等動態(tài)路由協(xié)議。在與WireGuard服務(wù)端及客戶端互聯(lián)的邊界上,為了便于理解網(wǎng)絡(luò)架構(gòu)設(shè)計,本例使用靜態(tài)路由實現(xiàn)邊界路由器與WireGuard服務(wù)端及客戶端的路由維護。主要靜態(tài)路由條目設(shè)計見表2:

表2 靜態(tài)路由條目規(guī)劃表
WireGuard使用UDP進行傳輸,連接前需要在WireGuard服務(wù)端指定UDP端口,具體設(shè)計如下:
(1)中心服務(wù)端。指定UDP的50888端口作為WireGuard服務(wù)監(jiān)聽端口,同時在出口NAT設(shè)備進行端口映射,在防火墻上放通入方向UDP的50888端口。確保在Internet上能夠正常訪問WireGuard服務(wù);
(2)固定及移動接入端。若無特殊需求,固定及移動接入端無須進行其他操作,而NAT和動態(tài)獲取IP地址均不會影響WireGuard客戶端向服務(wù)端發(fā)起連接。
基于WireGuard虛擬專用網(wǎng)的部署和配置較為簡單,按照上述架構(gòu)設(shè)計配置好WireGuard網(wǎng)關(guān)和相關(guān)網(wǎng)絡(luò)設(shè)備后,WireGuard客戶端即可自動發(fā)起連接。相關(guān)實現(xiàn)步驟如下:
目前對WireGuard支持最好的是Linux平臺,下面將以Linux發(fā)行版Ubuntu為例進行配置。
(1)生成密鑰對
在所有配置進行之前,首先需要在所有WireGuard服務(wù)端上生成公鑰和私鑰,每個客戶端與服務(wù)端將公鑰進行互相交換,便于下步生成配置文件。生成密鑰對使用命令“wg genkey > private.key”,查看公鑰使用命令“wg pubkey < private.key”。其次需要打開Linux系統(tǒng)的IPV4路由轉(zhuǎn)發(fā)功能。
(2)配置WireGuard服務(wù)端
首先在/etc/WireGuard/下創(chuàng)建wg0.conf文件,內(nèi)容如下:
其中每一個都代表一個客戶端的信息,可配置多個客戶端信息。
服務(wù)端配置完成后使用“wg-quick up wg0”命令激活虛擬專用網(wǎng)絡(luò)服務(wù)端,并設(shè)置為開機自啟動服務(wù)即可。
(3)配置WireGuard客戶端
WireGuard客戶端配置以分支機構(gòu)A為例。首先在/etc/WireGuard/下創(chuàng)建wg0.conf文件,內(nèi)容如下:
其余分支機構(gòu)客戶端以此類推進行配置,客戶端配置完成后使用“wg-quick up wg0”命令激活虛擬專用網(wǎng)絡(luò)客戶端,并設(shè)置為開機自啟動服務(wù)即可。移動接入端直接導入配置文件即可使用。
首先,按照圖1拓撲進行網(wǎng)絡(luò)連接,按照表1配置好IP地址,按照表2配置好相關(guān)設(shè)備的路由。確認服務(wù)端和客戶端均能夠正常訪問Internet。
由于WireGuard服務(wù)端在公司網(wǎng)絡(luò)內(nèi)部,需要在配置出方向NAT的網(wǎng)絡(luò)設(shè)備上將UDP 50888端口映射在分配給公司總部的公網(wǎng)地址上。
完成端口映射后,WireGuard客戶端就可以正常連接到WireGuard服務(wù)端。
為掌握基于WireGuard的虛擬專用網(wǎng)絡(luò)相對傳統(tǒng)IPSec的性能提升程度,這里搭建了實驗環(huán)境對網(wǎng)絡(luò)進行了傳輸性能測試。
(1)服務(wù)端環(huán)境
硬件:intel Core i5-6200U 2.4GHz、8G內(nèi)存
軟件:Ubuntu18.04、Stronswan、xl2tpd、WireGuard服務(wù)端、Apache
(2)客戶端環(huán)境
硬件:intel Core i5-8500 3GHz、16G內(nèi)存;
軟件:Windows10、系統(tǒng)自帶IPSec/L2TP客戶端、WireGuard客戶端、Edge瀏覽器(Chromium內(nèi)核)。
(3)網(wǎng)絡(luò)環(huán)境
使用RJ45接口的1Gbps有線局域網(wǎng)。
服務(wù)端分別配置好IPSec/L2TP和WireGuard兩種服務(wù)端,從客戶端分別連接至服務(wù)端,使用瀏覽器下載服務(wù)端Apache上的測試文件,記錄傳輸時間后計算平均傳輸時間并進行比較。每組測試三次,同時測試直連傳輸數(shù)據(jù)作為對照參考。
在傳輸同一文件(3,022,717,055Byte)情況下,IPSec/L2TP和WireGuard實際傳輸速率見表3,以Mbps為單位。

表3 傳輸性能對比表
表示在折線圖中,如圖2所示。

圖2 傳輸性能對比
通過實驗結(jié)果可以看出,WireGuard的實際傳輸性能幾乎是傳統(tǒng)IPSec/L2TP的3倍,平均速率能達到直連速率的82.70%,優(yōu)勢十分明顯。且安全可信架構(gòu)和新的加密算法帶來的安全性提升也具有相當大的優(yōu)勢。
本文研究了WireGuard用于建立虛擬專用網(wǎng)絡(luò)的途徑和方法,以一般企業(yè)為例闡述了基于WireGuard的虛擬專用網(wǎng)絡(luò)的設(shè)計和實現(xiàn)步驟,并對WireGuard和IPSec/L2TP進行了對比,結(jié)果表明WireGuard的傳輸速率提升明顯。值得在實際網(wǎng)絡(luò)項目中大力推廣使用。
[1]倪潔,徐志偉,李鴻志.PPTP VPN與L2TP/IPSec VPN的實現(xiàn)與安全測試[J].電子技術(shù)與軟件工程,2019(12):192.
[2]劉洋.計算機網(wǎng)絡(luò)信息安全中虛擬專用網(wǎng)絡(luò)技術(shù)應(yīng)用[J].信息記錄材料,2019(12):245.
[3]申玲鈺,朱振乾. 防火墻與IPsec協(xié)同實現(xiàn)L3/L2一體化VPN [J].通信技術(shù),2020(9):2334.
[4]朱昌盛,余冬梅,王慶榮,謝鵬壽,包仲賢.IPSec與L2TP結(jié)合構(gòu)筑的虛擬專用網(wǎng)絡(luò)[J].計算機工程,2002(11).
[5]王笛,陳福玉. 基于IPsec VPN技術(shù)的應(yīng)用與研究[J].電腦知識與技術(shù),2020(11):17.