Wie kann ich ein TCP-Paket mit einer lokalen IP-Adresse von einem externen Netzwerk an ein Gerät im WLAN senden?

6

Ich muss einen Befehl aus dem Internet an ein Gerät in einem WLAN senden, das den Port 9999 abhört.

Dem Gerät selbst wird nur die lokale IP zugewiesen.

Ich habe auch n (2-100 +) Geräte mit dem gleichen Programm (hören auf Port 9999).

Ich kenne alle lokalen IPs der Geräte und weiß, an welche IP ich den Befehl senden soll.

Wie kann ich den Befehl von einem externen Netzwerk (Cloud / Mobilgerät) über den Gateway-Router an eine bestimmte lokale IP senden?

Ich verstehe, dass dies mit einem Server im WLAN oder einem dedizierten Gateway-Gerät erreicht werden kann. Ich bin aber interessiert zu wissen, ob dies nur mit dem WLAN-Router möglich ist.

Rifat Mahmud
quelle
Wenn Sie uns das Router-Modell zur Verfügung stellen, können wir Ihnen helfen, dies zu archivieren;)
Francisco Tapia
Kann ein einzelner Port an mehrere IPs weitergeleitet werden? Ich habe ungefähr 100 Geräte im Netzwerk, an die der Befehl weitergeleitet werden kann. Siehe hierzu: superuser.com/questions/424394/…
Rifat Mahmud
2
Ich denke, Sie müssen Ihren Anwendungsfall noch etwas näher erläutern. Sie werden gefragt, ob ein einzelner Port an mehrere IP-Adressen weitergeleitet werden kann. Die Antwort lautet "Nein". Möglicherweise wird jedoch die Verwendung eines Lastenausgleichs oder eines Proxys umgangen. Wir können diese Frage jedoch nur beantworten, wenn wir wissen, wie Ihre externe Anwendung auswählen soll, mit welchem ​​internen Gerät eine Verbindung hergestellt werden soll.
Kryten
1
@RifatMahmud Die richtige Lösung für Ihren Anwendungsfall besteht darin, das gesamte Setup auf IPv6 zu aktualisieren. Ich hoffe, die Geräte, die Sie bereitstellen, unterstützen bereits IPv6. Alles andere wird ein Workaround sein.
Kasperd
1
Portweiterleitung wäre die einfachste Option. Sie möchten nur sicherstellen, dass Sie den Befehl am anderen Ende filtern, damit keine zufälligen Codes auf Ihrem Computer ausgeführt werden.
ZaxLofful,

Antworten:

1

Es braucht etwas anderes als einen Router

Ein Router leitet per Definition und allgemeiner Verwendung Pakete basierend auf der angegebenen Zieladresse und dem angegebenen Port und nicht auf anderen Faktoren weiter.

Unabhängig davon, mit welcher Technik Sie es senden, muss der Router entscheiden, an welches der Hunderte Ihrer internen Geräte er es sendet, bis ein einzelnes TCP / IP-Paket von einer externen Verbindung zum Router eingeht sollte gesendet werden - und es braucht Informationen, um das zu tun.

Die IP-Adressinformationen können nicht verwendet werden, da Sie in Ihrem Setup nur eine einzige externe IP-Adresse haben und dies die Adresse des Routers ist - das Gleiche für alle Pakete, die Sie anders routen möchten.

Es könnte die TCP-Port-Informationen dafür verwenden, wie in anderen Antworten vorgeschlagen, aber anscheinend nicht akzeptabel.

Es könnte die Paketnutzlast verwenden, aber das wird es nicht tun. Die üblicherweise verwendeten drahtlosen Router für Endverbraucher prüfen nicht jede Paketnutzlast, um zu entscheiden, auf welche Weise sie geroutet werden. Sie könnten ein benutzerdefiniertes Gerät oder einen benutzerdefinierten Code erstellen, um dies zu handhaben. Dies wäre praktisch dasselbe wie "ein Server, der im WLAN ausgeführt wird", was anscheinend auch nicht akzeptabel ist.

Es gibt keine weiteren Informationen - ein Router trifft möglicherweise Entscheidungen basierend auf anderen Feldern im IP-Paket-Header, aber diese Felder sind entweder für Ihre Anforderungen überhaupt nicht verwendbar oder unpraktisch - Sie richten das Routing möglicherweise basierend auf der Quell- IP-Adresse ein und senden Pakete mit gefälschten Quelladressen, aber es hätte alle die gleichen Konfigurationsprobleme wie einfach Ports dafür zu verwenden.

Peter ist
quelle
Wenn ich anstelle eines TCP-Pakets ein UDP-Paket von einer externen Quelle an den Router sende, sendet der Router dann die UDP-Nutzdaten an alle Geräte im WLAN?
Rifat Mahmud
@RifatMahmud Nein, sorry. Wenn es keinen neuen Paketen zugeordnet ist, die der Router gesehen hat, wird es verworfen.
Duskwuff
@RifatMahmud Im Allgemeinen hätte UDP alle die gleichen Bedenken - es enthält einen Eingangsport, genau wie TCP, und es kann entweder basierend auf diesen Portdaten oder der Nutzlast routen. aber Rundfunk erfordert keine Entscheidungen oder zusätzliche Informationen. Soweit ich weiß, verfügen Consumer-Router im Allgemeinen nicht über eine Konfigurationsoption, um das Senden solcher Pakete an das gesamte interne Subnetz zu ermöglichen.
Peteris
12

Geben Sie n Portzuordnungen (Portweiterleitungen) in die NAT-Gateway-Einstellungen des WLAN-Routers ein. Nehmen Sie der Einfachheit halber möglicherweise vor, dass die öffentlichen Ports mit der internen IP-Adresse des Clients (dem Hostnummernteil) plus einem Präfix (z. B. 50000) korrelieren.

Nehmen wir also an, Sie haben Client-Rechner mit den privaten Adressen 10.0.0.2 bis 10.0.0.202. Geben Sie Port-Zuordnungen wie folgt ein:

[öffentliche IP des WLAN-Routers]: 50002 -> 10.0.0.2:9999
[öffentliche IP des WLAN-Routers]: 50003 -> 10.0.0.3:9999
…
[öffentliche IP des WLAN-Routers]: 50202 -> 10.0.0.202:9999

Um jeden Host zu erreichen, geben Sie in Ihrer Client-Software immer die öffentliche IP-Adresse Ihres NAT-Gateways (Ihres WLAN-Routers) an. Der angegebene Port hängt jedoch davon ab, auf welchen Client Sie zugreifen möchten.

In den meisten Client-Programmen können Sie einen Port angeben, indem Sie ihn entweder in der URL codieren http://example.com:50001/oder als Befehlszeilenargument angeben , häufig nach einer -poder -P-Option. Überprüfen Sie die Manpage für Ihr Tool.

Spiff
quelle
dass ich sagte, das ist die Antwort EOF;)
Francisco Tapia
Da es so viele Geräte geben kann, ist es für mich nicht möglich, so viele Ports zu belegen. In der Organisation können andere Programme diese Ports überwachen.
Rifat Mahmud,
2
@RifatMahmud 200 von 65535 möglichen Ports sind weniger als 1% der verfügbaren Ports.
Spiff
4
@RifatMahmud, wenn du die richtige Antwort möchtest, solltest du die richtige Frage posten. Ich empfehle dir, deine Frage zu bearbeiten, da dies die richtige Antwort ist, wenn du uns das Problem zeigst.
Francisco Tapia
5

Sie haben zwei Möglichkeiten, um Ihre Aufgabe zu erfüllen

  1. VPN-Zugang zum WLAN-Router verwenden - auf diese Weise muss Ihr externes Gerät einige der verfügbaren VPN-Protokolle (z. B. PPTP) verwenden, damit das Gerät eine Route zum internen WLAN-Netzwerk hat. Anschließend können Sie eine direkte Verbindung zu jeder IP-Adresse herstellen.
  2. Verwenden von Socks - Sie müssen einen WLAN-Router finden, der Socks-Proxy-Unterstützung bietet.

Der erste Weg ist einfacher zu bewerkstelligen, ohne den Anwendungscode zu ändern. Sie können für beide Optionen DD- WRT- oder Mikrotik- basierte WLAN- Router verwenden. Für mich ist Mikrotik einfacher als VPN-Server einzurichten. Hier finden Sie weitere Informationen zur Implementierung von Socks .

t0d0r
quelle
2

Natürlich können Sie die Portweiterleitung an Ihrem Router verwenden. Damit sind jedoch Sicherheitsrisiken verbunden.

Wenn Sie OpenVPN auf Ihren Geräten ausführen können, sollten Sie ein VPN erstellen. Sie können auf alle Ihre Geräte und Ihre Cloud / Ihr Mobiltelefon auch über das VPN zugreifen, als befänden sie sich physisch im selben Netzwerk. Außerdem würde die gesamte Kommunikation verschlüsselt.

Diogo Melo
quelle
Dies könnte die beste Alternative sein, noch besser als die richtige Antwort
Francisco Tapia
0

Sie können eine Portweiterleitungsregel auf dem Router öffnen , die besagt, dass alles, was über die öffentliche Schnittstelle und den Port 9999 empfangen wird, an die IP Ihres Geräts und an denselben Port weitergeleitet werden muss.

Der Router sendet die externen Anforderungen an das angegebene Gerät und den angegebenen Port, und die anderen Geräte kennen diesen Datenverkehr nicht.

jcbermu
quelle
Kann ein einzelner Port an mehrere IPs weitergeleitet werden? Ich habe ungefähr 100 Geräte im Netzwerk, an die der Befehl weitergeleitet werden kann. Siehe hierzu: superuser.com/questions/424394/…
Rifat Mahmud
Die Portweiterleitung ist eine Punkt-zu-Punkt-Umleitung. Es funktioniert nicht, wenn Sie versuchen, den Datenverkehr an zwei oder mehr Geräte zu senden. Es wird eine ausgefeiltere Lösung mit einem Load Balancer erforderlich sein.
Jcbermu
@jcbermu: Gibt es "port-forward to multicast"? In diesem Fall müssten die Clients ihre Befehle demuxen, aber das könnte funktionieren.
Eric Towers
@EricTowers Einige Router verfügen über die Multicast-Option, dies ist jedoch nicht die übliche Funktion, die Sie auf jedem Router finden.
jcbermu
0

Sie müssen die NAT / Port-Weiterleitung auf Ihrem WLAN-Router einrichten. Da Sie nicht angegeben haben, welchen Router Sie haben, kann ich Ihnen nicht weiter helfen. Viele kabellose Router für Privatanwender verfügen auch über leistungsschwache Funktionen. Dies kann die Anzahl der manuellen Portweiterleitungen begrenzen.

Bearbeiten, weil ich aus irgendeinem blöden Grund nicht auf Kommentare antworten kann

Nein, Sie können einen einzelnen Port ohne Load Balancer nicht mehreren IPs zuordnen. Sie müssten verschiedene Ports an der externen Schnittstelle Ihres Routers einstellen, um die verschiedenen IP / Port-Kombinationen der Geräte in Ihrem internen Netzwerk zuzuordnen.

Matt
quelle
Kann ein einzelner Port an mehrere IPs weitergeleitet werden? Ich habe ungefähr 100 Geräte im Netzwerk, an die der Befehl weitergeleitet werden kann. Siehe hierzu: superuser.com/questions/424394/…
Rifat Mahmud