
工业数据采集常见问题 · 工程排查指南
MQTT工业网关连接不上服务器怎么办?地址、TLS与鉴权排查
MQTT连接失败要先区分DNS、TCP端口、TLS握手和MQTT鉴权四个阶段。逐层查看日志中的超时、拒绝、证书错误或CONNACK返回码,比反复修改Topic更有效。
先检查这些信息
- Broker域名、IP和端口正确,普通TCP与TLS端口不能混用。
- 设备时间准确,CA、客户端证书、私钥和SNI与服务器要求一致。
- Client ID唯一,用户名、密码或Token未过期,账号具备连接权限。
- 连接成功但无数据时,再检查Topic、QoS、保留消息和发布权限。
建议的排查顺序
- 先测试DNS解析和Broker端口连通,排除基础网络与防火墙。
- 启用TLS时检查设备系统时间、证书链、主机名和证书有效期。
- 保存MQTT连接返回码和Broker日志,区分账号拒绝、Client ID冲突和未授权。
- 使用唯一测试Client ID连接最简单Topic,暂时减少通配符和复杂权限。
- 确认Keep Alive小于网络和平台的空闲超时,并设置合理重连退避,避免连接风暴。
症状、可能原因与判断方法
| 现象 | 重点检查 | 处理目标 |
|---|---|---|
| 连接超时 | DNS、路由、防火墙或端口 | 先查TCP层 |
| TLS握手失败 | 时间、证书链、主机名或算法 | 查证书日志 |
| 返回Not authorized | 账号、Token或ACL | 查Broker权限 |
| 频繁被踢下线 | Client ID重复或心跳超时 | 保证ID唯一 |
相关问题
MQTT端口1883和8883有什么区别?
1883通常用于明文TCP,8883常用于TLS,但实际端口由Broker配置决定,设备和服务器必须一致。
连接成功为什么订阅不到数据?
检查Topic大小写、层级、通配符、ACL、QoS及发布端是否真的在线。
两台网关能使用同一个Client ID吗?
通常不能。Broker会保留一个连接并断开另一个,应为每台设备配置唯一Client ID。
