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

Windows 11下Mosquitto 2.0.15 Websocket端口监听异常求助

Mosquitto 2.0.15 Websocket端口在Windows 11上无法监听(日志显示正常但端口无Listen状态)

问题背景

两台软硬件完全一致的Windows 11机器部署Mosquitto 2.0.15,使用以下相同配置:

allow_anonymous true

listener 1883 0.0.0.0

listener 8883 0.0.0.0
protocol mqtt
cafile C:\Program Files\mosquitto\certs\ca.crt
certfile C:\Program Files\mosquitto\certs\server.crt
keyfile C:\Program Files\mosquitto\certs\server.key
tls_version tlsv1.2

listener 9001 0.0.0.0
protocol websockets
cafile C:\Program Files\mosquitto\certs\ca.crt
certfile C:\Program Files\mosquitto\certs\server.crt
keyfile C:\Program Files\mosquitto\certs\server.key
tls_version tlsv1.2

log_type all
log_timestamp true
log_timestamp_format %Y-%m-%dT%H:%M:%S
connection_messages true

注:allow_anonymous设为true仅用于测试,正式环境将采用用户名/密码认证。

第一台机器执行启动命令mosquitto -c 'C:\Program Files\mosquitto\mosquitto.conf' -v后,日志显示所有端口正常绑定:

2023-12-06T15:41:22: mosquitto version 2.0.15 starting
2023-12-06T15:41:22: Config loaded from C:\Program Files\mosquitto\mosquitto.conf.
2023-12-06T15:41:22: Opening ipv4 listen socket on port 1883.
2023-12-06T15:41:22: Opening ipv4 listen socket on port 8883.
2023-12-06T15:41:22: Opening websockets listen socket on port 9001.
2023-12-06T15:41:22: mosquitto version 2.0.15 running

通过Get-NetTCPConnection -LocalPort 9001可确认端口处于Listen状态,1883和8883端口状态也正常。

但第二台机器使用相同配置启动后,日志同样显示三个端口已绑定,然而Get-NetTCPConnection -LocalPort 9001无法查到该端口的监听记录,1883和8883端口正常。已确认9001端口未被其他应用占用,更换Websocket端口后问题依旧。

解决方案

  • 检查Windows防火墙规则
    即使两台机器软硬件一致,防火墙规则可能存在差异。可临时关闭Windows防火墙测试是否能正常监听9001端口,若测试有效,手动添加入站规则:打开控制面板→Windows Defender防火墙→高级设置→添加入站规则,允许TCP端口9001,或直接允许mosquitto.exe程序通过防火墙。

  • 重新安装Mosquitto以验证Websocket组件
    Mosquitto的Websocket功能依赖libwebsockets库,第二台机器可能存在组件损坏或未正确安装的情况。重新下载Mosquitto 2.0.15安装包,覆盖安装第二台机器的Mosquitto,确保libwebsockets相关文件完整。

  • 以管理员权限启动Mosquitto
    Windows下部分端口操作需要管理员权限,即使日志显示绑定成功,实际可能因权限不足无法完成监听。右键命令提示符/Windows Terminal选择「以管理员身份运行」,执行启动命令:

    mosquitto -c "C:\Program Files\mosquitto\mosquitto.conf" -v
    

    注意路径使用双引号避免空格解析问题。

  • 检查IPv6监听状态
    配置中使用0.0.0.0仅绑定IPv4,但Mosquitto可能默认同时绑定IPv6地址。执行以下命令查看IPv6端口监听情况:

    Get-NetTCPConnection -LocalPort 9001 -AddressFamily IPv6
    

    若发现仅在IPv6上监听,可在websocket listener配置中明确指定listener 9001 ::强制IPv6,或保持listener 9001 0.0.0.0确保IPv4监听。

  • 检查系统事件日志与证书权限
    打开事件查看器→Windows日志→应用程序日志,搜索Mosquitto相关错误信息,可能存在控制台日志未显示的底层问题(如证书文件读取权限不足)。检查证书文件ca.crt、server.crt、server.key的权限,确保Mosquitto运行用户拥有读取权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 13:56:03