原创 嵌入式 Linux 系统 VPN 应用

2021-1-29 16:54 3113 31 6 分类: MCU/ 嵌入式

By Toradex胡珊逢

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


OpenVPN 一种使用较为广泛的 VPN,其基于 OpenSSL 提供多种加密方案,采用 TCP 或者 UDP 作为传输层协议,具有非常高的灵活性。WireGuard 是一种更加高效、快速、简单的 VPN 方案,最初直接基于 Linux 内核实现,支持最新的加密算法如Curve25519、ChaCha20、Poly1305、BLAKE2 等,传输层采用 UDP 协议。自 Linux 5.6 开始,WireGuard 已经集成到内核中,目前拥有非常活跃的开发群体,支持 Windows、macOS、BSD、iOS、Android。Toradex 针对其模块发布的 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 可以将不同网络的设备进行组网实现互联,方便远程管理。但同时也需要注意服务器的安全防护,通过该服务器可以获取到连接设备信息,包括登录验证信息。


作者: hai.qin_651820742, 来源:面包板社区

链接: https://mbb.eet-china.com/blog/uid-me-1864768.html

版权声明:本文为博主原创,未经本人允许,禁止转载!

文章评论2条评论)

登录后参与讨论

curton 2021-2-8 12:11

学习了

火引冰薪 2021-1-29 22:31

OpenVPN 一种使用较为广泛的 VPN,真的很不错。
相关推荐阅读
hai.qin_651820742 2024-11-29 15:29
基于 NXP iMX8QM 运行 QNX
By Toradex胡珊逢简介嵌入式领域的部分应用对安全、可靠、实时性有切实的需求,在诸多实现该需求的方案中,QNX 是经行业验证的选择。在 QNX SDP 8.0 上 BlackBerry 推出了 ...
hai.qin_651820742 2024-11-12 10:33
Yocto Linux BSP7 新版本介绍
By Toradex胡珊逢简介Toradex 已经发布了适用于 Verdin/Apalis/Colibri 模块系列的 Linux BSP 7 版本,Yocto Project 升级到 scarthg...
hai.qin_651820742 2024-10-30 10:56
基于 NXP iMX8MP 平台简单测试 PySide6 应用
By Toradex秦海1). 简介Python binding 的 Qt GUI 库一直以来有两种,最初是由 Riverbank Computing 公司在 2000 年初发布,基于 Qt4 版本推...
hai.qin_651820742 2024-10-11 15:15
Verdin AM62使用CODESYS
By Toradex胡珊逢简介CODESYS 是基于 IEC 61131-3 的 PLC 开发工具,在工业控制、交通等领域中有着广泛的应用。文章将介绍如何在 Toradex 采用 TI AM62 So...
hai.qin_651820742 2024-09-18 18:07
Verdin AM62 引脚复用配置
By Toradex胡珊逢简介Verdin AM62 是 Toradex 基于 TI AM623/AM625 SoC 的 Arm 计算机模块。它最多提供 4 个 A53 和 1 个 M4F 处理器。这...
hai.qin_651820742 2024-09-18 17:48
TI AM62X Secure Boot 流程简述
By Toradex秦海1). 简介嵌入式设备对于网络安全的要求越来越高,而 Secure boot就是其中重要的一部分。 TI AM62X 处理器基于行业标准 X.509&nbs...
我要评论
2
31
关闭 站长推荐上一条 /2 下一条