联网需求在各种嵌入式应用中正开始变得越来越普遍,随之而来就是数据传输的安全挑战。VPN是应对该挑战的有效措施。除此之外,VPN还能够穿透防火墙或者NAT实现异地组网,从而提供远程访问设备的功能。文章接下来在运行Linux系统的ApalisiMX8QM上演示如何使用OpenVPN和WireGuard两种VPN方案。
OpenVPN一种使用较为广泛的VPN,其基于OpenSSL提供多种加密方案,采用TCP或者UDP作为传输层协议,具有非常高的灵活性。WireGuard是一种更加高效、快速、简单的VPN方案,最初直接基于Linux内核实现,支持最新的加密算法如Curve、ChaCha20、Poly、BLAKE2等,传输层采用UDP协议。自Linux5.6开始,WireGuard已经集成到内核中,目前拥有非常活跃的开发群体,支持Windows、macOS、BSD、iOS、Android。Toradex针对其模块发布的BSP采用Yocto构建,OpenVPN和WireGuard在Yocto中可以很方便得添加进来。
首先在local.conf配置文件添加一下内容,apache网站服务器用于后面的远程连接演示。
IMAGE_INSTALL_append="apache2openvpnwireguard-modulewireguard-tools"
修改layers/meta-openembedded/meta-networking/recipes-kernel/wireguard/wireguard-module_1.0..bb,注释掉PKG_{PN}="kernel-module-{MODULE_NAME}"
#KernelmodulepackagesMUSTbeginwithkernel-module-,otherwise#multilibimagegenerationcanfail.##Thefollowinglineisonlynecessaryiftherecipenamedoesnotbegin#withkernel-module-.#PKG_{PN}="kernel-module-{MODULE_NAME}"
WireGuard基于Linux内核实现,为了保证其代码的精简,其复用了内核中很多的网络功能,因此需要修改默认的内核配置。如果使用OpenVPN,则可以跳过该步骤,直接编译BSP。
MACHINE=apalis-imx8bitbake-cmenuconfigvirtual/kernel
Networkingsupport→Networkingoptions[*]IP:advancedrouter[*]FIBTRIEstatistics[*]IP:policyrouting[*]IP:equalcostmultipath[*]IP:verboseroutemonitoring
Networkingsupport→Networkingoptions→Networkpacketfilteringframework(Netfilter)→IP:NetfilterConfigurationMrawtablesupport(requiredforNOTRACK/TRACE)
Networkingsupport→Networkingoptions→Networkpacketfilteringframework(Netfilter)→CoreNetfilterConfigurationM"CONNMARK"targetsupportM"MARK"targetsupport
***Xtablesmatches***M"
最近更新
推荐文章