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

圖1 WireGuard的虛擬專用網絡拓撲圖
具體地址分配見表1:

表1 IP地址規劃表
公司總部內部和各分支機構可使用RIP或OSPF等動態路由協議。在與WireGuard服務端及客戶端互聯的邊界上,為了便于理解網絡架構設計,本例使用靜態路由實現邊界路由器與WireGuard服務端及客戶端的路由維護。主要靜態路由條目設計見表2:

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

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

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