基于WireGuard的高性能虚拟专用网络架构设计与实现
2021-02-27刘希平李文王刚赵明明
◆刘希平 李文 王刚 赵明明
基于WireGuard的高性能虚拟专用网络架构设计与实现
◆刘希平 李文 王刚 赵明明
(昆仑银行股份有限公司西安分行 陕西 710018)
WireGuard是一种新的虚拟专用网络(Virtual Private Network)协议,相较于目前广泛使用的IPSec,WireGuard使用了更先进的加密算法和安全可信架构,在保证网络安全的前提下提供了强大的性能。本文将设计并实现一个基于WireGuard的跨平台多点接入的虚拟专用网络,并与传统的IPSec进行性能比较,阐明WireGuard的优势特点。
WireGuard;虚拟专用网络;VPN;跨平台;路由
虚拟专用网络(Virtual Private Network)是目前应用非常广泛的内部网络接入方式,不少企业和学校使用虚拟专用网络构建起跨越地理区域的内部网络,使各分支机构(或分校区)具有和公司总部(主校区)一致的网络体验。通常这种网络使用了传统的虚拟专用网协议(如:IPSec、OpenVPN等)进行构建,虽然行业内已经有了成熟的解决方案,但由于发布时间较早,相关漏洞的发现对传统虚拟专用网协议造成了较大的影响,特别是2014年OpenSSL heartbleed漏洞的曝出,严重威胁到不少企业的虚拟专网安全。随着相关技术不断发展,具有后发优势的WireGuard采用了更加科学合理的安全可信架构,并引入多种新的加密算法,逐渐成了构建虚拟专用网络更好的选择。
1 WireGuard的优势和特点
1.1 简单易用
WireGuard使用时仅需要简单配置并交换公钥即可,其余的工作将由WireGuard自动完成,终端用户不需要管理连接、关心状态、管理守护进程或担心隐藏的内容,大大降低了使用及维护门槛。
1.2 支持最新加密算法
WireGuard支持目前最先进的加密技术,如:Noise协议框架、Curve25519、ChaCha20、Poly1305、BLAKE2、SipHash24、HKDF等加密算法,同时还采用了安全可信架构来保证其整体的安全性。其实现方式已经被不少密码学专家所认可。
1.3 便于源代码安全审查
WireGuard设计简洁易于实现。仅用少量代码实现并进行开源,便于全世界的安全专家们进行安全漏洞审核。与*Swan/IPSec或OpenVPN/OpenSSL等实现方式相比,WireGuard有效降低源码审核工作量,甚至可以由单个个人进行全面审查。
1.4 加密及传输性能高
WireGuard构建的安全网络具有高速加密传输的特点。由于它简洁的代码和较高的执行效率,WireGuard在PC和小型嵌入式设备(如智能手机和路由器)均能获得不错的传输性能。
基于上述特点,WireGuard在行业内迅速得到认可,并且从Linux 内核版本5.6开始,WireGuard已作为内核模块加入其中,可以预见未来WireGuard将会迅速普及推广。
2 基于WireGuard的虚拟专用网络架构设计
对于有多个分支机构的公司或学校来说,使用运营商提供的数字电路(专线)来连接不同地理区域的内部网络虽然可行,但是数字电路(专线)不仅费用昂贵,还存在着施工周期长、灵活性差的缺点。所以这类需求一般都通过在Internet上建立虚拟专用网来解决。下面就以某个有多个分支机构的中型公司为例,详细阐述基于WireGuard的虚拟专用网络架构设计及实现过程。
2.1 网络架构整体设计
公司总部机房作为网络核心所在地,也将作为虚拟专用网络的接入中心,具体的设计方案如下:
(1)中心服务端。公司总部机房设置WireGuard接入网关,作为服务端接受各分支机构的连接请求,同时设置必要的网络安全设备(如防火墙等)。公司总部机房的Internet线路最好有固定的IP地址,确保与各分支机构虚拟专用网络稳定可靠连接;
(2)固定接入端。公司各分支机构机房设置WireGuard网关,作为客户端发起虚拟专用网络连接,同时设置必要的网络安全设备(如防火墙等),分支机构的Internet线路无须固定的公网IP地址,甚至使用普通的家庭宽带PPPOE或手机热点也可以连接。
(3)移动接入端。外出办公人员可使用笔记本电脑或PC的WireGuard客户端以终端方式直接接入虚拟专用网络。只需有稳定的互联网即可。支持在不同地理位置的漫游。
具体的网络拓扑结构见图1。
2.2 地址规划
(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地址规划表
2.3 路由设计
公司总部内部和各分支机构可使用RIP或OSPF等动态路由协议。在与WireGuard服务端及客户端互联的边界上,为了便于理解网络架构设计,本例使用静态路由实现边界路由器与WireGuard服务端及客户端的路由维护。主要静态路由条目设计见表2:
表2 静态路由条目规划表
2.4 指定WireGuard服务端口及端口映射
WireGuard使用UDP进行传输,连接前需要在WireGuard服务端指定UDP端口,具体设计如下:
(1)中心服务端。指定UDP的50888端口作为WireGuard服务监听端口,同时在出口NAT设备进行端口映射,在防火墙上放通入方向UDP的50888端口。确保在Internet上能够正常访问WireGuard服务;
(2)固定及移动接入端。若无特殊需求,固定及移动接入端无须进行其他操作,而NAT和动态获取IP地址均不会影响WireGuard客户端向服务端发起连接。
3 网络架构实现简述
基于WireGuard虚拟专用网的部署和配置较为简单,按照上述架构设计配置好WireGuard网关和相关网络设备后,WireGuard客户端即可自动发起连接。相关实现步骤如下:
3.1 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”命令激活虚拟专用网络客户端,并设置为开机自启动服务即可。移动接入端直接导入配置文件即可使用。
3.2 将WireGuard服务端及客户端接入网络
首先,按照图1拓扑进行网络连接,按照表1配置好IP地址,按照表2配置好相关设备的路由。确认服务端和客户端均能够正常访问Internet。
由于WireGuard服务端在公司网络内部,需要在配置出方向NAT的网络设备上将UDP 50888端口映射在分配给公司总部的公网地址上。
完成端口映射后,WireGuard客户端就可以正常连接到WireGuard服务端。
4 传输性能实验
为掌握基于WireGuard的虚拟专用网络相对传统IPSec的性能提升程度,这里搭建了实验环境对网络进行了传输性能测试。
4.1 实验环境
(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有线局域网。
4.2 实验方法
服务端分别配置好IPSec/L2TP和WireGuard两种服务端,从客户端分别连接至服务端,使用浏览器下载服务端Apache上的测试文件,记录传输时间后计算平均传输时间并进行比较。每组测试三次,同时测试直连传输数据作为对照参考。
4.3 实验结果
在传输同一文件(3,022,717,055Byte)情况下,IPSec/L2TP和WireGuard实际传输速率见表3,以Mbps为单位。
表3 传输性能对比表
表示在折线图中,如图2所示。
图2 传输性能对比
通过实验结果可以看出,WireGuard的实际传输性能几乎是传统IPSec/L2TP的3倍,平均速率能达到直连速率的82.70%,优势十分明显。且安全可信架构和新的加密算法带来的安全性提升也具有相当大的优势。
5 结语
本文研究了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.