2018-11-14-mqtt-mosquitto系列10之配置桥接用户名密码验证
Posted 小肥的胖
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2018-11-14-mqtt-mosquitto系列10之配置桥接用户名密码验证相关的知识,希望对你有一定的参考价值。
mosquitto
基于用户名密码的桥接
基于前一篇2018-11-13-mqtt-mosquitto系列09之配置桥接,给桥接设置用户名密码。
桥接设置用户名密码
主机128是桥接中心,129、130、131是三个普通broker。设置订阅128和129需要用户名密码验证,130和131的配置不变。
给128添加用户名密码验证
修改128主机的mosquitto.conf
# vim /etc/mosquitto/mosquitto.conf
...
# 关闭匿名模式
allow_anonymous false
# 指定密码文件
password_file /etc/mosquitto/pwfile.conf
...
设置128的登录账号密码。设置参考2018-11-10-mqtt-mosquitto系列06之mosquitto_passwd设置密码
# mosquitto_passwd -b /etc/mosquitto/pwfile.conf lxy128 lxy128
给129添加用户名密码验证
修改129主机的mosquitto.conf
# vim /etc/mosquitto/mosquitto.conf
...
# 关闭匿名模式
allow_anonymous false
# 指定密码文件
password_file /etc/mosquitto/pwfile.conf
...
129的登录账号密码
# mosquitto_passwd -b /etc/mosquitto/pwfile.conf lxy129 lxy129
桥接中心配置 - 先不设置密码
128还是作为桥接中心,注意此时还没有配置对应的用户名密码,是为了看一下不设置用户名密码情况下的情况。
# vim /etc/mosquitto/mosquitto.conf
...
# 关闭匿名模式
allow_anonymous false
# 指定密码文件
password_file /etc/mosquitto/pwfile.conf
# 桥接信息
connection bridge129
address 192.168.193.129:1883
cleansession true
topic topic/# both 0
notifications true
notification_topic notifications129
connection bridge130
address 192.168.193.130:1883
cleansession true
topic topic/# both 0
notifications true
notification_topic notifications130
connection bridge131
address 192.168.193.131:1883
cleansession true
topic topic/# both 0
notifications true
notification_topic notifications131
...
测试
开始测试,每个主机都启动mosquitto_sub监听。并在128主机中发送两条消息
# mosquitto_pub -t "topic/128" -m "i'm 128, msg to 128" -u lxy128 -P lxy128
# mosquitto_pub -t "topic/128" -m "i'm 128, msg to 128" -u lxy128 -P lxy128
期望
发送端 -> 接收端 --> 期望能收到消息的接收端 --> 实际能收到消息的接收端
128 -> 128 --> 128 129 130 131 --> 128 130 131
128结果
128能收到消息。同时可以看到,对于notifications,130,131都是1,只有129是0,说明129没连上,多个notifications129 0 说明有重复去连接129主机,为什么连不上129,原因也很简单,因为在128的桥接配置中没有配置129的账号密码。
root@ubuntu:/etc/mosquitto# mosquitto_sub -t "#" -v -u lxy128 -P lxy128
notifications129 0
notifications130 1
notifications131 1
notifications129 0
notifications129 0
topic/128 i'm 128, msg to 128
notifications129 0
topic/128 i'm 128, msg to 128
notifications129 0
notifications129 0
notifications129 0
notifications129 0
129结果
没有收到任何消息
root@ubuntu:~# mosquitto_sub -t "#" -v -u lxy129 -P lxy129
130结果
正常
root@ubuntu:~# mosquitto_sub -t "#" -v
notifications130 1
topic/128 i'm 128, msg to 128
131结果
正常
root@ubuntu:~# mosquitto_sub -t "#" -v
notifications131 1
topic/128 i'm 128, msg to 128
桥接中心配置 - 设置密码
在128中mosquitto.conf中配置129的账号密码,使用remote_username 和 remote_password。
# vi /etc/mosquitto/mosquitto.conf
...
connection bridge129
address 192.168.193.129:1883
cleansession true
topic topic/# both 0
notifications true
notification_topic notifications129
# 配置用户名密码
remote_username lxy129
remote_password lxy129
...
重新启动128的mosquitto服务。
再次测试
128发送消息
root@ubuntu:~# mosquitto_pub -t "topic/128" -m "i'm 128, msg to 128" -u lxy128 -P lxy128
128结果
这里也可以看到notifications129 1, 说明129连接正常
root@ubuntu:/etc/mosquitto# mosquitto_sub -t "#" -v -u lxy128 -P lxy128
notifications129 1
notifications130 1
notifications131 1
topic/128 i'm 128, msg to 128
129结果
现在129上可以正常收到消息了。
root@ubuntu:~# mosquitto_sub -t "#" -v -u lxy129 -P lxy129
notifications129 1
topic/128 i'm 128, msg to 128
以上是关于2018-11-14-mqtt-mosquitto系列10之配置桥接用户名密码验证的主要内容,如果未能解决你的问题,请参考以下文章