ESP8266连接Windows及Ubuntu下Mosquitto broker失败求助
根因定位
MQTT返回rc=-2代表TCP连接建立失败,客户端无法访问指定的broker IP与端口,与MQTT层的认证、权限配置无关。
优先采用Ubuntu虚拟机解决方案(成功率更高)
- 调整Mosquitto默认监听配置
Mosquitto 2.0+默认仅绑定127.0.0.1本地回环地址,需手动修改/etc/mosquitto/mosquitto.conf,文末追加两行配置:
执行listener 1883 0.0.0.0 allow_anonymous truesudo systemctl restart mosquitto重启服务生效。 - 修正VMware网络模式
将虚拟机网络适配器从默认NAT模式切换为桥接模式,勾选「复制物理网络连接状态」,重启虚拟机后确认虚拟机IP与ESP8266连接的WiFi处于同一网段。 - 放行Ubuntu端口
临时关闭防火墙验证:sudo ufw disable,或永久放行1883端口:sudo ufw allow 1883/tcp。 - 验证监听状态
执行ss -tulnp | grep 1883,确认输出存在0.0.0.0:1883监听记录,而非仅127.0.0.1:1883。 - 跨设备连通性测试
用同一WiFi下的其他设备执行telnet <虚拟机IP> 1883,无报错则说明端口可正常访问,再更新ESP8266代码中的broker IP为桥接后的虚拟机IP即可。
Windows环境备选方案
- 编辑Mosquitto安装目录下的
mosquitto.conf,同样追加listener 1883 0.0.0.0与allow_anonymous true配置。 - 直接双击
mosquitto.exe前台启动broker(避免后台服务权限异常),临时关闭Windows Defender防火墙后测试,确认Windows主机IP与ESP8266同属一个WiFi网段。
内容的提问来源于stack exchange,提问作者m0ss
相关产品推荐
相关产品推荐

