通过 Internet 连接到安装在 Raspberry Pi 上的 MQTT 代理 (Mosquitto)

Connecting to MQTT broker (Mosquitto) installed on a Raspberry Pi over the Internet

我打算创建一个非常简单的 home\office 监控系统,我将能够在 Raspberry Pi 上使用 Mosquitto 代理连接传感器。传感器会将数据发布到代理,我将能够以订阅者的身份查看数据。

我有一个发布者,它定期向同一 LAN 网络中家中的 Raspberry Pi(Mosquitto 代理)发布消息。但我想将位于我办公室的传感器连接到同一个代理,因此只能在线连接。

我目前面临的问题是我想将传感器连接到 Raspberry Pi,但由于硬件的限制,我需要通过 Internet 进行连接。如何连接传感器以从 LAN 网络外部发布到驻留在 Raspberry Pi 中的代理?我刚查了一下,我的 public IP 地址下面可能有数千个地址,我怎么知道哪个是我的并连接到它?!

在一定程度上取决于您的家庭网络。如果您的 ISP 使用所谓的“Carrier Grade NAT”(由于现在几乎没有可用的 IPv4 地址这一事实而越来越普遍),您将无法从 Internet 连接到您的本地网络。

否则您可以向内建立连接,因此您的遥感器只需要 TCP/IP 连接。 我们需要有关传感器的更多信息来向您展示如何做到这一点。要查找您的 public IP 地址,您可以从本地网络上的计算机访问 https://www.whatismyip.com/。 (要了解您是否受困于运营商级 nat,请询问您的 ISP 或对您的 public IP 地址进行反向查找,您可能会知道 )。您还需要在路由器上配置防火墙,以便它允许入站连接到您选择的端口(在外部)并将其映射到 Pi 的内部 IP 地址和在 Mosquitto 上配置的用于处理 MQTT 流量的端口。

对于运营商级 NAT,或者如果您无法配置路由器的防火墙以允许传入连接,您应该在 Internet 上的某个地方使用另一个 MQTT 代理。然后将您的 Pi 代理配置为桥接 到 Internet 代理。

Owntracks documentation有快速教程。 Mosquitto 文档中也有关于如何执行此操作的信息。

在这种情况下,您的 Pi 代理正在建立到互联网的连接,如果您没有过度阻止传出流量,这在任何 WAN 上都可以正常工作。

无论哪种情况,都不要忘记互联网上的任何流量都是不安全的。您将需要设置 SSL 证书以及 username/password 组合以保护流量。

简单!

  • 只需将端口转发(在您的本地路由器 192 中。168.x.x)添加到您的 raspberrPi ip 和 MQTT(通常是端口 1883)。
  • 然后你的传感器应该连接到互联网并发送一个 topic/payload 到你家里的 public IP 地址...

我为 android 个应用这样做 - 自己的轨道 -果汁SSH - raspicheck - 我的MQTT - openHAB - Yatse(对于 Kodi 遥控器)

但是不要忘记,当您打开一个端口时,您需要以某种方式保护它的访问... 和你的 public i.p。可以由您的 ISP (InternetServiceProvider) 自动更改