0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

电子设计 来源:与非网 作者:Toradex胡珊逢 2021-02-01 14:04 次阅读

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、BSDiOSAndroid。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}"

pIYBAGAXl3SACEcBAAAm3SCoc8M715.png

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

o4YBAGAXl5GAX1y3AACPlWR5iFY178.png

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

pIYBAGAXl6uAebk4AAC-xCunCLU219.png

VPN服务器设置

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

pIYBAGAXl-CAC0-hAABHICMKSJA165.png

手机端设置

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

Apalis iMX8QM设置

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

o4YBAGAXl_SAcb-RAAByAROZcCw668.png

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

o4YBAGAXmA-AJUEMAABUs_bWW_U355.png

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

o4YBAGAXmDSABQo5AAA2wr9WVyU839.png

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

pIYBAGAXmFiAS5c3AAErIB4BZo4973.png

pIYBAGAXmGWAduXzAABWEowrHlI074.png

lWireGuard

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

pIYBAGAXmHaAVYDWAABJ-4VYZ2Y692.png

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

o4YBAGAXmISASyA9AAFz1RET6q4488.png

pIYBAGAXmJmAfSCpAABUyfxGPu4687.png

总结

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

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 服务器
    +关注

    关注

    12

    文章

    9148

    浏览量

    85393
  • TCP
    TCP
    +关注

    关注

    8

    文章

    1353

    浏览量

    79067
  • UDP
    UDP
    +关注

    关注

    0

    文章

    325

    浏览量

    33934
  • OpenSSL
    +关注

    关注

    0

    文章

    21

    浏览量

    8680
收藏 人收藏

    评论

    相关推荐

    Linux从零到精通:最简单的Shell脚本入门教程

    在数字化时代的浪潮中,Linux操作系统凭借其高效、稳定、开源的特性,成为了无数开发者和系统管理员的首选。 而在Linux的庞大生态系统中,Shell编程无疑是连接用户与系统内核的桥梁
    的头像 发表于 12-05 09:56 431次阅读
    <b class='flag-5'>Linux</b>从零到精通:最<b class='flag-5'>简单</b>的Shell脚本入门教程

    打破网络边界:P2Link助力实现高效远程访问与内网穿透

    、远程医疗、工业控制等领域,帮助用户打破网络边界,实现高效、便捷的远程管理和控制。 结语 P2Link作为一种高效的内网穿透解决方案,通过其强大的功能、
    发表于 10-31 11:54

    linux内核中通用HID触摸驱动

    linux内核中,为HID触摸面板实现了一个通用的驱动程序,位于/drivers/hid/hid-multitouch.c文件中。hid触摸驱动是以struct hid_driver实现
    的头像 发表于 10-29 10:55 589次阅读
    <b class='flag-5'>linux</b><b class='flag-5'>内核</b>中通用HID触摸驱动

    传统VPN与基于云的VPN

    传统VPN与基于云的VPN在异地组网中的应用分析。文章详细探讨了远程组网技术在不同场景下的优缺点
    的头像 发表于 10-18 17:48 304次阅读

    如何在DRA821U上使用Linux实现快速引导

    电子发烧友网站提供《如何在DRA821U上使用Linux实现快速引导.pdf》资料免费下载
    发表于 09-03 10:11 0次下载
    如何在DRA821U上使用<b class='flag-5'>Linux</b><b class='flag-5'>实现</b><b class='flag-5'>快速</b>引导

    linux驱动程序如何加载进内核

    Linux系统中,驱动程序是内核与硬件设备之间的桥梁。它们允许内核与硬件设备进行通信,从而实现对硬件设备的控制和管理。 驱动程序的编写 驱动程序的编写是
    的头像 发表于 08-30 15:02 462次阅读

    Linux内核测试技术

    内核测试技术是实现这一目标的关键手段。本文将详细介绍 Linux 内核测试的各种技术,包括单元测试、集成测试、功能测试和性能测试等,并讨论不同测试方法的优缺点及其适用场景。
    的头像 发表于 08-13 13:42 493次阅读
    <b class='flag-5'>Linux</b><b class='flag-5'>内核</b>测试技术

    Linux内核中的页面分配机制

    Linux内核中是如何分配出页面的,如果我们站在CPU的角度去看这个问题,CPU能分配出来的页面是以物理页面为单位的。也就是我们计算机中常讲的分页机制。本文就看下Linux内核是如何管
    的头像 发表于 08-07 15:51 290次阅读
    <b class='flag-5'>Linux</b><b class='flag-5'>内核</b>中的页面分配机制

    IPSecVPN + PPTP VPN Demo搭建配置说明

    219.232.192.xxx防火墙自动将数据转发到CiscoRV042; 3、 CiscoRV042 为VPN 路由器 ,WAN (Internet)接口为 192.168.100.36,LAN接口为172.16.0.0/24
    发表于 07-26 06:01

    IR615如何实现VPN链路备份?

    目的:IR615的链路备份(WAN为主链路、Wi-Fi做STA为从链路),当VPN建好后,WAN口主链路无线网络为备用链路。设备固件版本:2.3.0.r5114。拓扑: 1. 配置IR设备wan口
    发表于 07-25 08:27

    基于OpenVPN技术实现InRouter与SINEMA Remote Connect建立连接

    • TeleService 非常有助于节省维护工作的差旅和人员成本,提高设备和工厂的可用性 • TeleService 基于OpenVPN技术实现 InRouter 与SINEMA Remote Connect 建立连接
    发表于 07-25 07:52

    欢创播报 华为宣布鸿蒙内核已超越Linux内核

    1 华为宣布鸿蒙内核已超越Linux内核   6月21日,在华为开发者大会上, HarmonyOS NEXT(鸿蒙NEXT)——真正独立于安卓和iOS的鸿蒙操作系统,正式登场。这是HarmonyOS
    的头像 发表于 06-27 11:30 837次阅读

    内核实时操作系统的介绍

    内核实时操作系统(Microkernel Real-Time Operating System, μRTOS)是一种专为实时设计的操作系统。它采用微内核架构,以提高系统的可靠性、安全性和可扩展性。以下是关于微内核实时操作系统的
    的头像 发表于 05-11 17:13 499次阅读

    使用 PREEMPT_RT 在 Ubuntu 中构建实时 Linux 内核

    盟通技术干货构建实时Linux内核简介盟通技术干货Motrotech如果需要在Linux实现实时计算性能,进而有效地将Linux转变为RT
    的头像 发表于 04-12 08:36 2443次阅读
    使用 PREEMPT_RT 在 Ubuntu 中构建实时 <b class='flag-5'>Linux</b> <b class='flag-5'>内核</b>

    Linux内核中RCU的用法

    Linux内核中,RCU最常见的用途是替换读写锁。在20世纪90年代初期,Paul在实现通用RCU之前,实现了一种轻量级的读写锁。后来,为这个轻量级读写锁原型所设想的每个用途,最终都
    的头像 发表于 12-27 09:56 1765次阅读
    <b class='flag-5'>Linux</b><b class='flag-5'>内核</b>中RCU的用法