【问题标题】:Mosquitto: Starting in local only modeMosquitto:以仅本地模式启动
【发布时间】:2020-12-13 17:36:34
【问题描述】:

我有一个应该是主机的虚拟机,它可以接收和发送数据。第一张图片是我在我的主机上遇到的错误(我试图从中发送数据)。第二张图是我的虚拟机上的mosquitto登录。此外,我正在使用默认配置,据我所知,它不会导致这些问题,至少从我从其他示例中看到的情况来看。我对这一切的工作原理知之甚少,因此不胜感激。

我在主机上尝试过的:

  1. 禁用 Windows 防御者
  2. 为“mosquitto.exe”添加防火墙规则
  3. 在 linux 机器上安装 mosquitto

【问题讨论】:

  • 请勿张贴文字图片!!只需在此处发布错误文本。其次,这是一个编码问题的网站,我在这里根本看不到任何代码....更改它,否则有人会来关闭你的帖子。

标签: networking mqtt iot mosquitto


【解决方案1】:

从 Mosquitto 版本 2.0.0(您正在运行 v2.0.2)开始,默认配置将仅绑定到 localhost,以作为更安全的默认状态。

如果您希望能够从其他机器访问代理,您将需要显式编辑配置文件以添加绑定到外部 IP 地址(或 0.0.0.0)的新 listener 或添加 @默认监听器的 987654324@ 条目。

默认情况下,它也只允许来自本地主机的匿名连接(没有用户名/密码),以允许来自远程添加的匿名:

allow_anonymous true 

更多细节可以在 2.0 版本说明here中找到

【讨论】:

  • 您好!感谢您如此迅速地回复并修复我的帖子。我不能赞成你的帖子,但如果可以的话,我会的。 ;) 我决定不弄乱配置文件,只下载旧版本的 mosquitto。如果我有更多时间,我会深入研究配置文件并实际修复它。
  • 实际上只是将bind_interface devicebind_address ip_address 添加到配置文件的情况。
  • @hardillb - 最近的更新彻底毁了我的一天 - 我在 mac osX 上通过自制软件安装了这个,你知道什么配置文件吗?
  • 这是一个主要的版本号更改,所以预计会破坏。我没有mac,所以只能猜测它可能在/usr/local/etc 下(如您发布到问题的日志输出中所述)
【解决方案2】:

你必须与

mosquitto -c mosquitto.conf

mosquitto.conf,存在于与执行文件相同的文件夹中(C:\Program Files\mosquitto 等),必须包含以下行。

listener 1883 ip_address_of_the_machine(192.168.1.1 etc.)

【讨论】:

  • 谢谢! Everywhere 都在谈论在 mosquitto.conf 中定义一个监听器,但这是我遇到的第一个需要将文件指定为参数的情况。
【解决方案3】:

默认情况下,Mosquitto 代理仅接受来自本地计算机(托管代理的服务器)上的客户端的连接。 因此,您的 Mosquitto 实例需要使用自定义配置,以便接受来自远程客户端的连接。

  1. 在您的 Windows 计算机上,以管理员身份运行文本编辑器并粘贴以下文本:
listener 1883
allow_anonymous true
  1. 这会在端口 1883 上创建一个侦听器并允许匿名连接。默认情况下,连接数是无限的。使用带有“.conf”扩展名的文件名(例如“your_conf_file.conf”)将文件保存到“C:\Program Files\Mosquitto”。

  2. 打开一个终端窗口并导航到 mosquitto 目录。运行以下命令:

mosquitto -v -c your_conf_file.conf

在哪里

-c : 指定代理配置文件。

-v : 详细模式 - 启用所有日志记录类型。这覆盖 配置文件中给出的任何日志记录选项。

【讨论】:

  • 由于某种原因,当我这样运行时,我收到一条错误消息,指出 mosquitto -c /etc/mosquitto/conf.d/mosquitto.conf Gives Duplicate pid_file value in configuration & 它不喜欢第 6 行& 13. 这两行包含在默认的 conf 文件中。只是 pid_file snd include_dir。不知道我仍然做错了什么。
【解决方案4】:

我发现我不仅必须添加bind_address ip_address,还必须设置allow_anonymous true,设备才能成功连接到MQTT。当然,我知道更好的选择是在每台设备上设置用户名和密码。但这是在最低配置下一切正常工作之后的下一步。

【讨论】:

    【解决方案5】:

    您可以使用包含的“no-auth”配置文件运行它,如下所示:

    mosquitto -c /mosquitto-no-auth.conf 
    

    我在 docker 容器(使用 docker-compose 生成)中运行它时遇到了同样的问题。 在 docker-compose.yml 文件中,这是通过以下方式完成的:

    command: mosquitto -c /mosquitto-no-auth.conf 
    

    【讨论】:

      猜你喜欢
      • 2021-03-24
      • 1970-01-01
      • 2013-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-12
      相关资源
      最近更新 更多