使用 ZTM 增强极空间 NAS 的远程访问能力

news2024/11/25 20:29:37

入手极空间 Z4Pro 快两个周了,使用体验文章还得再等一等,多一些深度体验的时间。到目前来看,还是很满意的。

背景

今天这篇来说说极空间的远程访问功能,产品页面对远程访问的描述是:

让极空间真正成为你家庭中的网络设备控制中心:

  • 无需公网 IP 就可以便捷访问家中路由器、Docker 和智能家居
  • 不用学习网络知识也可以以轻松使用,快速添加
  • 自定义名称及颜色,方便查找与收藏,配合容器使用,扩展丰富功能

比如借助该功能可以方便地管理家中的软路由,非常适合没有公网 IP 的用户。

然后就可以点击新添加的链接,在极空间的窗口内访问 OpenWrt 的 web 后台了。

细心的你可能会注意到它只能支持 HTTP 协议(官方的功能介绍),只能通过极空间窗口访问,并且只能为管理员账号下使用该功能,灵活性大打折扣。比如远程访问家中的 Windows 设备(Windows 的远程桌面协议 RDP);或者需要 ssh 远程访问 HomeLab 虚拟机。

这些极空间的远程访问就无能为力了,这里就要用到 ZTM 了。

关于 ZTM

ZTM(Zero Trust Mesh)是一款开源的网络基础设施软件。它基于 HTTP/2 隧道构建,可以在任何类型的 IP 网络上运行,例如局域网、容器化网络和互联网等。

ZTM 可以在各种环境中使用,从连接家庭和工作场所的 2 节点个人网络,到连接全球办公室和分支机构的 10,000 节点企业网络。

ZTM 可以支持多种 CPU 架构,如 x86, ARM, MIPS, RISC-V, LoongArch 等,以及多种操作系统,如 Linux, Windows, macOS, FreeBSD, Android。

ZTM 包含了几个核心组件:

  • 流量转发程序 ZTM Agent:部署在要打通的网络,可以部署在个人计算机、服务器、边缘或者端侧设备中。用于连接 ZTM Hub 发起加密隧道,将设备的流量安全地转发到 Hub。
  • 流量转发集群 ZTM Hub:与每个 Agent 建立加密隧道,转发来自 Agent 的请求,实现多点接入和高可用性。
  • 证书管理服务器 ZTM CA:证书管理服务器。用于签发证书、吊销证书以及验证 Agent 用于访问的 TLS 证书。

方案

在远程访问中,我们需要在极空间中安装 ZTM Agent。其主动与部署在公有云的 ZTM Hub 建立加密隧道,然后将家庭网络中的服务注册到 Hub。

位于另一个网络中的电脑或者任意服务器,同样安装 ZTM Agent,在成功与 Hub 建立隧道后,就可以发现其他 Agent 注册的服务。然后就可以通过创建端口将发现的服务映射到本地。

接下来就开始我们的演示!

演示

在演示中我们将会用台有公网 IP 的云主机,可以购买云厂商 99 元的主机,通常都有 3-4M 的带宽,用来转发 1080P 甚至低码流的 4K 也没压力。

在极空间中,我们是使用 Docker 来运行 ZTM Agent。Agent 占用的资源非常低,我为容器分配 0.5 核的 CPU 和 128M 的内存,如果流量不大可以分配更少的资源。

1. 运行 ZTM Hub

首先 ssh 到云主机,通过 ZTM CLI 安装 ZTM CA 和 Hub。 当前最新的 ZTM 为 0.0.3 版本,通过下面的命令安装 CLI。

ZTM_VERSION=0.0.3

curl -sL https://github.com/flomesh-io/ztm/releases/download/v${ZTM_VERSION}/ztm-aio-v${ZTM_VERSION}-generic_linux-x86_64.tar.gz | tar -zxf -
sudo cp bin/ztm /usr/local/bin/ztm

通过命令 ztm help 可以查看 CLI 的使用方法。

通过下面的命令启动 ZTM 的 CA 服务,非常简单。

sudo ztm start ca --listen 127.0.0.1:9999

接下来是启动 Hub,默认监听在 8888 端口,同样可以通过参数 --listen 来修改,这里我们使用默认值。

sudo ztm start hub

2. 为 Agent 颁发证书

Agent 与 Hub 建立 HTTP/2 的加密隧道,使用 mTLS 进行双向认证。使用 CA 服务为 Agent 颁发证书,格式为 ztm invite USERNAME --bootstrap HUB_PUBLIC_IP:PORT,这里我们为两个 Agent 颁发证书。将证书保存到 json 文件中并下载到本地,后面会用到。

注意:json 文件中包含了公钥和密钥,请妥善保存。如若遗失,通过 ztm evict USERNAME 吊销证书,然后颁发新的证书。

ztm invite home --bootstrap 13.229.223.113:8888 --output > home.json
ztm invite macbook --bootstrap 13.229.223.113:8888 --output > macbook.json

3. 极空间 Agent 部署

访问极空间 Docker,在仓库中搜索并下载 addozhang/ztm 镜像。若遇到镜像下载问题,可以从 这里 下载镜像 tar 文件并上传到极空间中,然后在 本地镜像中选择从极空间导入

找到已经下载好的镜像,创建容器。

把前面颁发的证书 JSON 文件上传到极空间中,比如保存到存储的 /Docker/ZTM 目录中,然后在容器的文件夹路径中添加文件路径,装载到容器的 /tmp/ztm 中。

ZTM Agent 提供了 web 界面,为了方便使用可以将容器的 7777 端口映射到本地。

同样,为了便于容器外访问,将环境中的 LISTEN 修改为 0.0.0.0:7777,其他保持默认。

点击应用创建容器。

4. Agent 接入 Hub

Agent 启动之后,最重要的一步就是将其连接到 ZTM Hub。这里有两种方法:命令行和 Web 界面。

方法一:使用命令行

点击容器的 SSH 按钮,在弹窗中用户输入 ztm(ZTM 的运行不需要任何特权)。

在命令行窗口中执行下面的命令,与 Hub 建立安全隧道,命令格式 ztm join MESH_NAME --as AGENT_NAME --permit JSON_FILE

ztm join my-hub --as zspace --permit /tmp/ztm/home.json

可通过命令 ztm get mesh 查看隧道状态。

注:通过 ztm left MESH_NAME 可以断开与 Hub 的连接。

方法二:使用 Web 界面

在浏览器中打开 http://<极空间 IP>:7777,如果是从外部访问可以使用极空间的远程访问功能添加新的连接:使用 http://127.0.0.1:7777 即可。

Meshes 标签页中点击 Join

填入信息,并点击保存:

  • Mesh 输入你想要的名字,比如 my-hub
  • Permit 中点击 + 选择前面颁发的 home.json
  • Join AS 输入你想要的名字,比如 zspace

保存后在 Meshes 标签页中可以看到刚添加的 Hub,以及其状态。如果状态不是 Connected 请检查颁发的 JSON 文件的内容。

注:点击 Hub 右侧的三个点,可以修改或者断开连接。

5. 注册服务

想要从外部访问内网的服务,我们需要在内网的 Agent 上将服务注册到 Hub,即创建两个服务。同样可以使用命令行,或者 Web 界面来操作。

方法一:使用命令行

命令格式为 ztm create service PROTOCOL/SERVICE_NAME --host SERVICE_IP --port SERVICE_PORT。这里我们准备了两个服务:OpenWrt 的 Web 后面和一台开启了远程访问的 Windows 电脑。

ztm create service tcp/openwrt-web --host 192.168.11.1 --port 80
ztm create service tcp/win-11 --host 192.168.11.184 --port 3389

使用命令 ztm get service 可以查看注册的服务。

注:通过 ztm delete service PROTOCOL/SERVICE_NAME 可以注销服务。

方法二:使用 Web 界面

Services 标签页中,点击 Create

填入服务的相关信息,然后点击 Save 保存:

  • Service 服务名,比如 openwrt-web
  • Protocol 协议,选择服务对应的协议 TCP
  • Host 服务地址,这里是 OpenWrt 的地址 192.168.11.1
  • Port服务端口, 这里是 80

使用同样的方式创建 win-11 服务:

  • Service 服务名 win-11
  • Protocol 协议 TCP
  • Host 服务地址 192.168.11.184
  • Port服务端口 3389

到此,我们已经完成了家庭网络服务的注册。要想从外部网络访问家庭网的服务,我们需要在外网的设备进行类似的操作。

6. 外网 Agent 部署

首先是安装 ZTM,可以从 这里 下载对应平台的 CLI,在 mac 平台有支持 x86 和 M 芯片的 CLI,win 平台上也有对应的 exe 下载。

我在外网的设备是一台 MacBook,下载的是 arm64 的 CLI。

curl -sL https://github.com/flomesh-io/ztm/releases/download/v0.0.3/ztm-aio-v0.0.3-macos-arm64.tar.gz | tar -zxf -
sudo cp bin/ztm /usr/local/bin/ztm

安装好 CLI 之后,执行命令启动 Agent,会自动加入系统服务。

sudo ztm start agent

7. Agent 接入 Hub

重复同样的步骤,使用前面颁发的证书 macbook.json 与 Hub 建立隧道。可以使用命令行或者 Web 界面(http://localhost:7777)来操作。这里使用命令行来完成,Web 界面的操作可以参考前面的操作。

ztm join my-hub --as macbook --permit macbook.json

检查隧道状态。

ztm get mesh
NAME    JOINED AS  USER     HUBS                 STATUS
my-hub  macbook    macbook  13.229.223.113:8888  Connected

8. 映射服务到本地

服务的映射也是两种方式:命令行和 Web 界面。

方法一:使用命令行

通过下面命令可以查看 Hub 上注册的服务。

ztm get service
NAME             ENDPOINTS
tcp/openwrt-web  1
tcp/win-11       1

服务的映射是通过创建一个本地端口来实现的,格式为 ztm create port LAN_IP/PROTOCOL/PORT --service PROTOCL/NAME

ztm create port 127.0.0.1/tcp/18080 --service tcp/openwrt-web
ztm create port 127.0.0.1/tcp/13389 --service tcp/win-11

检查创建的端口。

ztm get port
NAME                 ENDPOINT  SERVICE
127.0.0.1/tcp/18080  macbook   tcp/openwrt-web
127.0.0.1/tcp/13389  macbook   tcp/win-11

注:通过 ztm delete port LAN_IP/PROTOCOL/PORT 可以删除端口。

方法二:使用 Web 界面

Services 标签页中找到发现的服务,点击服务右上角的按钮。

在弹窗中输入端口的信息。

  • IP 服务的映射地址,如果仅提供当前设备访问,选择 127.0.0.1;如果要提供给局域网的其他设备访问,输入当前设备的局域网地址。
  • Port 服务的映射端口,不能与其他端口冲突,这里我们将 openwrt-web 服务映射到 18080 端口。

同样的方式,映射 win-11 服务到本地 13389 端口。

Local Ports 标签中可以看到创建的两个本地端口。

9. 测试

远程访问 OpenWrt

在浏览器中打开 http://localhost:18080 可以成功访问远程的 OpenWrt。

远程访问 Windows 设备

使用 macOS 平台上的软件 Microsoft Remote Desktop 来访问远程桌面。

添加一台 PC,地址为 127.0.0.1:13389,账号为 Windows 设备的登录账号。

登录完成后,就可以远程来操作 Windows 设备了。

总结

在本次演示中,展示了如何通过 ZTM 增强极空间 NAS 的远程访问功能。演示中利用了两个服务:Web 服务和 Windows 远程桌面,来展示 ZTM 对多种协议的支持。

即使没有 NAS 设备,只要网络中存在任何可以运行 ZTM Agent 的设备,都可以实现远程访问。ZTM 支持所有基于 TCP 或 UDP 的协议,确保更广泛的应用场景和更高的兼容性。

后面我将会分享更多的使用场景,还有极空间的深度体验,敬请期待。

关注"云原生指北"微信公众号 (转载本站文章请注明作者和出处乱世浮生,请勿用于任何商业用途)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1833950.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

6.17 作业

使用qt实现优化自己的登录界面 要求&#xff1a; 1. qss实现 2. 需要有图层的叠加 &#xff08;QFrame&#xff09; 3. 设置纯净窗口后&#xff0c;有关闭等窗口功能。 4. 如果账号密码正确&#xff0c;则实现登录界面关闭&#xff0c;另一个应用界面显示。 第一个源文件 …

Mybatis --- 动态SQL 和数据库连接池

文章目录 一、什么是动态SQL 重要性二、动态SQL的编写 ---注解三、动态SQL的编写 ---xml3.1 增加场景 if标签3.2 处理代码块内容 --- trim 标签3.3 查询场景 where标签3.4 更新场景 set标签3.5 删除场景 <foreach> 循环标签3.6 include、sql标签 代码重复度问题 四、数据…

vue+element-plus完美实现跨境电商商城网站

目录 一、项目介绍 二、项目截图 1.项目结构图 2.首页 3.中英文样式切换 4.金钱类型切换 5.商品详情 6.购物车 7.登录 ​编辑 8.注册 9.个人中心 三、源码实现 1.项目依赖package.json 2.项目启动 3.购物车页面 四、总结 一、项目介绍 本项目在线预览&am…

Matlab基础篇:绘图与可视化

目录 前言 一、二维绘图 二、图形属性设置 三、多图绘制 四、三维绘图 五、绘图技巧 六、绘图的高级技巧 七、实例示范&#xff1a;绘制多功能图形 八、总结 前言 在数据分析和数学建模中&#xff0c;可视化是一个非常关键的步骤。Matlab 提供了丰富的绘图和可视化工…

自主可控数据库沙龙(北京站 |线下| 报名中)

**数据库沙龙**是一个致力于推动数据库技术创新和发展的高端交流平台&#xff0c;旨在增强国内数据库产业的自主可控性和高质量发展。这个平台汇集了学术界和产业界的顶尖专家、学者以及技术爱好者&#xff0c;通过专题演讲、案例分享和技术研讨等丰富多样的活动形式&#xff0…

6月17日(周一)美国股市行情总结:标普纳指齐新高,AI和芯片股尤为出色

标普500指数在六天里第五天上涨&#xff0c;纳指和纳指100均连续六日新高&#xff0c;道指止步四日连跌脱离近两周低位&#xff0c;罗素小盘股指止步两日连跌并脱离六周最低。微软收盘市值仍为美股第一、苹果为第二、英伟达第三&#xff0c;但早盘触及盘中新高的英伟达市值曾超…

你对SSH协议了解吗

SSH&#xff08;Secure Shell&#xff09;协议&#xff0c;作为网络通信领域的一项核心技术&#xff0c;以其卓越的安全性能和广泛的应用范围&#xff0c;成为保障网络通信安全的重要工具。本文将深入剖析SSH协议的工作原理、核心特性以及在现代网络通信中的关键作用&#xff0…

上海亚商投顾:沪指缩量调整 PCB概念股持续爆发

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 一.市场情绪 大小指数昨日走势分化&#xff0c;沪指全天震荡调整&#xff0c;创业板指午后涨超1%。消费电子板块全天强势&a…

安卓多媒体(音频录播、传统摄制、增强摄制)

本章介绍App开发常用的一些多媒体处理技术&#xff0c;主要包括&#xff1a;如何录制和播放音频&#xff0c;如何使用传统相机拍照和录像&#xff0c;如何截取视频画面&#xff0c;如何使用增强相机拍照和录像。 音频录播 本节介绍Android对音频的录播操作&#xff0c;内容包…

基于GTX的64B66B编码IP生成(高速收发器二十)

点击进入高速收发器系列文章导航界面 1、配置GTX IP 相关参数 前文讲解了64B66B编码解码原理&#xff0c;以及GTX IP实现64B66B编解码的相关信号组成&#xff0c;本文生成64B66B编码的GTX IP。 首先如下图所示&#xff0c;需要对GTX共享逻辑进行设置&#xff0c;为了便于扩展&a…

Apple - Framework Programming Guide

本文翻译自&#xff1a;Framework Programming Guide&#xff08;更新日期&#xff1a;2013-09-17 https://developer.apple.com/library/archive/documentation/MacOSX/Conceptual/BPFrameworks/Frameworks.html#//apple_ref/doc/uid/10000183i 文章目录 一、框架编程指南简介…

文件操作(1)(C语言版)

前言&#xff1a; 为什么要学习文件操作&#xff1a; 1、如果大家写过一些代码&#xff0c;当运行结束的时候&#xff0c;这些运行结果将不复存在&#xff0c;除非&#xff0c;再次运行时这些结果才能展现在屏幕上面&#xff0c;就比如之前写过的通讯录。 现实中的通讯录可以保…

商超智能守护:AI监控技术在零售安全中的应用

结合思通数科大模型的图像处理、图像识别、目标检测和知识图谱技术&#xff0c;以下是详细的商超合规监测应用场景描述&#xff1a; 1. 员工仪容仪表监测&#xff1a; 利用图像识别技术&#xff0c;系统可以自动检测员工是否按照规范整理妆容、穿着工作服&#xff0c;以及是否…

Arm和高通的法律之争将扰乱人工智能驱动的PC浪潮

Arm和高通的法律之争将扰乱人工智能驱动的PC浪潮 科技行业高管和专家表示&#xff0c;两大科技巨头之间长达两年的法律大战可能会扰乱人工智能驱动的新一代个人电脑浪潮。 上周&#xff0c;来自微软(Microsoft)、华硕(Asus)、宏碁(Acer)、高通(Qualcomm)等公司的高管在台北举行…

Raylib的贪吃蛇

配置Raylib库 工具链主函数模板Draw: 绘制网格Snake: 初始化Draw&#xff1a;绘制蛇与果Input&#xff1a;移动Logic&#xff1a;游戏主要逻辑Draw: 游戏结束 工具链 mkdir snake cd snakeCMakeLists.txt cmake_minimum_required(VERSION 3.10) project(snake) set(CMAKE_EXP…

深度学习500问——Chapter11:迁移学习(3)

文章目录 11.3 迁移学习的常用方法 11.3.1 数据分布自适应 11.3.2 边缘分布自适应 11.3.3 条件分布自适应 11.3.4 联合分布自适应 11.3.5 概率分布自适应方法优劣性比较 11.3.6 特征选择 11.3.7 统计特征对齐方法 11.3 迁移学习的常用方法 11.3.1 数据分布自适应 数据分布自适…

libdrm 2.4.107 needed because amdgpu has the highest requirement

libdrm 2.4.107 needed because amdgpu has the highest requirement 1.问题分析解决 1.问题 Message: libdrm 2.4.107 needed because amdgpu has the highest requirement Run-time dependency libdrm_intel found: YES 2.4.107 Run-time dependency libdrm_amdgpu found: Y…

深度学习500问——Chapter11:迁移学习(4)

文章目录 11.3.8 流形学习方法 11.3.9 什么是finetune 11.3.10 finetune为什么有效 11.3.11 什么是网络自适应 11.3.12 GAN在迁移学习中的应用 参考文献 11.3.8 流形学习方法 什么是流行学习&#xff1f; 流行学习自从2000年在Science上被提出来以后&#xff0c;就成为了机器…

uniapp canvas生成海报

效果 封装组件&#xff0c;父组件 ref 调用 downImgUrl()函数&#xff0c;其他根据自己需求改 <template><view><view class"bgpart"><canvas class"canvas-wrap" canvas-id"canvasID" type"2d"></canvas…

41、基于深度学习的自适应线性预测(matlab)

1、原理及流程 自适应线性预测是一种基于递归最小二乘法&#xff08;Recursive Least Squares, RLS&#xff09;的线性预测方法&#xff0c;用于自适应地估计线性系统的参数。下面是自适应线性预测的原理和流程&#xff1a; 原理&#xff1a; 自适应线性预测的核心思想是通过…