You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

排查建议

  1. 确认设备在同一网络段
    手机、ESP32必须和Ubuntu笔记本连接到同一个WiFi热点/路由器,检查三者的IP地址是否属于同一网段(比如都是192.168.43.x或192.168.1.x)。

  2. 测试Broker的网络可达性

    • 用手机端的MQTT测试工具(如MQTT Explorer),输入Ubuntu的局域网IP(不要用127.0.0.1)、1883端口,选择匿名登录尝试连接。
    • 也可以在手机端用telnet命令测试:telnet [Ubuntu局域网IP] 1883,如果能建立连接说明端口是通的,问题可能在MQTT配置;如果连不上,说明网络层面有阻断。
  3. 确认Broker的监听状态
    在Ubuntu终端执行netstat -tulpn | grep 1883,检查输出是否显示mosquitto在监听0.0.0.0:1883(表示监听所有网络接口),而不是仅监听127.0.0.1(仅本地访问)。

  4. 关闭AP隔离功能
    部分手机热点或路由器默认开启“AP隔离”(又称客户端隔离),会阻止同一网络内的设备互相访问。进入热点/路由器设置界面,找到该选项并关闭后重试。

  5. 检查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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 23:48:34