目前,我正在成功运行一个 mosquitto 代理,订阅主题并与本地网络中的客户端发布消息。
如何与位于不同 IP 地址的另一个本地网络通信?
我应该设置 2 个 mosquitto 代理,每个本地网络一个吗?
目前,我正在成功运行一个 mosquitto 代理,订阅主题并与本地网络中的客户端发布消息。
如何与位于不同 IP 地址的另一个本地网络通信?
我应该设置 2 个 mosquitto 代理,每个本地网络一个吗?
其他本地网络中的 PC 需要可以从 Internet 访问,因此如果它位于防火墙后面,则需要在路由器内部设置端口转发规则。该规则需要将流量从公共 IP 地址转发到代理的内部 LAN 私有 IP 地址。
请记住,MQTT 使用端口 1883 和 8883(用于 SSL)。
因为mqtt
使用tcp
连接,所以还有一种安全的方法可以做到这一点,如下所示:
防火墙后面的私人经纪人 A。B 私人经纪人 B 在另一个防火墙后面。C 云经纪人 C 在互联网上。
在两个方向上设置桥 A 到 C。这必须在 A 上配置。tcp
到 Internet 的安全链接将由 A 创建。
在两个方向上设置桥 B 到 C。这必须在 B 上配置。tcp
到 Internet 的安全链接将由 B 创建。
这将创建一个更安全的网桥,即使您无法控制路由器或防火墙,也可以这样做。
这一切都取决于您的系统需要如何工作,但您可以使用多个代理(每个网络中的一个),然后创建所谓的代理之间的桥梁。
这样做的好处是,如果出现网络中断,每个网络都可以独立于其他网络继续工作。
桥接器还允许您控制在站点之间共享哪些消息。如何创建网桥的详细信息在 mosquitto.conf 手册页中:
http://mosquitto.org/man/mosquitto-conf-5.html
但正如 Paolo 所说,您需要在路由器上为端口 1883/8883 设置端口转发,以将代理公开到 Internet。
以下是允许在私人空间(家庭)内公共连接到 MQTT 服务器的步骤
公共端口 1883 应该转发到私有端口 1883 转发该端口上的请求的 IP 地址应该是您家庭/私有网络中 MQTT 服务器/PC 的 IP 地址
在#listener port-number [ip address/host name] 下添加 line listener 1883 0.0.0.0 这将允许来自 1883 端口上的任何源的请求由您的 MQTT 处理
经过多次试验和错误以及许多不同的配置更改,我可以按照上述步骤成功地将我的 MQTT 服务器开放给公共/互联网流量。