Wie vermeide ich die Portweiterleitung, wenn IoT-Geräte dem externen Internet ausgesetzt werden?


15

Ich habe einige gute Antworten auf die Frage erhalten. Was brauche ich, um eine eigene Cloud für IoT-Geräte zu erstellen? Und eines der Dinge, die ich von dort verstanden habe, ist, dass ich meinen HUB oder GATEWAY dem externen Internet "aussetzen" muss. Die vorgeschlagene Lösung hierfür ist die Portweiterleitung .

Ich habe diese Frage als separate Frage angelegt, da es schwierig wäre, alle Antworten richtig zu kommentieren, da sich jemand verirren könnte. Diese Informationen können auch für jemanden mit einer ähnlichen Frage nützlich sein.

Ich mag die Idee nicht, zu meiner Routerkonfiguration zu gehen und die Portweiterleitung zu konfigurieren, da dies bedeutet, dass ich ein Gerät konfigurieren muss, das nicht zu "meinen" Geräten gehört, obwohl es Teil der IoT-Infrastruktur ist. Es muss das bereits vorhandene Heimnetzwerk so wenig wie möglich stören. Außerdem gab es Fälle, in denen ich das Administratorkennwort eines bestimmten Routers nicht kenne und es sehr schwierig war, es abzurufen.

Ich bin mir sicher, dass es einen Ausweg gibt, auch wenn dies bedeutet, dass ein leistungsfähigerer IoT-Hub Linux ausführt. Ich weiß nur nicht, woran das liegen könnte. Es ist in Ordnung, einen etwas komplexeren HUB zu haben, wenn diese "alternative" Art die Vermeidung dieser Portweiterleitungskonfiguration ermöglicht.

Ich bin mir sicher, dass es eine Möglichkeit gibt, darüber nachzudenken, wie Anwendungen wie Team Viewer die Portweiterleitung nicht konfigurieren müssen.

Die Frage ist also, ob jemand eine Möglichkeit kennt, ein eingebettetes IoT-Gerät dem externen Internet "auszusetzen", um von überall auf der Welt darauf zuzugreifen, ohne dass eine Portweiterleitung erforderlich ist.

Antworten:


10

Wenn Sie Ihren Router nicht weiterleiten können, müssen Sie möglicherweise auf das Lochen zurückgreifen :

Das Lochen ist eine Technik in Computernetzwerken zum Herstellen einer direkten Verbindung zwischen zwei Teilnehmern, bei denen sich einer oder beide hinter Firewalls oder hinter Routern befinden, die Network Address Translation (NAT) verwenden. Um eine Lücke zu schließen, stellt jeder Client eine Verbindung zu einem uneingeschränkten Drittanbieter-Server her, auf dem externe und interne Adress- und Portinformationen für jeden Client temporär gespeichert werden. Der Server leitet die Informationen jedes Clients an den anderen weiter und verwendet diese Informationen, um eine direkte Verbindung herzustellen. Aufgrund der Verbindungen, die gültige Portnummern verwenden, akzeptieren restriktive Firewalls oder Router die eingehenden Pakete auf jeder Seite und leiten sie weiter.

Das NAT auf Ihrem Router bedeutet, dass Clients außerhalb Ihres Netzwerks keine Verbindung zu offenen Ports von Geräten innerhalb Ihres Netzwerks herstellen können, aber es hindert Geräte in Ihrem Netzwerk nicht daran, eine Verbindung zu einem "Broker" herzustellen. Mit ein wenig Umleitung können Sie eine direkte Verbindung zwischen zwei Geräten herstellen, ohne tatsächlich Ports zu öffnen - genau das tun Dienste wie Skype und Hamachi.

Natürlich erfordert dies einen externen Server, um die Verbindung zu koordinieren, und Sie möchten wahrscheinlich dem Server vertrauen, der das Lochen durchgeführt hat.

Peer-to-Peer-Kommunikation über Netzwerkadressübersetzer von Bryan Ford, Pyda Srisuresh und Dan Kegel bietet eine interessante Lektüre mit weiteren Informationen zu den Mechanismen des Lochens und seiner Zuverlässigkeit.


Wunderbar! Eine Frage ist jedoch, ob sich der Server oder "Broker" eines Drittanbieters auch in meinem Haus befindet. Und zum Beispiel ein Embedded Linux Board sein? Andernfalls würde dieser Ansatz zu einem noch größeren Problem führen, wenn es darum geht, Elemente von Drittanbietern in der IoT-Bereitstellung zu haben. Wenn ein Embedded-Linux-Board dies nicht sein kann, was wäre es dann?
m4l490n

3
@ m4l490n: Es müsste sich in irgendeiner Weise außerhalb Ihres Netzwerks befinden . Ich würde mir vorstellen, dass es irgendwo ein Cloud-Server sein könnte, oder Sie könnten das Linux-Board verwenden, wenn der Port weitergeleitet würde. UDP Hole Punching funktioniert nur, wenn Sie einen Server / ein Gerät haben, auf das irgendwo im Internet öffentlich zugegriffen werden kann. Es ist nicht ideal, aber man kann nicht umgehen, dass etwas öffentlich im Internet verfügbar sein muss, um eine Verbindung herzustellen. Ich vermute, dass eine eingebettete Linux-Karte in Ihrem Heimnetzwerk keinen Vorteil bietet. Sie haben nur vorwärts zum Tor , dass anstelle des IoT - Gerät.
Aurora0001

1
Ausgezeichnet! Obwohl es nicht die direkte Absicht Ihrer Antwort und nicht die ursprüngliche Absicht meiner Frage war, verstehe ich endlich die Rolle eines Cloud-Servers in einer IoT-Infrastruktur !.
m4l490n

Wenn ich das verstehe, ist die Lücke eine Art virtuell, im Gegensatz zur Portweiterleitung, bei der der Router-Status geändert wird. Jedes Ende der Verbindung kommuniziert nur mit dem Server? Das wäre also das typische Modell für das Internet der Dinge, glaube ich, da das allgemeine Netzwerk aus vielen zu vielen besteht?
Sean Houlihane

7

In der IoT-Welt, in der Geräte nur über geringe Ressourcen verfügen, um unerwünschten Datenverkehr von externen Verbindungen zu verarbeiten, und die Notwendigkeit, alle Portweiterleitungs- und Firewallprobleme mit Routern zu behandeln, hat dies zu dem folgenden Ansatz geführt, den Sie in vielen IoT-Back-End-Lösungen sehen können:

Geräte akzeptieren keine unerwünschten Netzwerkinformationen. Alle Verbindungen und Routen werden vom Gerät nur ausgehend hergestellt. Das Gerät öffnet also ausgehende Verbindungen, sodass keine Änderungen an der Firewall / dem Router erforderlich sind und der Kanal so lange geöffnet bleibt, wie er benötigt wird.

Ein schöner Artikel über die Kommunikationsprobleme und -lösungen in der IoT-Welt.


Bei MQTT ist das Gerät ein Client (Herausgeber oder Abonnent oder beides) und initiiert die Verbindung zum Broker (Server).
Gambit Support

"Geräte haben nur geringe Ressourcen, um unerwünschten Datenverkehr von ausgehenden Verbindungen zu verarbeiten" ???? das macht überhaupt keinen sinn. Ausgehende Verbindungen können nur innerhalb des Netzwerks initiiert werden.
Chris Stratton

@ChrisStratton, ausgehende Verbindungen können mithilfe der Portweiterleitung direkt an Geräte geleitet werden, wenn NAT verwendet wird. Sie können auch eine eigene IP-Adresse haben und sind direkt über das Internet erreichbar.
Schachar

Sie scheinen die Bedeutung des Wortes "ausgehend" falsch zu verstehen und es fälschlicherweise dort zu verwenden, wo das, was Sie tatsächlich meinen, "eingehend" ist. Eine ausgehende Verbindung ist ein IoT-Gerät, das einen Cloud-Server erreicht. Bei einer eingehenden Verbindung handelt es sich um eine Verbindung außerhalb Ihres Heimnetzwerks (z. B. Ihr Telefon, während Sie die Straße entlanggehen), die versucht, auf ein Gerät in Ihrem Netzwerk zuzugreifen.
Chris Stratton

@ChrisStratton, Sie haben Recht. Als ich Outbound schrieb, meinte ich Verkehr von außerhalb, was im Grunde die "Inbound" -Verbindung für den Sensor ist. Ich habe meine Antwort bearbeitet, Danke
Schachar

3

Versuchen Sie Port Knocking . Sie müssen den Port noch weiterleiten, aber der Port ist erst dann geöffnet, wenn Sie eine geheime Kombination (die Sie auswählen) von Pings gesendet haben. Dann können Sie den Port mit einer weiteren geheimen Kombination von Pings schließen. Es kann unter Embedded Linux ausgeführt werden, z. B. WLAN-Router mit OpenWrt.


3

Obwohl ich nicht empfehlen kann, dass Sie zulassen, dass ein IoT-Gerät über das öffentliche Internet erreichbar ist, können Sie dies nativ mit IPv6 erreichen.

Wenn Ihr ISP und Ihr lokales Netzwerk für IPv6 konfiguriert sind und Ihre IoT-Geräte dies unterstützen, können sie automatisch eine IPv6-Adresse beziehen, die von überall im Internet routingfähig ist (IPv6 macht NAT und Portweiterleitung überflüssig). Sie müssen lediglich sicherstellen, dass alle Stateful Firewalls (Ihr Router) so konfiguriert sind, dass der Datenverkehr zu jedem Gerät zugelassen wird. Einige können dies (unsicher) standardmäßig zulassen.


2

Richten Sie einen VPN-Server zu Hause ein und stellen Sie von überall aus eine Verbindung her. Ich denke, dies wäre viel sicherer, als irgendeine Art von IoT-Gerät dem offenen Internet auszusetzen.


Ist das nicht nur eine Art Tor?
Helmar

Hm? Ein VPN ist eine Punkt-zu-Punkt-Verbindung (normalerweise verschlüsselt) zwischen einem Gerät und einem Netzwerk. Dadurch verhält sich das Verbindungsgerät so, als ob es Teil des Netzwerks wäre. Ich denke, Sie können sich das als Gateway vorstellen ... aber es ist ein Service.
Maurice

Sicher, aber dieser Dienst muss immer noch über den Heimrouter hinwegkommen - normalerweise durch Portweiterleitung oder ununterbrochene ausgehende Verbindungen.
Helmar

Ja, Sie müssten immer noch den Port weiterleiten, auf dem das VPN ausgeführt wird. Aber es ist sicherer, als einzelne Geräte freizulegen (obwohl dies möglicherweise weniger praktisch ist, je nachdem, was Sie erreichen möchten)
Maurice
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.