Linux本地部署Mosquitto MQTT协议消息服务端并实现长途访问【内网穿透】 ...

打印 上一主题 下一主题

主题 983|帖子 983|积分 2949

前言

Mosquitto是一个开源的消息代理,它实现了MQTT协议版本3.1和3.1.1。它可以在不同的平台上运行,包括Windows、Linux、macOS等。mosquitto可以用于物联网、传感器、移动应用程序等场景,提供了一种轻量级的、可靠的、基于发布/订阅模式的消息通报机制。
MQTT协议长途访问的利益在于它可以实现跨网络的长途通信,使得设备可以在不同的地方进行控制和监控。同时,MQTT协议具有轻量级、高效、可靠等特点,可以在低带宽、不稳固网络环境下稳固运行。此外,MQTT协议还支持多种编程语言和平台,方便开发者进行二次开发和集成
下面先容在Linux中搭建Mosquitto MQTT协议消息服务端,并结合Cpolar 内网穿透工具实现长途连接!
1. Linux 搭建 Mosquitto

本例在centos 7体系,利用yum 一键安装:
  1. yum install mosquitto -y
复制代码
安装完成后,下面是一些操作Mosquitto服务下令
  1. sudo systemctl start mosquitto     # 启动 Mosquitto 服务
  2. sudo systemctl stop mosquitto      # 停止 Mosquitto 服务
  3. sudo systemctl restart mosquitto   # 重新启动 Mosquitto 服务
  4. sudo systemctl status mosquitto    #检查服务器状态
复制代码
实行启动下令后,输入查看状态,我们可以看到服务已经运行成功了,本地安装成功了,下面安装cpolar工具,穿透Mosquitto 服务的本地1883端口,实现长途访问连接.

2. Linux 安装Cpolar

上面我们安装成功了Mosquitto MQTT服务器,下面我们在Linux安装cpolar内网穿透工具,通过cpolar 转发本地端口映射的公网地址,我们可以很容易实现长途访问,而无需自己注册域名购买云服务器.下面是安装cpolar步调
   cpolar官网地址: https://www.cpolar.com
  

  • 利用一键脚本安装下令
  1. curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash
复制代码


  • 向体系添加服务
  1. sudo systemctl enable cpolar
复制代码


  • 启动cpolar服务
  1. sudo systemctl start cpolar
复制代码
cpolar安装成功后,在外部欣赏器上访问Linux 的9200端口即:【http://局域网ip:9200】,利用cpolar账号登录,登录后即可看到cpolar web 配置界面,结下来在web 管理界面配置即可

3. 创建MQTT服务公网连接地址

登录cpolar web UI管理界面后,点击左侧仪表盘的隧道管理——创建隧道:


  • 隧道名称:可自界说,注意不要与已有的隧道名称重复
  • 协议:tcp
  • 本地地址:1883 (本地默认端口)
  • 域名类型:暂时随机TCP端口
  • 地区:选择China VIP
点击创建

然后打开左侧在线隧道列表,查看刚刚创建隧道后生成的tcp地址,这个地址就是公网连接地址,我们可以在任意设备上利用该地址进行连接

4. 客户端长途连接MQTT服务

上面在cpolar中创建了 公网地址,下面我们利用MQTT客户端工具mqttfx进行长途连接测试,假如没有该客户端,可以进入官方下载:https://softblade.de/en/download-2/,下载后安装打开,点击设置图标

通过cpolar公网地址进行连接,Address值为公网地址,Port 值为公网地址背面临应的端口号,输入完点击应用

然后回到主界面,点击connect,灯变为绿色,表示连接成功

我们可以测试,是否可以发布消息和订阅,起首在Subscribe订阅界面填写一个topic 订阅ID,然后点击按钮Subscribe,开始订阅

然后在Publish 发布界面,输入同样的topic ID,然后输入必要发布的消息,点击按钮Publish

回到Subscribe订阅界面,我们可以看到,成功订阅到了该条信息

5. 代码调用MQTT服务

同样 我们在代码层面进行连接,以Java 为例,导入相干包
  1.   <dependency>
  2.             <groupId>org.eclipse.paho</groupId>
  3.             <artifactId>org.eclipse.paho.client.mqttv3</artifactId>
  4.             <version>1.1.0</version>
  5.         </dependency>
复制代码
然后利用Cpolar 公网地址进行连接,输入ClientID,向同一个topic进行发布消息,固然,这边测试,地址是写在内部,如生产环境,发起将地址进行外部配置,有助于方便后续修改

程序运行后,我们可以看到,在客户端Subscribe 界面工具上,看到了我们代码中发布的消息数据,也是可以连接测试成功

6. 固定连接TCP公网地址

要注意的是,以上步调利用的是随机暂时tcp端口地址,所生成的公网地址为随机暂时地址,该公网地址24小时内会随机厘革。我们接下来为其配置固定的TCP端口地址,该地址不会厘革,设置后将无需天天重复修改地址。
   配置固定tcp端口地址必要将cpolar升级到专业版套餐或以上。
  保存一个固定tcp地址,登录cpolar官网,点击左侧的预留,找到保存的tcp地址,我们来为我的世界保存一个固定tcp地址:


  • 地区:选择China
  • 形貌:即备注,可自界说
点击保存

地址保存成功后,体系会生成相应的固定公网地址,将其复制下来

打开cpolar web ui管理界面,点击左侧仪表盘的隧道管理——隧道列表,找到我们上面创建的TCP隧道,点击右侧的编辑

修改隧道信息,将保存成功的固定tcp地址配置到隧道中


  • 端口类型:修改为固定tcp端口
  • 预留的tcp地址:填写官网保存成功的地址,
点击更新

隧道更新成功后,点击左侧仪表盘的状态——在线隧道列表,可以看到公网地址已经更新成为了固定TCP地址。

7. 固定地址连接测试

固定好了地址后,程序中修改成我们固定的TCP地址进行连接,固然,这边测试,地址是写在内部,如生产环境,发起将地址进行外部配置,有助于方便后续修改

可以看到吸收订阅到了发送的消息,一个永久不变的固定地址就设置好了


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

何小豆儿在此

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表