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

如何解决MQTT Broker连接被拒:协议版本不可接受的问题?

解决MQTTX CLI连接Docker中MQTT Broker提示“MQTT协议版本不可接受”问题

核心问题分析

你添加的bridge_protocol_version mqttv311是用于MQTT桥接(Broker之间互联)的配置,对客户端连接无效。终端连接失败的本质是Broker的协议版本配置不兼容MQTTX CLI的默认版本,或者Broker未正确监听外部连接端口。

具体解决步骤

1. 修正Mosquitto Broker的协议版本配置

编辑你的Mosquitto配置文件(如果是挂载宿主机文件,直接修改宿主机对应文件;否则进入容器修改/mosquitto/config/mosquitto.conf),添加以下配置:

# 指定Broker支持的MQTT协议版本(根据你的Broker版本选择,比如v3.1.1)
protocol_version mqttv311
# 允许外部客户端连接(监听所有网络接口)
listener 1883 0.0.0.0
# 如果未配置认证,临时开启匿名访问测试(测试后建议关闭)
allow_anonymous true

修改后重启MQTT Broker容器:

docker-compose restart mqtt-broker

2. 用MQTTX CLI指定协议版本连接

在Ubuntu终端执行订阅/发布命令时,显式指定协议版本(和Broker配置一致):

  • 订阅示例:
mqttx sub -t "your/topic" -h localhost -p 1883 -V 3.1.1
  • 发布示例:
mqttx pub -t "your/topic" -h localhost -p 1883 -V 3.1.1 -m "test message"

注意:如果Broker容器映射的不是宿主机1883端口,替换成实际映射的端口;如果Broker不在本地,替换localhost为容器所在服务器的IP。

3. 验证Docker端口映射配置

检查docker-compose.yml中MQTT Broker的端口映射是否正确,确保宿主机端口和容器内部端口对应:

services:
  mqtt-broker:
    image: eclipse-mosquitto:xxx # 你的Broker镜像版本
    ports:
      - "1883:1883" # 宿主机端口:容器内部端口
    volumes:
      - ./mosquitto/config:/mosquitto/config
      - ./mosquitto/data:/mosquitto/data
      - ./mosquitto/log:/mosquitto/log

内容的提问来源于stack exchange,提问作者Angel Hadzhiev

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 11:48:25