MQTT服务器Mosquitto的使用及配置过程中的一些问题和解决方法
最近在学习MQTT协议及MQTT协议的模糊测试,避免不了要搭建MQTT服务器,网上有很多MQTT服务器的介绍,这里选用了Mosquitto作为MQTT服务器。在搭建Mosquitto服务器的过程中遇到了一些问题,在搜寻资料以后发现有些问题的解决方法没有整合,所以打算写篇文章整合一下。 Mosquitto下载
Mosquittio下载的网址还是贴一下吧,虽说百度也查得到。
链接:
有多种操作系统的资源下载,这里选择的是windows64位系统的版本。
Mosquitto配置过程中的一些问题和解决方案
下载安装了Mosquitto以后,到Mosquitto文件所在的文件夹进入命令行窗口就可以使用了。
开启Mosquitto服务以后出现local only mode 的情况
这里需要配置一下mosquitto.conf文件。打开这个文件,找到listener的配置,将#删除再在listener后面加一个固定的端口1883。这个文件里的listener可能比较多,找到#listener port-number [ip address/host name/unix socket path]这句后面的那个listener。
然后找到allow_anonymous false,将false修改为true。
然后启动Mosquitto服务的时候使用配置文件启动。
这样就没有出现local only mode 的情况了,如果出现local only mode ,则MQTT服务就只能在一台主机上进行,别的客户端想要连到MQTT服务器进行MQTT通信是不行的。
连接失败或者目标计算机积极拒绝连接
可能是防火墙的问题。需要将服务器端和客户端的防火墙关闭,或者配置一下防火墙。
Connection Refused:not authorised
Mosquitto服务器要进行MQTT通信的话,客户端订阅需要加上用户名和密码。而客户端的用户名和密码需要在服务器端上注册。Mosquitto服务器注册用户名和密码是通过mosquittto_passwd修改pwfile.example文件进行的。这里网上的资料也有,有个问题就是注册以后还需要到mosquitto.conf文件中加上一行password_fle 路径\pwfile.example,不然通过这个配置文件启动的时候,Mosquitto服务器不知道客户端有没有注册过。注意修改之后要多一行空行。
之后客户端就可以通过mosquitto_sub -t topic -h Mosquitto服务器端的IP地址 -u 用户名 -P 密码 进行订阅MQTT服务。客户端订阅MQTT服务之前,服务器端的Mosquitto服务需要打开。
Mosquitto的使用 Mosquitto启动服务
mosquitto -v
mosquitto -c 配置文件 -v
Mosquitto注册用户名和密码
mosquitto_passwd -H sha512 -c -b pwfile.example -u username -P password
第一次注册,需要用-c创建一个新的密码文件,或者说可以用-c覆盖掉原先的密码文件。
mosquitto_passwd -H sha512 -b pwfile.example username password
添加新的用户名和密码。
如果不使用用户密码登录mosquitto服务器,则需要在mosquitto.conf文件最后加上一条allow_anonymous true。