MQTT-Broker von außen zugänglich, ohne den Port in der Firewall zu öffnen?

9

Ich möchte, dass mein MQTT-Broker von außerhalb meines Heimnetzwerks zugänglich ist, aber ich zögere etwas, einen Port in der Firewall zu öffnen. Und ich möchte vermeiden, meine Heim-IP zu verwenden.

Es ist ziemlich praktisch, einen unverschlüsselten offenen Broker zu Hause zu haben, aber das funktioniert nicht, wenn ich ihn offenlegen werde. Welche anderen Optionen habe ich?

Thomas Jensen
quelle
@Bence Kaulics irgendwelche Vorschläge, was in meiner Antwort fehlt?
Hardillb
1
@hardillb Ihre Antwort ist eine gute Zusammenfassung, aber ich denke, es könnte hilfreich sein, mehr Details zu jedem Punkt zu haben. ZB wie man eine solche Brücke zwischen zwei Brokern einrichtet. Auch ich würde einfach andere Ideen kommen, wenn es welche gibt, diese Kopfgeldbeschreibung ist die beste, die ich finden konnte, Ihre Antwort steht auch für sich. Vielleicht hätte ich den Grund "Nicht genügend Aufmerksamkeit erhalten" wählen sollen.
Bence Kaulics
Als Nicht-Experte würde ich zustimmen, dass Punkt 2 (der der wertvollste Teil der Antwort zu sein scheint) etwas weiter ausgeführt werden könnte. Vielleicht mit einem Link zu einer Anleitung, jetzt sicher.
Sean Houlihane
Leider hat jeder Brokertyp eine andere Art, eine Bridge zu konfigurieren, so dass es unmöglich ist, eine generische Antwort zu geben (ebenfalls mit Authentifizierung / TLS-Setup)
hardillb

Antworten:

10

Grundsätzlich haben Sie 3 Möglichkeiten, wenn Sie keinen Port weiterleiten möchten.

  1. Verwenden Sie einen Broker in der Cloud, damit der Client von zu Hause aus immer eine Verbindung zu ihm herstellt. Verwenden Sie TLS und Authentifizierung, damit andere Benutzer keine unerwünschten Nachrichten abhören oder einspeisen können
  2. Verwenden Sie einen Cloud-Broker und richten Sie eine Brücke zwischen dem internen Broker und dem Cloud-Broker ein (Sie möchten weiterhin den Benutzernamen / das Kennwort auf dem Cloud-Broker verschlüsseln und festlegen). Dies hat den Vorteil, dass interne Dinge weiter funktionieren, wenn die Internetverbindung ausfällt.
  3. Ein VPN auf allen externen Geräten, um den Zugriff auf Ihr Heimnetzwerk zu ermöglichen (aber um ehrlich zu sein, müssen Sie wahrscheinlich entweder einen Port für das VPN öffnen oder einen Router haben, der es unterstützt, ein VPN-Server zu sein).

Das Weiterleiten eines Ports an einen ordnungsgemäß konfigurierten Port (ungefähr so ​​wie der Cloud-Broker) ist jedoch kein wirkliches Risiko.

hardillb
quelle
1
Ich mag die Cloud-Home-Bridge-Idee, die den zusätzlichen Vorteil hat, dass alle Berichtsdienste außerhalb meines Heimnetzwerks weiterhin normal funktionieren, wenn mein lokaler Broker ausfällt. Und der lokale Broker erhält die "verpassten" Daten, wenn er wieder online geht. Toll! :)
Thomas Jensen
3

Da der Broker ein Server ist, MÜSSEN Sie mindestens einen Port öffnen, damit Clients eine Verbindung herstellen können.

Ihr Problem wird also zu einem Sonderfall, wenn Sie einen Dienst im Internet verfügbar machen.

Dies wurde über DMZ durchgeführt, entweder über einen Proxy oder auf andere Weise, um eine strengere Authentifizierung als den Standarddienst zu erzwingen. Wenn Ihr Proxy in der Cloud lebt, wird Ihre DMZ nur auf die Cloud ausgedehnt.

Ihr einfachster Ansatz besteht wahrscheinlich darin, Ihren Broker zu härten (anonyme Clients zu deaktivieren) und einzuschränken, wer über die Firewall eine Verbindung zu ihm herstellen kann (nur bestimmte Client-IP-Adressen zulassen, wenn Sie diese im Voraus kennen).

Gambit-Unterstützung
quelle
3
Das ist nicht richtig, ich habe meinen lokalen Broker mit einem Cloud-Broker überbrückt. Und da die Bridge-Verbindung von meinem Heimnetzwerk aus initiiert wird, ist keine Portöffnung erforderlich.
Thomas Jensen
3

@hardillb gab eine gute Antwort, aber lassen Sie mich versuchen, ein paar Details hinzuzufügen, die einen "echten" Touch hinzufügen:

  1. Wählen Sie einen MQTT-Broker, der der Öffentlichkeit zur Verfügung steht. HiveMQ kann ein gutes Beispiel sein und Sie können mit dem Start Try-Out - Seite beschreibt , wie an den Makler verbinden:

Stellen Sie eine Verbindung zu Public Broker her

Host: macro.hivemq.com

Hafen: 1883

Websocket-Port: 8000

  1. Wählen Sie den Client aus, der am besten zu Ihnen passt, und verwenden Sie ihn für die interne Brokerverbindung mit dem öffentlichen MQTT-Broker. Ihr C-Client könnte beispielsweise Paho MQTT sein . Der Client unterstützt SSL / TLS, sodass Ihre Sicherheit auf einem hohen Niveau bleibt.

  2. Paho MQTT eingebettet kann Ihre Wahl für externe Geräte sein.

  3. HiveMQ verfügt über eine Pay-as-you-go-Lizenzierungsrichtlinie, sodass Sie diese sorgfältig prüfen können. Auf dieser Seite finden Sie eine Liste der verfügbaren Clouds und Tests der verfügbaren MQTT-Broker.

Amit Vujic
quelle