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

Azure Ubuntu虚拟机Mosquitto MQTT Broker对外开放配置方法

解决Azure Ubuntu虚拟机上Mosquitto MQTT Broker的外部访问问题

1. 检查Mosquitto的监听绑定配置

默认情况下,Mosquitto可能仅绑定本地回环地址(127.0.0.1),导致外部设备无法连接:

  • 打开Mosquitto主配置文件:sudo nano /etc/mosquitto/mosquitto.conf
  • 找到或添加listener配置项,修改为监听所有网卡地址:
    listener 1883 0.0.0.0
    
    (0.0.0.0表示监听虚拟机的所有网卡,包含公网和内网IP)
  • 保存文件后重启Mosquitto服务:sudo systemctl restart mosquitto
  • 验证监听状态,确保服务不是仅监听localhost:sudo netstat -tulpn | grep mosquitto
    输出需包含0.0.0.0:1883或虚拟机公网IP:1883,而非仅127.0.0.1:1883

2. 配置Azure网络安全组(NSG)

Azure虚拟机的网络访问受**网络安全组(NSG)**管控,这是外部访问的核心关卡,仅配置本地ufw不足以开放端口:

  • 登录Azure门户,找到目标虚拟机,进入「网络」选项卡
  • 查看虚拟机关联的NSG,点击进入NSG配置页面
  • 添加入站安全规则:
    • 源:选择「任何」(或指定允许访问的外部IP范围)
    • 源端口范围:*
    • 目标:选择「任何」
    • 目标端口范围:1883
    • 协议:TCP
    • 动作:允许
    • 优先级:设置为比默认拒绝规则更高的数值(例如100,数值越小优先级越高)
  • 确保该规则应用到虚拟机的网络接口或子网

3. 确认Ubuntu本地防火墙(ufw)规则

再次验证本地防火墙规则是否生效:

  • 查看当前ufw状态:sudo ufw status
  • 若未看到1883/tcp ALLOW Anywhere的规则,添加规则:sudo ufw allow 1883/tcp
  • 重载ufw使规则生效:sudo ufw reload

4. 验证外部访问

完成配置后,从外部设备测试:

  • 用nmap扫描虚拟机公网IP的1883端口:nmap -p 1883 <你的虚拟机公网IP>
  • 或用MQTT客户端直接测试连接,比如订阅测试主题:mosquitto_sub -h <你的虚拟机公网IP> -t test/topic,同时在虚拟机内发布消息:mosquitto_pub -h localhost -t test/topic -m "test message",若外部能收到消息则配置成功

内容的提问来源于stack exchange,提问作者Harry Lime

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 10:12:28