0 卖盘信息
BOM询价
您现在的位置: 首页 > 技术方案 >工业控制 > 基于Linux内核实现高效、快速、简单的VPN方案

基于Linux内核实现高效、快速、简单的VPN方案

来源: elecfans
2021-02-25
类别:工业控制
eye 14
文章创建人 拍明

原标题:基于Linux内核实现高效、快速、简单的VPN方案

  ByToradex胡珊逢

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

  OpenVPN一种使用较为广泛的VPN,其基于OpenSSL提供多种加密方案,采用TCP或者UDP作为传输层协议,具有非常高的灵活性。WireGuard是一种更加高效、快速、简单的VPN方案,最初直接基于Linux内核实现,支持最新的加密算法如Curve25519、ChaCha20、Poly1305、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.20200401.bb,注释掉PKG_${PN}="kernel-module-${MODULE_NAME}"

  

pIYBAGAXl3SACEcBAAAm3SCoc8M715.png


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

  

o4YBAGAXl5GAX1y3AACPlWR5iFY178.png


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

  

pIYBAGAXl6uAebk4AAC-xCunCLU219.png


  VPN服务器设置

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

  

pIYBAGAXl-CAC0-hAABHICMKSJA165.png


  手机端设置

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

  ApalisiMX8QM设置

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

  

o4YBAGAXl_SAcb-RAAByAROZcCw668.png


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

  

o4YBAGAXmA-AJUEMAABUs_bWW_U355.png


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

  

o4YBAGAXmDSABQo5AAA2wr9WVyU839.png


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

  

pIYBAGAXmFiAS5c3AAErIB4BZo4973.png


  

pIYBAGAXmGWAduXzAABWEowrHlI074.png


  lWireGuard

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

  

pIYBAGAXmHaAVYDWAABJ-4VYZ2Y692.png


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

  

o4YBAGAXmISASyA9AAFz1RET6q4488.png

  

pIYBAGAXmJmAfSCpAABUyfxGPu4687.png


  总结

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


责任编辑:David

【免责声明】

1、本文内容、数据、图表等来源于网络引用或其他公开资料,版权归属原作者、原发表出处。若版权所有方对本文的引用持有异议,请联系拍明芯城(marketing@iczoom.com),本方将及时处理。

2、本文的引用仅供读者交流学习使用,不涉及商业目的。

3、本文内容仅代表作者观点,拍明芯城不对内容的准确性、可靠性或完整性提供明示或暗示的保证。读者阅读本文后做出的决定或行为,是基于自主意愿和独立判断做出的,请读者明确相关结果。

4、如需转载本方拥有版权的文章,请联系拍明芯城(marketing@iczoom.com)注明“转载原因”。未经允许私自转载拍明芯城将保留追究其法律责任的权利。

拍明芯城拥有对此声明的最终解释权。

标签: Linux VPN

相关资讯

方案推荐
基于MC33771主控芯片的新能源锂电池管理系统解决方案

基于MC33771主控芯片的新能源锂电池管理系统解决方案

AMIC110 32位Sitara ARM MCU开发方案

AMIC110 32位Sitara ARM MCU开发方案

基于AMIC110多协议可编程工业通信处理器的32位Sitara ARM MCU开发方案

基于AMIC110多协议可编程工业通信处理器的32位Sitara ARM MCU开发方案

基于展讯SC9820超低成本LTE芯片平台的儿童智能手表解决方案

基于展讯SC9820超低成本LTE芯片平台的儿童智能手表解决方案

基于TI公司的AM437x双照相机参考设计

基于TI公司的AM437x双照相机参考设计

基于MTK6580芯片的W2智能手表解决方案

基于MTK6580芯片的W2智能手表解决方案