0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀(guān)看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于Linux內(nèi)核實(shí)現(xiàn)高效、快速、簡(jiǎn)單的VPN方案

電子設(shè)計(jì) ? 來(lái)源:與非網(wǎng) ? 作者:Toradex胡珊逢 ? 2021-02-01 14:04 ? 次閱讀

By Toradex胡珊逢

聯(lián)網(wǎng)需求在各種嵌入式應(yīng)用中正開(kāi)始變得越來(lái)越普遍,隨之而來(lái)就是數(shù)據(jù)傳輸?shù)陌踩魬?zhàn)。VPN是應(yīng)對(duì)該挑戰(zhàn)的有效措施。除此之外,VPN還能夠穿透防火墻或者NAT實(shí)現(xiàn)異地組網(wǎng),從而提供遠(yuǎn)程訪(fǎng)問(wèn)設(shè)備的功能。文章接下來(lái)在運(yùn)行Linux系統(tǒng)的Apalis iMX8QM上演示如何使用OpenVPN和WireGuard兩種VPN方案。

OpenVPN一種使用較為廣泛的VPN,其基于OpenSSL提供多種加密方案,采用TCP或者UDP作為傳輸層協(xié)議,具有非常高的靈活性。WireGuard是一種更加高效、快速、簡(jiǎn)單的VPN方案,最初直接基于Linux內(nèi)核實(shí)現(xiàn),支持最新的加密算法如Curve25519、ChaCha20、Poly1305、BLAKE2等,傳輸層采用UDP協(xié)議。自L(fǎng)inux 5.6開(kāi)始,WireGuard已經(jīng)集成到內(nèi)核中,目前擁有非?;钴S的開(kāi)發(fā)群體,支持Windows、macOS、BSD、iOS、Android。Toradex針對(duì)其模塊發(fā)布的BSP采用Yocto構(gòu)建,OpenVPN和WireGuard在Yocto中可以很方便得添加進(jìn)來(lái)。

首先在local.conf配置文件添加一下內(nèi)容,apache網(wǎng)站服務(wù)器用于后面的遠(yuǎn)程連接演示。

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內(nèi)核實(shí)現(xiàn),為了保證其代碼的精簡(jiǎn),其復(fù)用了內(nèi)核中很多的網(wǎng)絡(luò)功能,因此需要修改默認(rèn)的內(nèi)核配置。如果使用OpenVPN,則可以跳過(guò)該步驟,直接編譯BSP。

o4YBAGAXl5GAX1y3AACPlWR5iFY178.png

在開(kāi)始配置之前,我們先介紹下測(cè)試所使用的網(wǎng)絡(luò)拓?fù)?。如下圖所示,首先需要一臺(tái)具有公網(wǎng)IP的服務(wù)器作為VPN服務(wù)器。Apalis iMX8QM通過(guò)以太網(wǎng)連接電信運(yùn)營(yíng)商提供的光貓。目前光貓通常只能獲取的經(jīng)過(guò)電信運(yùn)營(yíng)商N(yùn)AT轉(zhuǎn)換后的內(nèi)網(wǎng)IPv4地址。用于測(cè)試的手機(jī)則通過(guò)基站接入公網(wǎng)。

pIYBAGAXl6uAebk4AAC-xCunCLU219.png

VPN服務(wù)器設(shè)置

OpenVPN和WireGuard官網(wǎng)均提供了詳細(xì)的服務(wù)器配置說(shuō)明。這里我們使用另外一個(gè)工具PiVPN來(lái)設(shè)置服務(wù)器。PiVPN最初是為樹(shù)莓派提供簡(jiǎn)單的服務(wù)器管理工具,但同樣可以用于任何基于Debian發(fā)行版本,如Ubuntu。運(yùn)行下面命令即可安裝。

pIYBAGAXl-CAC0-hAABHICMKSJA165.png

手機(jī)端設(shè)置

在手機(jī)上安裝OpenVPN和WireGuard客戶(hù)端,然后導(dǎo)入上面PiVPN生成的ovpn或者conf文件,亦或通過(guò)掃二維碼。PiVPN均提供十分易于使用的功能。

Apalis iMX8QM設(shè)置

使用system-networkd作為網(wǎng)絡(luò)管理器

o4YBAGAXl_SAcb-RAAByAROZcCw668.png

成功運(yùn)行后會(huì)看到如下信息

o4YBAGAXmA-AJUEMAABUs_bWW_U355.png

使用ifconfig命令可以看到如下tun0接口。分配的IP為10.8.0.5。在其他連接到該VPN的客戶(hù)端上可以使用該IP來(lái)訪(fǎng)問(wèn)Apalis iMX8QM。

o4YBAGAXmDSABQo5AAA2wr9WVyU839.png

在手機(jī)上連接 OpenVPN,分配到的IP為10.8.0.3。通過(guò)手機(jī)上的瀏覽器訪(fǎng)問(wèn)Apalis iMX8QM上的網(wǎng)頁(yè)http://10.8.0.5。

pIYBAGAXmFiAS5c3AAErIB4BZo4973.png

pIYBAGAXmGWAduXzAABWEowrHlI074.png

lWireGuard

將PiVPN生成的配置文件apalis-imx8.conf復(fù)制到/etc/wireguard/wg0.conf,然后運(yùn)行

pIYBAGAXmHaAVYDWAABJ-4VYZ2Y692.png

在手機(jī)上啟動(dòng)WireGuard應(yīng)用,訪(fǎng)問(wèn)Apalis iMX8QM上的網(wǎng)頁(yè)http://10.6.0.5。

o4YBAGAXmISASyA9AAFz1RET6q4488.png

pIYBAGAXmJmAfSCpAABUyfxGPu4687.png

總結(jié)

VPN可以將不同網(wǎng)絡(luò)的設(shè)備進(jìn)行組網(wǎng)實(shí)現(xiàn)互聯(lián),方便遠(yuǎn)程管理。但同時(shí)也需要注意服務(wù)器的安全防護(hù),通過(guò)該服務(wù)器可以獲取到連接設(shè)備信息,包括登錄驗(yàn)證信息。
編輯:hfy

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀(guān)點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 服務(wù)器
    +關(guān)注

    關(guān)注

    12

    文章

    8701

    瀏覽量

    84546
  • TCP
    TCP
    +關(guān)注

    關(guān)注

    8

    文章

    1324

    瀏覽量

    78756
  • UDP
    UDP
    +關(guān)注

    關(guān)注

    0

    文章

    317

    瀏覽量

    33801
  • OpenSSL
    +關(guān)注

    關(guān)注

    0

    文章

    20

    瀏覽量

    8626
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    如何在DRA821U上使用Linux實(shí)現(xiàn)快速引導(dǎo)

    電子發(fā)燒友網(wǎng)站提供《如何在DRA821U上使用Linux實(shí)現(xiàn)快速引導(dǎo).pdf》資料免費(fèi)下載
    發(fā)表于 09-03 10:11 ?0次下載
    如何在DRA821U上使用<b class='flag-5'>Linux</b><b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>快速</b>引導(dǎo)

    linux驅(qū)動(dòng)程序如何加載進(jìn)內(nèi)核

    Linux系統(tǒng)中,驅(qū)動(dòng)程序是內(nèi)核與硬件設(shè)備之間的橋梁。它們?cè)试S內(nèi)核與硬件設(shè)備進(jìn)行通信,從而實(shí)現(xiàn)對(duì)硬件設(shè)備的控制和管理。 驅(qū)動(dòng)程序的編寫(xiě) 驅(qū)動(dòng)程序的編寫(xiě)是
    的頭像 發(fā)表于 08-30 15:02 ?191次閱讀

    Linux內(nèi)核測(cè)試技術(shù)

    。內(nèi)核測(cè)試技術(shù)是實(shí)現(xiàn)這一目標(biāo)的關(guān)鍵手段。本文將詳細(xì)介紹 Linux 內(nèi)核測(cè)試的各種技術(shù),包括單元測(cè)試、集成測(cè)試、功能測(cè)試和性能測(cè)試等,并討論不同測(cè)試方法的優(yōu)缺點(diǎn)及其適用場(chǎng)景。
    的頭像 發(fā)表于 08-13 13:42 ?246次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>內(nèi)核</b>測(cè)試技術(shù)

    歡創(chuàng)播報(bào) 華為宣布鴻蒙內(nèi)核已超越Linux內(nèi)核

    1 華為宣布鴻蒙內(nèi)核已超越Linux內(nèi)核 ? 6月21日,在華為開(kāi)發(fā)者大會(huì)上, HarmonyOS NEXT(鴻蒙NEXT)——真正獨(dú)立于安卓和iOS的鴻蒙操作系統(tǒng),正式登場(chǎng)。這是HarmonyOS
    的頭像 發(fā)表于 06-27 11:30 ?571次閱讀

    內(nèi)核實(shí)時(shí)操作系統(tǒng)的介紹

    內(nèi)核實(shí)時(shí)操作系統(tǒng)(Microkernel Real-Time Operating System, μRTOS)是一種專(zhuān)為實(shí)時(shí)設(shè)計(jì)的操作系統(tǒng)。它采用微內(nèi)核架構(gòu),以提高系統(tǒng)的可靠性、安全性和可擴(kuò)展性。以下是關(guān)于微內(nèi)核實(shí)時(shí)操作系統(tǒng)的
    的頭像 發(fā)表于 05-11 17:13 ?359次閱讀

    使用 PREEMPT_RT 在 Ubuntu 中構(gòu)建實(shí)時(shí) Linux 內(nèi)核

    盟通技術(shù)干貨構(gòu)建實(shí)時(shí)Linux內(nèi)核簡(jiǎn)介盟通技術(shù)干貨Motrotech如果需要在Linux實(shí)現(xiàn)實(shí)時(shí)計(jì)算性能,進(jìn)而有效地將Linux轉(zhuǎn)變?yōu)镽T
    的頭像 發(fā)表于 04-12 08:36 ?1430次閱讀
    使用 PREEMPT_RT 在 Ubuntu 中構(gòu)建實(shí)時(shí) <b class='flag-5'>Linux</b> <b class='flag-5'>內(nèi)核</b>

    獲取Linux內(nèi)核源碼的方法

    (ELF1/ELF1S開(kāi)發(fā)板及顯示屏)Linux內(nèi)核是操作系統(tǒng)中最核心的部分,它負(fù)責(zé)管理計(jì)算機(jī)硬件資源,并提供對(duì)應(yīng)用程序和其他系統(tǒng)組件的訪(fǎng)問(wèn)接口,控制著計(jì)算機(jī)的內(nèi)存、處理器、設(shè)備驅(qū)動(dòng)程序和文件系統(tǒng)等
    的頭像 發(fā)表于 12-13 09:49 ?537次閱讀
    獲取<b class='flag-5'>Linux</b><b class='flag-5'>內(nèi)核</b>源碼的方法

    Linux系統(tǒng)中的FBE實(shí)現(xiàn)方案和特點(diǎn)

    的eCryptfs FBE方案,以及眾多基于FUSE的FBE方案。 前面章節(jié)已經(jīng)簡(jiǎn)單介紹過(guò)基于dm-crypt的FDE方案在ubuntu虛擬機(jī)上的驗(yàn)證情況,這里先
    的頭像 發(fā)表于 11-29 11:23 ?875次閱讀
    <b class='flag-5'>Linux</b>系統(tǒng)中的FBE<b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>方案</b>和特點(diǎn)

    軟件如何利用內(nèi)核實(shí)現(xiàn)高效運(yùn)行

    在單核處理器中,CPU 由操作系統(tǒng)內(nèi)核調(diào)度程序在線(xiàn)程之間共享,執(zhí)行由線(xiàn)程調(diào)度管理,線(xiàn)程優(yōu)先級(jí)和時(shí)間切片和切換線(xiàn)程稱(chēng)為上下文切換。相比之下,多處理器 (MP) 將多個(gè)高效 CPU 組合在一起,可以以比單個(gè)高性能 CPU 更低的總功耗提供更高的聚合性能,并提供更多的電源管理選
    的頭像 發(fā)表于 11-23 14:50 ?502次閱讀

    Linux內(nèi)核slab性能優(yōu)化的核心思想

    不同的場(chǎng)景下面),并給出了這些問(wèn)題的優(yōu)化方案,這個(gè)對(duì)我們實(shí)現(xiàn)高性能內(nèi)存池算法,或以后遇到內(nèi)存性能問(wèn)題的時(shí)候,有一定的啟發(fā),值得我們學(xué)習(xí)。 Linux內(nèi)核的slab來(lái)自一種很
    的頭像 發(fā)表于 11-13 11:45 ?490次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>內(nèi)核</b>slab性能優(yōu)化的核心思想

    Linux內(nèi)核UDP收包為什么效率低

    包效率真的很低,這是為什么?有沒(méi)有辦法去嘗試著優(yōu)化?而不是動(dòng)不動(dòng)就DPDK。 我們從最開(kāi)始說(shuō)起。 Linux內(nèi)核作為一個(gè)通用操作系統(tǒng)內(nèi)核,脫胎于UNIX那一套現(xiàn)代操作系統(tǒng)理論。 但一開(kāi)始不知道怎么回事將網(wǎng)絡(luò)協(xié)議棧的
    的頭像 發(fā)表于 11-13 10:38 ?385次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>內(nèi)核</b>UDP收包為什么效率低

    Linux內(nèi)核內(nèi)存規(guī)整總結(jié)

    1.前言 伙伴系統(tǒng)作為內(nèi)核最基礎(chǔ)的物理頁(yè)內(nèi)存分配器,具有高效實(shí)現(xiàn)邏輯簡(jiǎn)介等優(yōu)點(diǎn),其原理頁(yè)也盡可能降低內(nèi)存外部碎片產(chǎn)生,但依然無(wú)法杜絕碎片問(wèn)題。外部碎片帶來(lái)的最大影響就是內(nèi)存足夠,但是卻無(wú)法滿(mǎn)足內(nèi)存
    的頭像 發(fā)表于 11-11 11:17 ?1150次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>內(nèi)核</b>內(nèi)存規(guī)整總結(jié)

    Linux內(nèi)核時(shí)鐘系統(tǒng)和定時(shí)器實(shí)現(xiàn)

    Linux內(nèi)核時(shí)鐘系統(tǒng)和定時(shí)器實(shí)現(xiàn) Linux 2.6.16之前,內(nèi)核只支持低精度時(shí)鐘,內(nèi)核定時(shí)
    的頭像 發(fā)表于 11-09 09:12 ?1114次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>內(nèi)核</b>時(shí)鐘系統(tǒng)和定時(shí)器<b class='flag-5'>實(shí)現(xiàn)</b>

    淺談Linux內(nèi)核源碼的Makefile、Kconfig和.config文件

    Linux內(nèi)核源碼文件繁多,搞不清Makefile、Kconfig、.config間的關(guān)系,不了解內(nèi)核編譯體系,編譯修改內(nèi)核有問(wèn)題無(wú)從下手,自己寫(xiě)的驅(qū)動(dòng)不知道怎么編進(jìn)
    發(fā)表于 10-17 16:19 ?3297次閱讀
    淺談<b class='flag-5'>Linux</b><b class='flag-5'>內(nèi)核</b>源碼的Makefile、Kconfig和.config文件

    FreeRTOS內(nèi)核實(shí)現(xiàn)與應(yīng)用開(kāi)發(fā)實(shí)戰(zhàn)指南

    本書(shū)是野火嵌入式教學(xué)叢書(shū)“RTOS 內(nèi)核實(shí)現(xiàn)與應(yīng)用開(kāi)發(fā)實(shí)戰(zhàn)指南的”FreeRTOS 版本,其中機(jī)械工業(yè)出版社出版的《RT-Thread 內(nèi)核實(shí)現(xiàn)與應(yīng)用開(kāi)發(fā)實(shí)戰(zhàn)指南—基于 STM32》是該書(shū)的姐妹篇
    發(fā)表于 09-28 08:05