9

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

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

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

4

4 回答 4

8

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

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

于 2015-03-09T11:20:12.977 回答
4

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

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

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

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

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

于 2015-12-23T12:14:56.797 回答
3

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

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

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

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

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

于 2015-03-09T13:16:40.610 回答
0

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

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

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

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

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

  3. 重启 MQTT

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

于 2018-05-17T17:46:17.860 回答