一种通过MQTT Broker实现远程调试、创建网络隧道的解决方案

简介: 介绍了一种通过MQTT Broker实现远程调试、创建网络隧道的解决方案,该方案部署方便,稳定。

前言

先说一下场景需求:
1、远程ssh访问设备,但是设备端不具备公网访问能力。
2、物联网采集网关,通过4G连接外网,网关部署在项目现场,我们不知道网关的IP,就算知道,网络链路也不通。对于网关的远程调试和运维都无法进行。
目前的解决方案:
1、通过SD-WAN技术,设备与设备之间打通隧道。
2、通过VPN,本地部署VPN服务器,实现VPN专网。
3、采用阿里云/华为云边缘计算解决方案,设备连接到阿里云/华为云边缘平台,实现远程运维、调试。

现有方案优缺点

1、SD-WAN技术,需要配备SD-WAN软件或硬件,对于企业用户是合适的。但是设备厂商并不合适。
2、采用VPN,如果是运营商VPN,成本昂贵,如果是私有部署VPN,部署相对专业,我没有部署过,不过有一定的专业门槛。
3、使用公有云提供的边缘计算方案,相当于要捆绑公有云,有不小的学习成本。
综上,上述方案的优点简单的说就是方案成熟,稳定,缺点就是要花钱买钱和不少人力。

工程师方案

上面的方案是基于外部力量实现的,对于稍微有些能力的开发者而言,也是有少花钱的解决方案的,简单的说,就是在一台公网服务器上,部署一个自己开发的 隧道转发 应用程序,设备通过 自己开发的应用程序来建立隧道,进而实现转发,流转。这种方案,理论上可行,稍微有点网络基础的人就知道,背后的工作量巨大,光是稳定性这块就很难保证,就更不用提多并发管理了。

MQTT Broker转发方案

上面所有的方案,基本上都是要实现一个中转站,上面提到的工程师方案的难点和缺点是,一般人很难开发出稳定、高可用、并发的中转服务器。那么如果有个 现成的、方便部署、稳定、可靠的中转服务器呢,是否就能解决问题了呢,答案是:yes,有这样的方案。
关于MQTT的通信协议,可以看我之前关于MQTT的系列文章:
《MQTT协议详解及开发教程(一)MQTT协议概述》, 这里就不赘述了。解决方案如下:
19.png
我们以MQTT Broker EMQx为例,网关和远程调试工具作为mqtt client, 通过2个topic:up和down

  • 配置工具想要发送命令,则publis消息到 down topic, 网关订阅down topic,收到命令,对命令进行解析并执行,然后返回消息,publis消息到up topic,而配置工具订阅up topic,收到返回数据。

这种方案,实现了一种通过Broker搭建隧道,实现数据中转。

优点

可能有些不熟悉MQTT协议的人会觉得,该方案好像也不过如此啊,原理貌似懂,但是干的事儿好像也不少啊,其实不然,这种方案有很多优点:
1、MQTT是物联网领域的通用标准,不管是阿里云物联网、还是华为IOT,还是其他公司的IOT,基本上都是通过MQTT协议,可以说MQTT已经是物联网领域事实上的标准了,标准的优点就是方便,支持多,资料多。
2、MQTT Broker部署非常方便,以EMQx为例,只需要一台服务器,不管是windows还是linux,部署非常方便,几乎不要什么专业知识。
3、MQTT Broker可选择对象多,EMQx、Apoll等等。
4、开源、免费、稳定,除非要求完善、高质量的服务,一般的知名开源Broker都是免费试用的,关键是非常稳定。

其他工作量

有了MQTT Broker的帮助,对于开发者,我们再也不用干数据转发、打通隧道这种专业性强、复杂的活儿了,我们只需要针对我们自己的应用需求,做MQTT消息的解析即可。

小结

经过测试验证,该方案可以实现:

  • JSON、ASCII码等字符串转发,所以理论上可以实现 ssh模拟。
  • 字节、数值、十六进制数值的转发,所以可以实现远程功能调试,比如Modbus。
  • MQTT支持字节流转发,也就是支持文件传输,实现文件的转发,类似于xftp。

该方案稳定、部署方便,用户只需要关注自己的业务应用即可,目前了解到,一些物联网关(中电网关)就是通过该方案实现的远程调试、下载、上载功能。

相关实践学习
消息队列RocketMQ版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
22天前
|
监控 安全 网络安全
云计算与网络安全:技术、挑战与解决方案
【8月更文挑战第30天】随着云计算技术的飞速发展,越来越多的企业和个人开始将数据和应用迁移到云端。然而,云计算的普及也带来了一系列网络安全问题。本文将探讨云计算中的网络安全挑战,包括数据泄露、恶意软件攻击和服务中断等,并介绍一些常见的网络安全技术和最佳实践,如加密、访问控制和安全监控等。最后,我们将讨论如何制定有效的网络安全策略,以保护云服务免受威胁。
|
2月前
|
存储 安全 网络安全
云端防御策略:云计算时代的网络安全挑战与解决方案
【7月更文挑战第31天】随着云计算技术的迅猛发展,企业和个人越来越倚重云服务来处理和存储数据。然而,这种转变也带来了新的网络安全挑战。本文将深入分析云计算环境下的网络安全问题,并探讨如何通过先进的安全措施和技术来保护云基础设施免受威胁。我们将讨论从身份验证到入侵检测系统的一系列安全实践,以及如何利用加密技术来保障数据在传输和静态状态下的安全。
36 1
|
2月前
|
云安全 安全 网络安全
云端防御策略:在云计算时代保护网络安全的全新挑战与解决方案
随着云计算技术的飞速发展,企业和个人越来越依赖云服务来处理和存储数据。然而,这种转变也带来了新的安全威胁和隐私问题。本文将探讨云计算环境中特有的网络安全挑战,并介绍一系列创新的安全措施和技术,旨在加强云服务的安全性,确保数据的完整性和保密性。通过案例分析和最新技术趋势的讨论,我们旨在为读者提供深入理解并应对这些挑战的策略。
31 1
|
2月前
|
消息中间件 存储 监控
消息队列 MQ使用问题之客户端重启后仍然出现broker接收消息不均匀,该怎么办
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
|
1天前
|
传感器 运维 物联网
蓝牙Mesh网络:连接未来的智能解决方案
蓝牙Mesh网络:连接未来的智能解决方案
29 12
|
21天前
|
存储 安全 网络安全
云计算与网络安全:技术挑战与解决方案
【8月更文挑战第31天】在数字化时代,云计算已成为企业和个人数据存储、处理和分析的首选平台。然而,随着其广泛应用,网络安全问题也日益凸显。本文将探讨云计算中的网络安全挑战,包括数据泄露、服务中断等风险,并介绍如何通过加密技术、身份验证和访问控制等手段来增强云安全。文章还将分享一些实用的代码示例,帮助读者更好地理解和应用这些安全措施。
|
28天前
|
安全 网络安全 云计算
云计算与网络安全:探索云服务的安全挑战与解决方案
【8月更文挑战第24天】在数字化转型的浪潮中,云计算作为一项关键技术,正推动着企业IT架构的革新。然而,随着云服务的广泛应用,网络安全问题也日益凸显,成为制约云技术发展的主要因素之一。本文将深入探讨云计算环境下的网络安全挑战,并结合最新的安全技术,提出有效的防护策略和解决方案。通过分析云服务模式、安全威胁及应对措施,旨在为读者提供一套完整的云计算网络安全指南。
|
1月前
|
网络协议 Linux 网络安全
遇到Docker容器网络隔断?揭秘六种超级实用解决方案,轻松让Docker容器畅游互联网!
【8月更文挑战第18天】Docker容器内网络不通是开发者常遇问题,可能因网络配置错、Docker服务异常或防火墙阻碍等原因引起。本文提供六种解决策略:确认Docker服务运行状态、重启Docker服务、检查与自定义Docker网络设置、验证宿主机网络连接、临时禁用宿主机IPv6及检查防火墙规则。通过这些步骤,多数网络问题可得以解决,确保容器正常联网。
55 1
|
24天前
|
消息中间件 SQL 监控
RocketMQ 5.3.0 版本中 Broker IP 配置为 IPv6 的情况
【8月更文第28天】RocketMQ 是一款分布式消息中间件,支持多种消息发布和订阅模式。在 RocketMQ 5.3.0 版本中,Broker 的配置文件 `broker.conf` 允许配置 IPv6 地址。当 Broker 的 `brokerIP1` 配置为 IPv6 地址时,会对 Broker 的启动、消息推送和状态监控等方面产生影响。本文将探讨如何在 RocketMQ 中配置 IPv6 地址,并检查 Broker 的状态。
71 0
|
28天前
|
安全 网络安全 数据中心