多重路由MQTT服务器实操

一、 项目背景

        在局域网内,存在多套设备需要相互交换信息。而各种设备是可更换或删除,整个局域网内部软件架构和各设备软件的外部接口基本不变。看来唯一的存在的就是路由了。哈哈。

        设计一个以路由为中心的处理信息系统,可以连接局域网内部的各个设备。各设备也可通过路由与公网或上一级路由通讯。

二、 工作与实验步骤:

         1)制作wifi lan路由(选了各wifi6模组,发热量奇大),各种终端设备,使用wifi,lan等形式连接到路由上。

          2) 路由wan接上一级路由,还有用5G接公网(为什么现在5G模块不能用固定IP?就是不行了啊!)。在不同插拔wan网线时(wan网线接的上一级路由也可以上公网)会照成本路由(openwrt lede 17.01)系统混乱,不能上网,可以使用 uhdcpc -i xxx (xxx时你的网卡识别,可以用ifconfig获得)来选用那个DHCP 的DNS,否则不能上网。

         3) 在路由上安装MQTT服务器,要把opkg的源处理好,否则luci界面里的可用软件很少,或者根本不对。可以选用以下的源,把https改成http,把 config里面的#option check_signature 1  注释掉(前面添加#)。

         src/gz reboot_core http://archive.openwrt.org/releases/17.01.7/targets/ramips/mt7621/packages/
        src/gz reboot_base http://archive.openwrt.org/releases/17.01.7/packages/mipsel_24kc/base/
        src/gz reboot_luci http://archive.openwrt.org/releases/17.01.7/packages/mipsel_24kc/luci/
        src/gz reboot_packages http://archive.openwrt.org/releases/17.01.7/packages/mipsel_24kc/packages/

        源设置好以后就可以使用使用命令行 opkg update; opkg install mosquitto mosquitto_client libmosquitto; 最后一个openwrt系统应该时自带的,可以装也可以不装。

        4) 输入 mosquitto -c /etc/mosquitoo/mosquitoo.conf -d 启动mqtt服务器。在luci的启动项脚本中,在exit(0) 也键入这个命令,这样路由启动时就可以启动了。(不要修改mosquito.conf的脚本 ,没有测试完成前不要修改这个脚本,不要以为改这个脚本的IP就可以能够连上上层路由的mqttclient。十分痛苦的教训)

       5)在luci 防火墙上设置端口转发,把设置wan 的1883 端口转发到 本地路由IP地址和1883端口。(非常关键,否则上级路由所带的机器不能连接这个路由的MQTT服务器)

       6) 在各个嵌入式设备上安装mosqiuitto_client 或mqtt测试工具(mqttbox等),在不同网段进行测试。完毕。

三 设置账号密码

        修改 /etc/mosquitto.conf 添加  

                        allow_anonymous false

                        password_file /etc/mosquitto/pwfile

        然后 touch /etc/mosquitto/pwfile & vi pwfile (pwfile是用来放账号和密码的文件)vi pwfile

                添加 root:admin (添加了一个账号为root,密码为admin)然乎在测试软件中账号和密码填上就可以连接。在ubuntu上是需要用mosquitto_passwd 来生成密码的。openwrt不知为何没有这个命令。可能是一般用TLS或CLI的缘故吧(以后用到再研究)。

              在安装时用mosquito_ssl mosquitto_client_ssl 就有 加密的mosquitto_passward,(nosslh和ssl只能安装一个)

                   

四、 备注

        有些人认为mqtt不稳定,说有时候发现会收不到数据,我现在用的时mosquitoo 3.1版本的,测试中没有发现问题。

        我怀疑是否在mosquitto_sub -t '/topic/#+/topic/' 这些叠加订阅主题。而在moquito.cfg里有个设置时对这个订阅加入时同一个客户端的话就只发一次。设置很多,要都搞懂需要花好多时间,测试正常后把账号和密码加上去

猜你喜欢

转载自blog.csdn.net/jb_mai/article/details/130268752