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

Mosquitto MQTT发布消息时出现“Connection was lost”错误排查求助

MQTT连接故障排查(工作Windows主机)

问题描述

在工作用Windows主机上安装Eclipse Mosquitto 2.0.21后,测试MQTT功能出现异常:

  • 订阅命令:

    "C:\Program Files\mosquitto\mosquitto_sub" -h test.mosquitto.org -p 1883 -t Test/meinTest
    

    订阅端反复输出:Client null sending CONNECT

  • 发布命令:

    "C:\Program Files\mosquitto\mosquitto_pub" -h test.mosquitto.org -p 1883 -t Test/meinTest -m "Hallo"
    

    发布端输出:

    Client null sending CONNECT
    Error: The connection was lost
    

ping test.mosquitto.org连通正常,但家用Linux Mint笔记本执行相同操作无问题,怀疑是工作环境防火墙或网络策略导致。


排查及解决方法

1. 检查Windows本地防火墙规则

  • 打开Windows Defender防火墙 → 高级设置 → 出站规则,确认是否允许mosquitto_sub.exe和mosquitto_pub.exe访问网络。
  • 若无对应规则,手动添加:
    1. 新建出站规则 → 程序 → 选择C:\Program Files\mosquitto\mosquitto_sub.exe
    2. 允许连接 → 根据工作网络环境勾选域、专用、公网
    3. 命名规则(如「Mosquitto订阅工具」),重复操作添加mosquitto_pub.exe的规则

2. 验证MQTT端口是否被拦截

  • 用telnet测试1883端口连通性:
    telnet test.mosquitto.org 1883
    
    若提示无法打开连接,说明端口被工作网络拦截。
  • 也可使用PowerShell替代telnet:
    Test-NetConnection test.mosquitto.org -Port 1883
    
    查看TcpTestSucceeded字段,若为False则端口不通。

3. 配置工作网络代理

工作环境若有HTTP/HTTPS代理,需为Mosquitto工具指定代理(以socks5代理为例,替换为实际代理地址和端口):

  • 订阅命令:
    "C:\Program Files\mosquitto\mosquitto_sub" -h test.mosquitto.org -p 1883 -t Test/meinTest --proxy socks5://proxy.example.com:8080
    
  • 发布命令:
    "C:\Program Files\mosquitto\mosquitto_pub" -h test.mosquitto.org -p 1883 -t Test/meinTest -m "Hallo" --proxy socks5://proxy.example.com:8080
    
    注意:代理类型需根据实际环境调整,可能是http或socks5

4. 尝试MQTT TLS加密端口(8883)

多数网络环境会放行加密端口,尝试连接8883端口:

  • 订阅命令:
    "C:\Program Files\mosquitto\mosquitto_sub" -h test.mosquitto.org -p 8883 -t Test/meinTest --cafile "C:\Program Files\mosquitto\ca_certificates\mosquitto.org.crt"
    
  • 发布命令:
    "C:\Program Files\mosquitto\mosquitto_pub" -h test.mosquitto.org -p 8883 -t Test/meinTest -m "Hallo" --cafile "C:\Program Files\mosquitto\ca_certificates\mosquitto.org.crt"
    
    Mosquitto安装目录的ca_certificates文件夹通常包含测试服务器证书,若无则手动下载对应证书

5. 联系网络管理员确认策略

若以上步骤均无效,大概率是工作网络的防火墙/IDS设备拦截了MQTT流量,需联系公司网络管理员:

  • 确认是否允许访问外部MQTT服务器(test.mosquitto.org)
  • 确认1883/8883端口是否在放行列表中
  • 询问是否需要使用企业内部MQTT代理服务器

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 04:51:04