Ubuntu笔记本Mosquitto MQTT Broker无法被手机/ESP32连接求助
问题:Ubuntu搭建的Mosquitto MQTT Broker无法被手机/ESP32远程连接
我在Ubuntu笔记本上部署了Mosquitto MQTT Broker,尝试通过手机热点或WiFi路由器让手机和ESP32连接,但始终无法成功。不过在本地两个终端中,通过-h指定本机IP可以正常完成发布和订阅操作。
已做操作
- 开启匿名访问权限
- 使用默认1883端口
- 关闭ufw防火墙
- 尝试过不同配置文件,问题未解决
启动命令
mosquitto -c /home/harsh/test.conf -v
配置文件内容
listener 1883 0.0.0.0 allow_anonymous true
启动日志
1696688646: mosquitto version 2.0.18 starting 1696688646: Config loaded from /home/harsh/test.conf. 1696688646: Opening ipv4 listen socket on port 1883. 1696688646: mosquitto version 2.0.18 running
排查建议
确认设备在同一网络段
手机、ESP32必须和Ubuntu笔记本连接到同一个WiFi热点/路由器,检查三者的IP地址是否属于同一网段(比如都是192.168.43.x或192.168.1.x)。测试Broker的网络可达性
- 用手机端的MQTT测试工具(如MQTT Explorer),输入Ubuntu的局域网IP(不要用127.0.0.1)、1883端口,选择匿名登录尝试连接。
- 也可以在手机端用telnet命令测试:
telnet [Ubuntu局域网IP] 1883,如果能建立连接说明端口是通的,问题可能在MQTT配置;如果连不上,说明网络层面有阻断。
确认Broker的监听状态
在Ubuntu终端执行netstat -tulpn | grep 1883,检查输出是否显示mosquitto在监听0.0.0.0:1883(表示监听所有网络接口),而不是仅监听127.0.0.1(仅本地访问)。关闭AP隔离功能
部分手机热点或路由器默认开启“AP隔离”(又称客户端隔离),会阻止同一网络内的设备互相访问。进入热点/路由器设置界面,找到该选项并关闭后重试。检查ESP32代码配置
确保ESP32代码中指定的MQTT Broker地址是Ubuntu的局域网IP,端口为1883,且未启用SSL/TLS(当前配置为明文连接)。示例代码片段:const char* mqtt_server = "192.168.43.100"; // 替换为你的Ubuntu局域网IP const int mqtt_port = 1883;
内容的提问来源于stack exchange,提问作者Harsh Jangid
相关产品推荐
相关产品推荐

