Ein Gerät in meinem LAN über das Internet erreichen

5460
Engine

Ich habe ein Embedded-Gerät, das ich über Ethernet-IP programmieren kann, wenn es am selben Router mit dem PC verbunden ist:

enter image description here

Ist es möglich, den gesamten Datenverkehr über das Internet zu senden und trotzdem zu programmieren? Um es etwas klarer zu machen, so etwas wie:

enter image description here

17
"Ethernet IP"? Ist das nicht einfach ein normales LAN-Netzwerk? grawity vor 5 Jahren 6
"Programmierung über Ethernet-IP" - was genau bedeutet das? Es wäre hilfreich, wenn Sie angeben könnten, über welches Gerät und welche IDE Sie sprechen. Ich gehe davon aus, dass die IDE eine Verbindung mit dem Gerät unter einer bestimmten IP-Adresse und einem TCP-Port herstellt, um Befehle zu erhalten. slhck vor 5 Jahren 0
@grawity ja es ist ein normales LAN. Wie bei slhck verwende ich codesys IDE und ein Gerät mit codesys Runtime drauf! Engine vor 5 Jahren 0
Die naheliegende Antwort ist natürlich IPv6. Michael Hampton vor 5 Jahren 3
@MichaelHampton Es ist unwahrscheinlich, dass ein einfaches programmierbares Gerät ipv6 unterstützt rahuldottech vor 5 Jahren 0
@MichaelHampton Nicht jeder ISP unterstützt IPv6. Dean MacGregor vor 5 Jahren 0
Ihr PC ist also direkt mit dem Internet verbunden? Kein Router oder ähnliches Netzwerkgerät dazwischen? Christopher Schultz vor 5 Jahren 0
@grawity [Ethernet / IP] (https://en.wikipedia.org/wiki/EtherNet/IP) ist ein Protokoll für die industrielle Automatisierung, das nicht mit IP über Ethernet zu verwechseln ist :( richardb vor 5 Jahren 1
@richardb: Ich verstehe. Es scheint jedoch immer noch über TCP / IP und UDP / IP zu laufen. grawity vor 5 Jahren 0

5 Antworten auf die Frage

50
rahuldottech

Die einfache (und unsichere) Methode

Was Sie suchen, heißt Portweiterleitung [ 1 ]. [ 2 ] bezeichnet .

Nehmen wir zum Beispiel Folgendes an:

  • Ihr programmierbares Gerät arbeitet an einem Port 22 und hat die IP-Adresse192.168.1.5

  • Ihre öffentliche IP lautet 122.176.11.55

Dann können Sie in die Einstellungen Ihres Routers gehen und einen WAN-Port weiterleiten (z. B. 8022 ) an192.168.1.5:22 .

Jetzt können Sie von überall aus über das Internet per Fernzugriff auf das Gerät zugreifen 122.176.11.55:8022 statt 192.168.1.5:22auf Ihre IDE .

Denken Sie daran, dass sich Ihre öffentliche IP-Adresse jederzeit ändern kann, wenn Sie keine statische IP-Adresse haben. In diesem Fall sollten Sie auschecken Adresse haben . dynamischen DNS-Dienste .

HINWEIS : Wenn Ihr Gerät nicht über eine Authentifizierungsmethode verfügt, kann jemand mit böswilliger Absicht im offenen Web fast sicher darauf zugreifen. Siehe unten für eine sichere Alternative.

Die sichere (und ehrlich nicht viel kompliziertere) Methode

Hinterlassen Sie einen PC (oder Raspberry Pi oder ähnliches), die mit Ihrem Netzwerk und den Zugriff, die fern anstatt durch etwas sicher wie SSH, und dann durch sie über LAN programmieren Sie Ihr Gerät.
Dies hat auch den zusätzlichen Vorteil, dass es funktioniert, auch wenn Ihr Gerät kein TCP oder UDP verwendet :)

Ein bisschen langweilig, ja. Aber sicher.

Es wäre auch hilfreich zu bemerken, dass, wenn OP eine Portforwarding-Option für dieses Ziel aufbaut, jeder andere Benutzer auf der ganzen Welt möglicherweise den Code ändern könnte. Wenn es nicht auch irgendeine Form der Authentifizierung gibt, werden Portsniffers früher oder später den Port finden und ein Hacker versucht einzubrechen, das ist eine Garantie. LPChip vor 5 Jahren 10
@LPChip In der Tat! Ich hätte das erwähnen sollen, mein schlechtes. rahuldottech vor 5 Jahren 0
Schöne Ergänzung. :) Ich würde dir ein +1 dafür geben, aber ich habe es schon früher gegeben, denn auch ohne die Warnung war es schon eine gute Antwort. :) LPChip vor 5 Jahren 0
@ LPch hah, danke: D rahuldottech vor 5 Jahren 0
Es gibt auch die "sichere, aber kompliziertere Methode", ein VPN einzurichten. djsmiley2k vor 5 Jahren 0
@LPChip "Früher" als in Minuten oder "Später" als in 10 Sekunden? FreeMan vor 5 Jahren 0
@FreeMan später wie in, es kann Tage dauern, bis ein Bot-Crawler auf den Markt kommt, je nachdem, welchen Port Sie verwenden, aber eher in dem Sinne, dass dies, wenn Sie Pech haben, in wenigen Minuten passieren kann. LPChip vor 5 Jahren 2
Sollten Sie die Kennwortanmeldungen nicht deaktivieren und sicherstellen, dass das Gerät kein bekanntes Kennwort hat, damit SSH sicher ist? Ich weiß, dass einige vorkonfigurierte Betriebssysteme für diese Geräte über ein sehr bekanntes Kennwort auf ihren Websites verfügen. Ismael Miguel vor 5 Jahren 0
@IsmaelMiguel Natürlich sollten Sie alle offensichtlichen grundlegenden Sicherheitsfunktionen ausführen. Ich habe einfach keine Möglichkeit zu wissen, was sie in diesem speziellen Fall sind. rahuldottech vor 5 Jahren 1
@Engine Beachten Sie, dass dies nur funktioniert, wenn Sie auf diesem Gerät ein Standard-Gateway angeben können. Ansonsten erreichen Pakete das Gerät, Sie erhalten jedoch keine Antwort. Aber wirklich, bitte gehen Sie mit der zweiten Option. Es ist viel sicherer, wenn man bedenkt, dass die Dienste auf dem Gerät wahrscheinlich nicht für das öffentliche Internet gedacht sind. markusju vor 5 Jahren 0
Ich möchte erwähnen, dass SSH für diese Art von Operation GEMACHT ist. Damit können Sie anstelle von Passwörtern Verschlüsselungsschlüssel verwenden (Deaktivieren Sie das Kennwort vollständig und ziehen Sie in Betracht, den Port zu verschieben!) Und Portweiterleitung. Aufgrund der Verschlüsselungsschlüssel kann eine SSH-Verbindung sicher aus einer Batchdatei hergestellt werden, ohne dass Sie zur Eingabe eines Kennworts aufgefordert werden. Mit der Portweiterleitung können Sie sie so einrichten, dass beispielsweise der Port 44444 auf Ihrem "PC" genau funktioniert Als ob Sie zu Port 45678 auf Ihrem Remote-Gerät gegangen wären, müssen Sie nach dem Erstellen des Skripts zum Starten der Verbindung nicht noch einmal darüber nachdenken. Bill K vor 5 Jahren 0
10
Damon

Die einzig richtige Antwort kann "VPN" sein.

Die Verwendung von IPv6 würde "funktionieren" (vorausgesetzt, der Router ist nicht so konfiguriert, dass eine Firewall vom Gerät abgeschaltet wird, und alle ISPs, Geräte und Laptops unterstützen IPv6), aber es ist eine schreckliche Idee aus demselben Grund, aus der die Portweiterleitung besteht.

Abgesehen von der bekannten IPv6-Propaganda möchten Sie eigentlich nicht , dass eines der Geräte in Ihrem LAN eindeutig identifizierbar oder sogar über das Internet erreichbar ist. Nein, das ist keine gute Sache.

Portweiterleitung würde mit gutem alten IPv4 funktionieren, aber das Gerät ist nicht nur für Sie, sondern für jeden zugänglich. Niemand weiß es, also ist das kein Problem, oder?
Nun, es gibt eine Vielzahl automatisierter Port-Scanner, die rund um die Uhr laufen und zufällige Adressen / Ports scannen, in der Hoffnung, dass irgendwo irgendwo eine Antwort möglich ist. Es ist also nicht optimal, ein Gerät zu haben, das online auf eine externe Anfrage reagiert. Wenn sich ein Gerät glücklich über das programmieren lässt, was über das Netzwerk eingeht, ist dies ein Desaster-Rezept.
Das oben Gesagte gilt prinzipiell auch für VPN, aber es ist so gut wie möglich, wenn Sie Zugriff haben möchten. Das einzig wirklich sichere ist, dass es überhaupt keine Internetverbindung gibt, was aus naheliegenden Gründen keine praktische Option ist. Die nächste sichere Sache für "kein Internet" ist VPN. Genau ein Port auf genau einem Gerät (naja, es hängt davon ab, bis zu drei Ports), was VPN und nichts anderes preisgibt, portiert an das Internet.

Mit VPN können Sie - aber niemand anderes - über das Internet auf ein Gerät in Ihrem LAN zugreifen, als wären Sie im selben LAN (obwohl etwas langsamer). Es verhindert unbefugten Zugriff, bietet Vertraulichkeit und Datenintegrität.

Praktisch jeder No-Shit-Router unterstützt mindestens eine VPN-Variante. Unglücklicherweise kann es je nach Router-Modell eine schlechte VPN-Variante sein oder die Konfiguration des Remote-Computers ist schlecht dokumentiert. Trotz der möglichen Schwierigkeiten, herauszufinden, wie man es konfiguriert - wenn Sie nichts Besseres haben, ist dies bei weitem die beste Option!
Die meisten gängigen NAS-Boxen unterstützen zwei oder drei No-Suck-Methoden für VPN, und jeder 3-Watt-Computer im Kreditkartenformat von $ 20 kann einen VPN-Server ausführen, kein Problem. Selbst viele moderne Mobiltelefone unterstützen VPN, ohne zusätzliche Software installieren zu müssen, sodass Sie sogar auf Ihr Heimnetzwerk zugreifen können, wenn Sie das mobile Internet Ihres Telefons nutzen (sogar über einen privaten Hotspot).

Zum Beispiel ist L2TP / IPSec nicht die beste Wahl, aber es ist zu 99% gut und dauert eine Minute, um es auf meiner Disk Station und auf meinem Samsung-Handy einzurichten. Noch eine Minute, wenn mein Windows-Laptop es auch benutzen soll (unabhängig vom Telefon). Keine zusätzliche Software erforderlich.
Die Installation von OpenVPN dauert etwa 3-5 Minuten, da Sie die Client-Software auf dem Laptop installieren müssen. Im Großen und Ganzen zählt ein 5-Minuten-Setup jedoch als "Null", im Vergleich dazu, dass es völlig unsicher ist.

Der Kauf von Drittanbieter-Services ist nicht die einzige Antwort. Sie können den gleichen Effekt mit SSH oder RDP erzielen. jpaugh vor 5 Jahren 5
Die zwei und einzig richtigen Antworten sind VPN- oder SSH-Tunnel ... Einige VPN-Protokolle sind auch nicht gut, um MITM zu verhindern ... trognanders vor 5 Jahren 4
SSH ist viel billiger, bequemer und einfacher einzurichten und wahrscheinlich die bessere Option in diesem Szenario rahuldottech vor 5 Jahren 5
@jpaugh: VPN beinhaltet keine Dienste von Drittanbietern. Ich stimme zwar gerne zu, dass SSH zum Laufen gebracht werden kann, aber es ist bei weitem nicht mit VPN vergleichbar, wenn es um einfache Einrichtung, universelle Verfügbarkeit ohne zusätzliche Installationen und keine durchgängige Verfügbarkeit und nicht zuletzt durch die nahtlose Benutzerfreundlichkeit geht . Nun, über RDP ... Sie machen natürlich Witze, oder? Nicht nur die pristine Implementierung ist die wahrscheinlich am meisten ausgenutzte Software der Welt (oder zumindest in den Top-5), sondern auch das Protokoll selbst ist inhärent unsicher, verwendet gebrochene (praktikable, nicht theoretische) Chiffren und eine TLS-Version wurde vor einem Jahrzehnt abgelöst. Damon vor 5 Jahren 0
-1 Einfach nur für "one and only" im Titel ist SSH mit Portweiterleitung auch vollständig gültig und wahrscheinlich sicherer, da Sie nicht notwendigerweise Remote-Zugriff auf Ihr gesamtes Netzwerk, nur einen Port eines Geräts und höchstwahrscheinlich, benötigen Es ist einfach zu konfigurieren und Sie verlassen sich nicht auf die zufällige Softwareimplementierung eines Routers mit einer selten verwendeten Funktion. Bill K vor 5 Jahren 4
2
Michael P

Hosten Sie ein VPN, entweder in einem Router / Security Gateway-Gerät oder in einer anderen Box mit Portweiterleitung zu dieser Box. Wenn Sie remote arbeiten möchten, stellen Sie eine Verbindung zum VPN her, und Sie sehen das eingebettete Gerät wie in einem lokalen Netzwerk. Es ist wahrscheinlich eine gute Idee, das eingebettete Gerät in einem isolierten Subnetz zu platzieren , um Angriffe auf das Hauptnetzwerk zu verhindern, wenn das VPN oder das eingebettete Gerät gefährdet ist.

1
trognanders

Machen Sie Windows-PC ohne IDE zu einem Linux-PC in einer relativ sicheren Konfiguration, während sshd ausgeführt wird. Portweiterleitung von Ihrem Router zum SSH-Port der Linux-Maschine. Verwenden Sie SSH-Tunnel, um eine Verbindung mit der IP des eingebetteten Geräts herzustellen. Wenn Sie dann auf Ihrem Remote-Computer mit einer IDE programmieren, stellen Sie eine Verbindung zu localhost anstelle der LAN-IP her.

Mit einem gehärteten Dienst wie SSH im Internet zuzuhören, ist ziemlich sicher. Mit Entwicklung alles direkt im Internet zu hören , ist eine unglaublich schlechte Idee. SSH ist ein Gatekeeper. Wenn Sie sich vergewissern, dass der Host-Schlüssel überprüft wird, schützt er absolut vor MITM. Es verwendet eine gute Kryptographie. Das Tunneling-Setup beinhaltet kein Routing oder Bridging, sondern es sieht so aus, als würden Sie direkt von der SSHD-Maschine aus eine Verbindung herstellen. Dies ist erheblich einfacher zu installieren.

Sie können ... Einfach einen SSH-Server unter Windows ausführen, Sie brauchen hier nicht _need_ Linux. rahuldottech vor 5 Jahren 0
"Wenn Sie dann auf Ihrem Remote-Computer mit einer IDE programmieren, stellen Sie eine Verbindung zu localhost anstelle der LAN-IP her." Dieses Stück ist für mich nicht sinnvoll, ausführlich? rahuldottech vor 5 Jahren 0
@rahuldottech Die Weiterleitung von SSH-Ports funktioniert auf TCP-Ebene. Auf dem Server öffnet die sshd Verbindungen zu der Ressource im lokalen LAN und leitet den Inhalt dieses Sockets über SSH weiter. Auf dem Remote-Computer überwacht der SSH-Client einen Localhost-Port. Wenn Sie sich an diesem Port mit localhost verbinden, ist dies der SSH-Client, und die TCP-Verbindungen werden einfach miteinander verbunden. Ein bisschen komisch, aber wirklich vielseitig, da es kein IP-Routing gibt! trognanders vor 5 Jahren 0
-1
hildred

Ich habe kürzlich eine bessere Lösung für den persönlichen Fernzugriff gefunden. Lassen Sie uns zunächst den Umfang des Problems besprechen. Es gibt drei Punkte, die ins Spiel kommen: das Nat, die IP-Adresse und die Sicherheit. In den üblichen Fällen, in denen Sie einen SSH- oder Webserver in einem Heimnetzwerk ausführen möchten, ist der traditionelle Ansatz die Portweiterleitung und dynamische DNS sowie branchenübliche Best Practices für die Sicherheit. Dies hat Nachteile für Ihren Fall, da Ihr Gerät nicht über Standardsicherheit verfügt. Dies kann durch die Verwendung der ssh-Portweiterleitung gemindert werden, anstatt das Gerät für das Internet zu öffnen.

Es gibt jedoch eine einfachere Lösung, und glauben Sie, dass dies versteckte Dienste sind oder nicht. Die verborgenen Dienste fungieren im Allgemeinen als Portweiterleitung. Sie werden jedoch automatisch für das Durchqueren von NAT verwendet. Die Adresse ist nicht geändert, sodass keine dynamischen DNS-Adressen erforderlich sind. Es gibt natürlich Probleme, dass die Zwiebeladresse schwer zu merken ist, aber wenn Sie der einzige Benutzer sind, können Sie ihn in einer Ihrer Projektdateien aufschreiben. Ich würde empfehlen, dies weiterhin mit einem SSH-Server zu vergleichen, um die Authentifizierung bereitzustellen, aber Sie können entscheiden, dass die lange Zwiebeladresse ausreichend ist. Versteckte Dienste bieten auch die Verschlüsselung der gesamten Verbindung mit Ausnahme des letzten Hops. Die einzige Möglichkeit, die Verschlüsselung zu verbessern, ist die Ende-zu-Ende-Verschlüsselung. Dies hängt jedoch von dem zu programmierenden Gerät ab.

Die Verwendung von Zwiebeldiensten macht diesen Weg nur mit __no__ Zusatznutzen komplizierter. Tor kann nützlich sein. Wird in diesem Fall nicht sein. rahuldottech vor 5 Jahren 4