嵌入式 Linux 系统 VPN 应用

供稿:韬睿(上海)计算机科技有限公司

  • 关键词:iMX8,Linux,VPN
  • 作者:By Toradex胡珊逢
  • 摘要:联网需求在各种嵌入式应用中正开始变得越来越普遍,随之而来就是数据传输的安全挑战。VPN是应对该挑战的有效措施。除此之外,VPN 还能够穿透防火墙或者 NAT 实现异地组网,从而提供远程访问设备的功能。文章接下来在运行 Linux 系统的 Apalis iMX8QM 上演示如何使用 OpenVPN 和 WireGuard 两种 VPN 方案。


联网需求在各种嵌入式应用中正开始变得越来越普遍,随之而来就是数据传输的安全挑战。VPN是应对该挑战的有效措施。除此之外,VPN 还能够穿透防火墙或者 NAT 实现异地组网,从而提供远程访问设备的功能。文章接下来在运行 Linux 系统的 Apalis iMX8QM 上演示如何使用 OpenVPN  WireGuard 两种 VPN 方案。

 

OpenVPN 一种使用较为广泛的 VPN,其基于 OpenSSL 提供多种加密方案,采用 TCP 或者 UDP 作为传输层协议,具有非常高的灵活性。WireGuard 是一种更加高效、快速、简单的 VPN 方案,最初直接基于 Linux 内核实现,支持最新的加密算法如Curve25519ChaCha20Poly1305BLAKE2 等,传输层采用 UDP 协议。自 Linux 5.6 开始,WireGuard 已经集成到内核中,目前拥有非常活跃的开发群体,支持 WindowsmacOSBSDiOSAndroidToradex 针对其模块发布的 BSP 采用 Yocto 构建OpenVPN  WireGuard  Yocto 中可以很方便得添加进来。

 

首先在 local.conf 配置文件添加一下内容,apache 网站服务器用于后面的远程连接演示。

IMAGE_INSTALL_append = " apache2 openvpn wireguard-module wireguard-tools"

 

修改 layers/meta-openembedded/meta-networking/recipes-kernel/wireguard/wireguard-module_1.0.20200401.bb,注释掉 PKG_${PN} = "kernel-module-${MODULE_NAME}"

image001.png

 

WireGuard 基于 Linux 内核实现,为了保证其代码的精简,其复用了内核中很多的网络功能,因此需要修改默认的内核配置。如果使用 OpenVPN ,则可以跳过该步骤,直接编译 BSP

image002.png

 

Networking support → Networking options

image003.png

 

Networking support → Networking options → Network packet filtering framework (Netfilter) → IP: Netfilter Configuration

image004.png

Networking support → Networking options → Network packet filtering framework (Netfilter) → Core Netfilter Configuration

image005.png

 

完成配置后编译 BSP

image006.png

 

在开始配置之前,我们先介绍下测试所使用的网络拓扑。如下图所示,首先需要一台具有公网 IP 的服务器作为 VPN 服务器。 Apalis iMX8QM 通过以太网连接电信运营商提供的光猫。目前光猫通常只能获取的经过电信运营商 NAT 转换后的内网 IPv4 地址。用于测试的手机则通过基站接入公网。

image007.png

 

VPN 服务器设置

OpenVPN  WireGuard 官网均提供了详细的服务器配置说明。这里我们使用另外一个工具 PiVPN 来设置服务器。PiVPN 最初是为树莓派提供简单的服务器管理工具,但同样可以用于任何基于 Debian 发行版本,如 Ubuntu。运行下面命令即可安装。

image009.pngcurl -L

 

运行pivpn 分别为 Apalis iMX8 和手机添加 OpenVPN  WireGuard 账户。

image010.png

 

修改服务器网络配置

image011.png

 

 

手机端设置

在手机上安装 OpenVPN  WireGuard 客户端,然后导入上面 PiVPN 生成的 ovpn 或者 conf 文件,亦或通过扫二维码。PiVPN 均提供十分易于使用的功能。

 

Apalis iMX8QM 设置

使用 system-networkd 作为网络管理器

image012.png

 

将网络设置动态获取 IP 方式。

image013.png

 

修改 Apache 网页服务器默认显示内容。其他客户端可以用 HTTP 访问该网页。

image014.png

 

l  OpenVPN

开启 OpenVPN 连接

image015.png

 

成功运行后会看到如下信息:

image016.png

 

使用 ifconfig 命令可以看到如下 tun0 接口。分配的IP  10.8.0.5。在其他连接到该 VPN 的客户端上可以使用该 IP 来访问 Apalis iMX8QM

image017.png

 

 

在手机上连接  OpenVPN ,分配到的 IP  10.8.0.3。通过手机上的浏览器访问 Apalis iMX8QM 上的网页 http://10.8.0.5

image018.jpgimage020.jpg

 

l  WireGuard

 PiVPN 生成的配置文件 apalis-imx8.conf 复制到 /etc/wireguard/wg0.conf,然后运行

image022.png

 

使用 ifconfig 可以看到 wg0 接口,此时分配到的 IP  10.6.0.5

image023.png

 

在手机上启动 WireGuard 应用,访问 Apalis iMX8QM 上的网页 http://10.6.0.5

image024.jpgimage026.jpg

 

 

总结

VPN 可以将不同网络的设备进行组网实现互联,方便远程管理。但同时也需要注意服务器的安全防护,通过该服务器可以获取到连接设备信息,包括登录验证信息。



发布时间:2021年1月29日 16:34  人气:   审核编辑(王静 )
相关链接

我有需求