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

开发 前端
在本次演示中,展示了如何通过 ZTM 增强极空间 NAS 的远程访问功能。即使没有 NAS 设备,只要网络中存在任何可以运行 ZTM Agent 的设备,都可以实现远程访问。ZTM 支持所有基于 TCP 或 UDP 的协议,确保更广泛的应用场景和更高的兼容性。

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

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

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

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

图片图片

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

图片图片

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

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

关于 ZTM

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

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

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

图片图片

ZTM 的两个重要组件 Hub 和 Agent,组建基于 HTTP/2 的隧道,通过隧道组成去中心化的网络基础设施。在这个高速的网络上,我们可以进行数据的安全传输。

  • ZTM Agent:部署在需要接入零信任网络的设备上,包括个人计算机、服务器或边缘设备上,负责启动加密隧道并将设备的流量安全地转发到 ZTM Hub。
  • ZTM Hub:分布式部署的接入点,分布式部署的接入点,与每个 Agent 建立加密隧道,转发来自 Agent 的请求,实现多点接入和高可用性。

更多关于 ZTM 的架构和概念介绍,可以查看 官方文档[3]。

方案

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

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

图片图片

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

演示

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

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

在操作 ZTM 时,可以通过命令行或者 Web 界面来实现,在下面的演示中我们会尽量使用 Web 界面,关于命令行的使用可以参考文档:ZTM CLI[4] 和 ZTM App[5]。

一、环境搭建

1. 运行 ZTM Hub

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

ZTM_VERSION=0.3.1

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 hub --listen 0.0.0.0:8888 --names 23.102.227.117:8888 --permit root.json

执行上面的命令之后,会在当前目录中创建一个 root.json 文件。这个文件中包含 root (ZTM 用户)用户的私钥,请妥善保管。

通过 systemctl 可以查看服务运行状态。

systemctl status ztm-hub

2. 极空间 Agent 部署

访问极空间 Docker,在仓库中搜索 flomesh/ztm-agent 镜像,下载最新的 0.3.1 版本。

图片图片

选择下载好的镜像创建容器。

图片图片

当上面获取的 root.json 许可文件上传到极空间中改名为 ztm-permit.json,这里我将其保存到存储的 /Docker/ZTM 目录中。然后在容器的文件夹路径中添加文件路径,装载到容器的 /tmp/ztm 中。

图片图片

将 ZTM Agent web 界面的 7777 端口映射到本地。

图片图片

在环境变量配置中,进行如下配置。

图片图片

点击应用创建容器。

图片图片

在浏览器中使用极空间的 IP 地址访问 ZTM 的 web 页面。在 Meshes 界面中,可以看到极空间已经接入到我们自建的 Mesh 网络中。

图片图片

3. 启动外网 Agent

接下来在本地电脑 MacBook 上启动 ZTM Agent。下载[6] 对应 macOS 版本的 ZTM,通过下面的命令启动。

ztm start agent

4. 外网 Agent 接入 Mesh 网络

在浏览器中打开 http://127.0.0.1:7777/。

图片图片

选择 Join Mesh 接入 Mesh 网络。在表单中配置 Mesh 名 ztm-cloud 和 Endpoint 名 macbook,右侧的 Permit 栏中选中前面下载的许可文件。

图片图片

点击 Save 保存后,可以看到已经成功接入到 Mesh 网络中。

图片图片

在 Endpoints 界面,可以查看已经接入到 Mesh 网络的 Endpoint。

图片图片

环境搭建完毕后,接下来我们可以基于 ZTM 的 Mesh 网络来实现跨网络的访问。

二、访问内网服务

1. 打开隧道出口

在内网(家庭网络)访问极空间 Agent 的 ZTM Web 页面。

图片图片

在 Apps 界面中选择 Tunnel, 然后点击右上角的 + 号添加新的隧道。提供隧道名 openwrt,添加 Outbound。

图片图片

将 Outbound 指向 OpenWrt 192.168.11.1:80,点击 √ 保存。

图片图片

最后点击 Create 保存后,就可以看到创建好的隧道。

图片图片

2. 打开隧道入口

让我们切换到外网也就是 Macbook 的 Agent 来配置隧道入口。

在 Apps 界面打开 tunnel,可以看到 Mesh 网络中已经存在的隧道 openwrt,这个隧道已经存在一个出口。

图片图片

编辑该隧道,添加入口,将 Listens 设置为 127.0.0.1:8080。

图片图片

保存之后,可以看到隧道上已打开了入口和出口。

图片图片

3. 测试

在 MacBook 上打开 http://127.0.0.1:8080 可以直接访问家庭网络中的 OpenWrt,这样外出时也可以方便地进行管理了。

图片图片

三、远程访问 Windows 设备

回到文章开头提到的远程访问 Windows 设备的场景,对 ZTM 来说一样轻松。

1. 打开隧道出口

在极空间的 Agent 上创建一个新的名为 win-11 的隧道,配置出口为 192.168.11.184:3389。

图片图片

2. 打开隧道入口

在 MacBook 的 Agent 上找到 win-11 隧道,添加隧道入口 127.0.0.1:13389。

图片图片

3. 测试

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

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

图片图片

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

图片图片

图片图片

总结

在本次演示中,展示了如何通过 ZTM 增强极空间 NAS 的远程访问功能。即使没有 NAS 设备,只要网络中存在任何可以运行 ZTM Agent 的设备,都可以实现远程访问。ZTM 支持所有基于 TCP 或 UDP 的协议,确保更广泛的应用场景和更高的兼容性。

参考资料

[1] 官方的功能介绍: https://www.zspace.cn/help/?articleId=100160

[2] ZTM: https://github.com/flomesh-io/ztm

[3] 官方文档: https://github.com/flomesh-io/ztm/blob/main/docs/Architecture-Concepts_zh.md

[4] ZTM CLI: https://github.com/flomesh-io/ztm/blob/main/docs/CLI_zh.md

[5] ZTM App: https://github.com/flomesh-io/ztm/blob/main/docs/ZT-App_zh.md

[6] 下载: https://github.com/flomesh-io/ztm/releases

责任编辑:武晓燕 来源: 云原生指北
相关推荐

2009-09-02 15:08:47

2023-10-23 15:27:09

OpenAIChatGPT

2017-09-26 09:59:01

NAS2.0管理能力

2011-08-22 11:39:13

2022-02-09 15:23:39

SASE网络安全

2023-03-08 12:38:47

2009-11-20 09:36:30

证券信息安全谷安天下

2019-10-18 20:02:11

软件跳槽那些事儿技术

2018-12-06 08:34:15

Linux访问控制安全拦截技术

2009-08-18 20:57:26

2022-11-01 09:31:52

物联网远程医疗服务

2013-04-12 09:55:17

远程网络访问VPN虚拟化网络

2009-07-08 15:57:43

2009-04-10 22:06:09

Vmwareesx虚拟化

2018-06-12 08:27:28

云计算NAS云端

2010-08-31 16:23:46

SAS数据库
点赞
收藏

51CTO技术栈公众号