问题描述

环境:阿里云服务器Ubuntu 22.04.3 LTS,安装mosquitto后,在虚拟机端订阅消息出现报错(以前用阿里云Ubuntu20.04 LTS的服务器装上就能用),以下服务器ip是我乱填的

1
2
3
mosquitto_sub -t /iotstuff -h 129.25.125.124 -p 1883

Error: Connection refused

解决办法

云服务器ECS -> 安全组 -> 安全组详情,看看有没有添加1883端口为白名单,出方向入方向都要配置

查看服务器的端口占用情况

1
netstat -lnpt

发现moquitto侦听的ip是127.0.0.1:1883,其中127.0.0.1代表的是本地的局域网ip,如果想要在公网访问是不行的,打开mosquitto.conf文件,设置允许公网访问

1
listener 1883

允许客户端不需要用户名和密码进行访问

1
allow_anonymous true

重启mosquitto服务后发现虚拟机端订阅消息就能连上

1
service mosquitto restart

如果还是连不上,check一下系统防火墙状态

1
2
ufw status 		# 查看防火墙状态
ufw add 1883 # 添加1883端口到白名单

问题相关

① publisher报错(这个是由于没有开启匿名访问)

1
error: MQTT_ERROR_SOCKET_ERROR

② 还有subscriber连接报错(这个同样是由于没有开启匿名访问)

1
2
3
hywing@moore:~$ sudo  tail -f /var/log/mosquitto/mosquitto.log
1753085443: New connection from 192.168.55.142:56888 on port 1883.
1753085443: Client <unknown> disconnected, not authorised.

③ broker拒绝访问(没有开启任意IP侦听:listener 1883 0.0.0.0

1
2
root@myd-lmx91:~# ./simple_subscriber 192.168.55.88 1883 test
Failed to open socket: : Connection refused

参考

mosquitto.conf man page | Eclipse Mosquitto


『 下里巴人 』
海纳百川,文以载道
hywing技术自留地
总访问 113701 次 | 本页访问 326