在之前的文章中,我们已经介绍了如何自建一个MQTT服务器。但我们所建立的服务器只能在本地的局域网中请访问,在本文中,我们将利用内网穿透功能来使我们的服务器可以让公网中的客户端进行请访问。如此,我们不管身处何地,只要能连上互联网,就可以访问我们自建的MQTT服务器。
首先,我们需要用到一个支持内网穿透的工具,本文所用的是贝锐公司的花生壳工具
官网地址:https://console.hsk.oray.com
我们首先需要注册一个帐号,并办理实名认证,这里就不详细说明了。
如果通过了实名认证,登陆后可以免费领取两个内网穿透的映射,每个月一共有1G的流量,看着并不多,但我们主要是用于MQTT协议,用来测试或个人小范围使用是足够的。
我们先下载花生壳工具并安装:https://hsk.oray.com/download/
新增映射
安装完成后,运行花生壳工具并登陆,介面如下:
我们点击新增映射,会进入新增映射的页面:
映射类型:选择“TCP”
TCP类型:选择"普通TCP"
映射模版:可以不选,也可以随便选一个
外网域名:会免费赠送一个,选这个就可以
外网端口:固定端口需要购买,我们选择动态端口(会随机生成一个端口,在短时间的测试中,生成的动态端口并不会变动,但在删除映射重新新增映射后会发生改变)
内网主机:我们可以在CMD中用ipconfig命令查看本机的肉网IP
内网端口:我们的MQTT服务器主要用到两个端口1883和61614,这取决于你的服务器的设置,这里我们选择1883
点击确定,如果正确,我们就可以生成一个内网穿透的映射了。
这时,我们回到软件界面,如果你的MQTT服务器并未启动,会发现有连接失败的提示
没有关系,我们启动MQTT服务器(方法在之前的文章中)后,点击刷新:
如果成功:
下面,我们测试用MQTT客户端工具测试连接,首先,我们在工具中查看一下我们 的服务器外网地址和外网端口:
在这里,我们可以看到外 网地址和端口,注意,因为我们选择的是动态端口,所以,这里要改成你生成的端口。
测试连接
这里用MQTTX客户端工具来测试连接到服务器:
分别填入你的外网地址和外网端口,如果你的服务器设置了权限登陆,请注意填入用户名和密码。
新增另一个映射
下面,我们新增并设置另外一个映射到61614端口的连接,除了端口不同,其它的设置都和之前的设置是一样的。
此时,我们生成的映射的端口和之前的也是有所不同的
同样,我们用MQTTX工具来进行连接测试:
注意:因这这个端口我们用的是WebSocket协议,所以,服务器地址前缀要改成ws://
网址是和之前的外网网址相同的,端口需要改为新增的这个映射的端口。
最后需要注意的是,使用内网穿透功能的过程中,我们的花生壳工具需要在电脑上保持运行,如果退出,将失去内网穿透功能。
正常情况下,我们的电脑功率比较大,而MQTT服务器如果只是个人或小范围使用,并不需要高性能高功耗的电脑来做为服务器。在以后的文章里,会介绍用树莓派(也可以说是基于LINUX系统的低功耗的主机)来建立一个MQTT服务器。