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

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

    关注

    13

    文章

    10093

    浏览量

    90856
  • TCP
    TCP
    +关注

    关注

    8

    文章

    1417

    浏览量

    83000
  • UDP
    UDP
    +关注

    关注

    0

    文章

    331

    浏览量

    35202
  • OpenSSL
    +关注

    关注

    0

    文章

    21

    浏览量

    9214
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Linux-RT特点及简单应用

    Linux-RT是指Linux Real-Time(实时)的简称,它是针对实时性能优化的Linux内核版本。传统的Linux
    发表于 12-05 07:37

    基于 DR1M90 的 Linux-RT 内核开发:从编译配置到 GPIO / 按键应用实现(1)

    本手册由创龙科技研发,针对 DR1M90,详述 Linux-RT 实时内核开发:含实时性测试(LinuxLinux-RT 对比、CPU 空载 / 满负荷 / 隔离状态测试)、
    的头像 发表于 12-02 10:38 147次阅读
    基于 DR1M90 的 <b class='flag-5'>Linux</b>-RT <b class='flag-5'>内核</b>开发:从编译配置到 GPIO / 按键应用<b class='flag-5'>实现</b>(1)

    Linux内核printk日志级别全解析:从参数解读到实操配置

    一、开篇:一个命令引出的核心问题 在 Linux 终端执行 cat /proc/sys/kernel/printk,你可能会看到这样的输出: 这串数字不是随机的,而是内核日志系统的“核心配置开关
    的头像 发表于 11-20 15:54 1233次阅读
    <b class='flag-5'>Linux</b><b class='flag-5'>内核</b>printk日志级别全解析:从参数解读到实操配置

    fpga嵌入e203内核搭建soc如何实现通信功能?

    在fpga嵌入e203内核实现以太网,开发板有PHY芯片LAN8720A,怎么搭建soc,如何使用总线,实现通信功能?
    发表于 11-10 06:54

    传统 VPN 已过时?Splashtop 如何重塑安全远程连接

    随着远程办公和跨地域协作日益普及,企业对安全、高效远程访问解决方案的需求持续攀升。传统VPN技术虽然在历史上承担了重要角色,但其在设计理念、安全机制与性能表现上的局限逐渐凸显,已难以满足现代企业
    的头像 发表于 10-13 17:19 983次阅读
    传统 <b class='flag-5'>VPN</b> 已过时?Splashtop 如何重塑安全远程连接

    请问公司办公网没有公网IP如何实现VPN组网?

    公司办公网没有公网IP如何实现VPN组网?
    发表于 08-07 07:27

    Linux内核参数调优方案

    在高并发微服务环境中,网络性能往往成为K8s集群的瓶颈。本文将深入探讨如何通过精细化的Linux内核参数调优,让你的K8s节点网络性能提升30%以上。
    的头像 发表于 08-06 17:50 703次阅读

    如何配置和验证Linux内核参数

    Linux系统运维和性能优化中,内核参数(sysctl)的配置至关重要。合理的参数调整可以显著提升网络性能、系统稳定性及资源利用率。然而,仅仅修改参数是不够的,如何验证这些参数是否生效同样关键。
    的头像 发表于 05-29 17:40 783次阅读

    树莓派4 性能大比拼:标准Linux与实时Linux 4.19内核的延迟测试

    引言本文是对我之前关于RaspberryPi3同一主题的帖子的更新。与之前的帖子一样,我使用的是随Raspbian镜像提供的标准内核,以及应用了RT补丁的相似内核版本。对于实时版,我
    的头像 发表于 03-25 09:39 646次阅读
    树莓派4 性能大比拼:标准<b class='flag-5'>Linux</b>与实时<b class='flag-5'>Linux</b> 4.19<b class='flag-5'>内核</b>的延迟测试

    MPLS 与 VPN 的区别

    是对这两者的比较: 一、技术基础与实现方式 MPLS : 技术类型 :MPLS是一种基于标签的路由协议,它通过在IP数据包头部添加额外的标签信息,实现快速高效的路由转发。 OSI层
    的头像 发表于 02-14 17:04 2006次阅读

    基于OpenSBI的linux nommu实现

    Linux内核6.10提供了对没有mmu的riscv处理器工作在S模式下的内核的支持,本文介绍基于OpenSBI的linuxnommu的实现,供大家参考。1、OpenSBI介绍SBI
    的头像 发表于 02-08 13:43 1048次阅读
    基于OpenSBI的<b class='flag-5'>linux</b> nommu<b class='flag-5'>实现</b>

    哇!5.2秒进入应用界面!Linux快速启动方案分享,基于全志T113-i国产平台

    环境:TLT113-EVM评估板(NAND FLASH配置) T113-i快速启动方案说明 为了满足客户需求,我司基于T113-i实现Linux系统
    发表于 01-23 09:53

    VPN网关设置步骤详解

    标准和安全协议。 设备选择 :选择合适的硬件或软件VPN网关设备。 2. 选择合适的VPN技术 VPN技术有多种,包括: IPSec :一种广泛使用的VPN协议,提供强大的加密和认证功
    的头像 发表于 01-02 16:12 4290次阅读

    腾讯云内核团队修复Linux关键Bug

    腾讯云操作系统(Tencent OS)内核团队近日在Linux社区取得了显著成果。他们提交的两项改进方案,成功解决了自2021年以来一直困扰众多一线厂商,并在近期让多个Linux顶级
    的头像 发表于 12-31 10:58 914次阅读

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

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