【问题标题】:How to use MQTT over the internet?如何在互联网上使用 MQTT?
【发布时间】:2015-03-09 10:58:52
【问题描述】:

目前,我正在成功运行蚊子代理,订阅主题并与本地网络中的客户端发布消息。

如何与位于不同 IP 地址的另一个本地网络通信?

我应该设置 2 个 mosquitto 代理,每个本地网络一个吗?

【问题讨论】:

  • 对于未来的读者:端口转发您遇到的路由器,使用 canyouseme.org 或“Portforward Network Utilities”软件测试您的端口是否成功转发。向防火墙添加传入和传出规则。尝试使用其全局 IP 发布/订阅其他本地网络。

标签: networking ip mqtt mosquitto


【解决方案1】:

其他本地网络中的 PC 需要可以从 Internet 访问,因此如果它位于防火墙后面,则需要在路由器内部设置端口转发规则。该规则需要将流量从公共 IP 地址转发到代理的内部 LAN 私有 IP 地址。

请记住,MQTT 使用端口 1883 和 8883(用于 SSL)。

【讨论】:

  • 谢谢。我通过配置路由器设法打开了两个端口。我检查了“端口转发网络实用程序”软件是否打开了我的端口,并且确实如此。现在,如果我想将客户端链接到另一个本地网络中的代理,我应该使用哪个 IP 地址?我认为它必须是带有某种扩展的全局 IP,以确定我要连接到哪个本地 IP?
  • 哦,不……您只需要连接到您的全球 IP 端口 1883(或 8883)。路由器将为您完成工作,将请求转发到端口 1883(或 8883)上的本地 IP。
  • 感谢您的帮助,我设法连接了 2 个本地网络。
【解决方案2】:

因为mqtt 使用tcp 连接,所以还有一种安全的方法可以做到这一点,如下所示:

防火墙后面的私人经纪人 A。 B 私人经纪人 B 在另一个防火墙后面。 C 云代理 C 在互联网上。

在两个方向上设置桥 A 到 C。这必须在 A 上进行配置。指向 Internet 的安全 tcp 链接将由 A 创建。

在两个方向上设置桥 B 到 C。这必须在 B 上配置。到 Internet 的安全 tcp 链接将由 B 创建。

这将创建一个更安全的网桥,即使您无法控制路由器或防火墙也可以这样做。

【讨论】:

    【解决方案3】:

    这一切都取决于您的系统需要如何工作,但您可以使用多个代理(每个网络中的一个),然后创建所谓的代理之间的桥梁。

    这样做的好处是,如果出现网络中断,每个网络都可以独立于其他网络继续工作。

    桥接器还允许您控制在站点之间共享哪些消息。如何创建网桥的详细信息在 mosquitto.conf 手册页中:

    http://mosquitto.org/man/mosquitto-conf-5.html

    但正如 Paolo 所说,您需要在路由器上为端口 1883/8883 设置端口转发,以将代理公开到互联网。

    【讨论】:

      【解决方案4】:

      以下是允许在私人空间(家庭)内公共连接到 MQTT 服务器的步骤

      1. 允许在您的路由器上进行端口转发

        公共端口 1883 应该转发到私有端口 1883 在此端口上转发请求的 IP 地址应该是您家庭/私有网络中的 MQTT 服务器/PC 的 IP 地址

      2. 更新 Mosquitto 配置以允许公共侦听器

        在#listener port-number [ip address/host name]下添加线路监听器1883 0.0.0.0 这将允许来自 1883 端口上的任何来源的请求由您的 MQTT 处理

      3. 重启MQTT

      经过多次试验和错误以及许多不同的配置更改,我可以按照上述步骤成功地将我的 MQTT 服务器开放给公共/互联网流量。

      【讨论】:

      • 这不是一个好主意,因为您的设置会将未加密的流量暴露给外界
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多