![]() |
TCP weiterleitung
Hallo,
ich habe da ein Problem und versuche es mal zu erklären. Und zwar hab ich einen Dedicated Server. Dort Connecten 3 Raspi über OpenVPN. Nun kommt das schwierige was ich nicht hinbekomme, bzw. nicht weiß wie. Die Bekannten sollen auf den Server Connecten und sich per Username/Password identifizieren. Wenn das geklappt hat sollen Sie sofort auf Ihren Raspi (der ja eine VPN-IP hat) zur Weboberfläche weitergeleitet werden. Das mit dem Identifizieren habe ich schon gemacht. Aber ich finde keinerlei Antworten oder sonst was wie ich das "Handy" auf das Webinterface vom Raspi bekommen soll. Ich weiß nicht mal wie so eine Funktion heißt. Deswegen fällt auch das suchen flach. Ich hoffe ich hab das relativ gut beschrieben. Kurz noch zum Hintergrund. Es soll kein Port zu hause geöffnet werden müssen bzw. eine Dyn Adresse verwendet werden. Gruß und vielen Dank im Voraus |
AW: TCP weiterleitung
Das Stichwort ist Proxy. Du musst die Anfragen der Clients auf dem Server auf die OpenVPN IP weiterleiten. Da du das steuern möchtest, kannst du dafür nicht einfach NAT nutzen.
Eine Möglichkeit wäre eine fertige Proxy Software zu nutzen und anzusteuern. Einfacher zu steuern wäre aber, wenn du TIdMappedPortTCP in einem eigenen Dienst auf dem Server benutzt und damit Anfragen direkt an die Open VPN IP der Raspis weiterleitest, wenn der User sich authentifiziert hat. |
AW: TCP weiterleitung
Hi,
erst mal vielen Dank für die Antwort. Ich werde das mal Probieren und Berichten. Gruß |
AW: TCP weiterleitung
Zitat:
Zitat:
Zitat:
|
AW: TCP weiterleitung
Huhu,
ich versuche es nochmal zu beschreiben. Allerdings bin ich darin nicht der beste (und das ist schon übertrieben). Also, Ich habe z.b. eine MySql/MariaDB/SqLite wo User/Pass/OPENVPN-IP (z.b. 10.8.0.100) von "seinem" Raspi drin steht. Nun kommt der User per Webbrowser auf die "Vorgeschaltete" Webseite (auf dem Server im RZ) die ich ihm per IdHTTP liefere. Dort ist ein Feld User und ein Feld Pass. Das trägt er seine Daten ein und Klickt "OK". Stimmen User und Pass überein soll ab das alles auf den Raspi (die OpenVpn-IP) umgeleitet werden, sofern der Raspi eingeloggt ist. Das kann ich z.b. vorher mit einem Ping testen oder auf einen Timeout warten. Mehr soll auf dem "großen" Server gar nicht passieren. Ab da übernimmt das WI vom Raspi. Das was jaenicke mit TIdMappedPortTCP gepostet hat, möchte ich heute mal Probieren. Das klingt einleuchtend. Obwohl ich noch nicht weiß wie ich den Stream von IdHTTP zu TIdMappedPortTCP bekomme. Netten Gruß PS.: Ich hoffe ich habe das einigermaßen gut erklärt. |
AW: TCP weiterleitung
Kurze Rückmeldung:
Das mit dem TIdMappedPortTCP klappt wunderbar. Ich habe das nun zum eigentlichen Testen einfach auf eine Leere Form gezogen, MappingHost und Mapping Port eingetragen und es klappt wunderbar. Sobald ich auf die IP Connecte wo das Programm läuft wird mir mein Drucker Webinterface angezeigt. Nun noch eine Frage: Wie bekomme ich es hin das ich die Session vom IdHTTP an TIdMappedPortTCP "weitereichen" kann? Ich muss eigentlich nur eine Seite vorschalten und dann die Session an den Mapper übergeben. Vielen Dank im Voraus |
AW: TCP weiterleitung
Ich stelle mir das so vor, dass du die Client Session in eine DB einträgst und dann eine HTTP-Weiterleitung auf einen anderen Port machst, der per TIdMappedPortTCP zu dem jeweiligen Gerät zeigt. Im OnConnect des TIdMappedPortTCP Objekts prüfst du dann, ob die Session von diesem Client-Rechner aus noch aktiv ist / neu genug ist / wie auch immer. Alle unbekannten Clients bzw. IPs lehnst du ab.
|
AW: TCP weiterleitung
Hi,
das wäre eine Idee wie ich das weitergeleitet bekomme. Ich versuche es gerade so zu machen, das ich eine HTML Seite übergebe wo man User/Pass einträgt und dann OK klickt. Dann kommen die Eingaben ja im IdHTTP per Post an. Dann kann ich die prüfen und entsprechend reagieren. Was ich rausgefunden habe ist, wenn ich in IdHTTPServer1CommandGet folgendes mache
Delphi-Quellcode:
werde ich auch direkt weitergeleitet. Allerdings ist dann Kurz die Weiterleitung "auf". Wenn in dem Moment einer Connected dann kommt er ohne User/Pass auf ein anderes Gerät.
IdHTTPServer1.Active:=False;
IdMappedPortTCP1.Active:=True; Also denke ich das TIdMappedPortTCP zur Laufzeit erstelle, seine OpenVPN-IP und Port eintrage und es Diesem User "gebe". Was ich gerne haben möchte wäre die SessionID oder sonstwas was ich dem TIdMappedPortTCP übergeben kann, und der dann z.b. auf Port 81 "übernimmt". Das ganz soll ja Threadfähig sein damit es mehr als ein User benutzen kann zeitgleich nutzen kann. Ich hoffe ich habe mich verständlich ausgedrückt, wenn nicht einfach nochmal nachfragen. Trotzdem schon mal vielen Dank für die Hilfe. |
AW: TCP weiterleitung
Ob du dynamisch verschiedene Clients über den gleichen Port an verschiedene Ziele durchleiten kannst, weiß ich nicht. Aber ich bezweifle es ehrlich gesagt.
Du kannst aber auf jeden Fall für jeden Client einen neuen Port aufmachen mit einer eigenen Instanz von TIdMappedPortTCP und dann den Client wie gesagt auf den Port umleiten. Dann verbindet sich jeder Client mit einem anderen Port. Nach einer gewissen Zeit beendest du die Session und machst den Port wieder frei. |
AW: TCP weiterleitung
Hi,
mit einem Client klappt es. Und zwar habe ich das so gelöst. TIdMappedPortTCP zeigt intern auf einen TIdHTTPServer. Der fragt User und Pass ab. Wenn das stimmt, setze ich MappedHost und MappedPort auf die VPN IP des Raspi und gebe dem Client einen META Refresh raus. Schwubs ist der Client auf dem Raspi. Nun frage ich mich nur, wie ich das MultiThreadfähig bekomme. Soviel ich weiß kann der TIdHttpServer das irgendwie. Aber ob das der TIdMappedPortTCP kann weiß ich nicht. Habe noch garnix darüber gefunden. Vielen dank für deine Hilfe, wenn ich nicht weiterkomme mache ich einen neuen Thread auf. Weil hier weicht es langsam vom Topic ab. Gruß |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:25 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz