AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

TCP weiterleitung

Ein Thema von DelTurbo · begonnen am 27. Nov 2017 · letzter Beitrag vom 29. Nov 2017
Antwort Antwort
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.197 Beiträge
 
Delphi 2007 Architect
 
#1

TCP weiterleitung

  Alt 27. Nov 2017, 13:34
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
Alle meine Rechtschreibfehler sind Urheberrechtlich geschützt!!
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.418 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: TCP weiterleitung

  Alt 27. Nov 2017, 13:39
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.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.197 Beiträge
 
Delphi 2007 Architect
 
#3

AW: TCP weiterleitung

  Alt 27. Nov 2017, 13:55
Hi,
erst mal vielen Dank für die Antwort. Ich werde das mal Probieren und Berichten.

Gruß
Alle meine Rechtschreibfehler sind Urheberrechtlich geschützt!!
  Mit Zitat antworten Zitat
Timelord

Registriert seit: 17. Mai 2017
6 Beiträge
 
#4

AW: TCP weiterleitung

  Alt 27. Nov 2017, 18:19
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.
Mit welchem Protokoll "connecten" die "Bekannten" (ich interpretiere die mal im Folgenden als die "User") sich denn? Die Raspis nehmen ja wie von dir beschrieben OpenVPN; vorausgesetzt die User verbinden sich auch über den selben OpenVPN (und bekommen dann ergo auch vmtl eine IP vom OpenVPN-Server), dann könntest du ihnen vllt einfach DNS Einträge beim Login pushen? Oder du vergibst den Raspis immer die selben IP in deinem Subnetz (Stichworte: DNS, Routing, DHCP, statische IP).

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.
Das klingt jetzt aber eher als sollten sich die User bei einer Website authentifizieren (ich interpretiere dein "Identifizieren" mal so)? Man kann User durch den HTTP Statuscode 301 auf eine andere URL weiterleiten. Du musst also in der Antwort vom Server den 301 als HTTP Statuscode setzen und dazu die URL wohin der Browser umleiten soll. Achtung: Das klingt dann aber so, als sei dein User nicht im OpenVPN also hat keinen getunnelten Verkehr zu den Raspis direkt. Was du dann brauchen könntest ist ein sogenannter "Reverse Proxy". Das kannst du zum Beispiel beim Apachen Webserver und bei nginx (keine Ahnung was du da verwendest, aber vmtl einer von den zweien?!) in der Config Anfragen an einen bestimmten Pfad an eine andere IP "weitertunneln".

Ich weiß nicht mal wie so eine Funktion heißt. Deswegen fällt auch das suchen flach.
Ich habe bewusst versucht meinen Text mit Vokabular zu spicken, das man googlen kann; wenn du trotzdem Fragen hast, immer her damit. Ich weiß, dass das Thema nicht ganz trivial zu verstehen ist und auch ich gebe zu, dass ich regelmäßig beim Konfigurieren am Stolpern bin
  Mit Zitat antworten Zitat
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.197 Beiträge
 
Delphi 2007 Architect
 
#5

AW: TCP weiterleitung

  Alt 28. Nov 2017, 09:11
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.
Alle meine Rechtschreibfehler sind Urheberrechtlich geschützt!!
  Mit Zitat antworten Zitat
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.197 Beiträge
 
Delphi 2007 Architect
 
#6

AW: TCP weiterleitung

  Alt 28. Nov 2017, 11:02
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
Alle meine Rechtschreibfehler sind Urheberrechtlich geschützt!!
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.418 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: TCP weiterleitung

  Alt 28. Nov 2017, 11:57
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.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.197 Beiträge
 
Delphi 2007 Architect
 
#8

AW: TCP weiterleitung

  Alt 28. Nov 2017, 12:16
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:
  IdHTTPServer1.Active:=False;
  IdMappedPortTCP1.Active:=True;
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.

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.
Alle meine Rechtschreibfehler sind Urheberrechtlich geschützt!!
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.418 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: TCP weiterleitung

  Alt 28. Nov 2017, 17:30
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.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.197 Beiträge
 
Delphi 2007 Architect
 
#10

AW: TCP weiterleitung

  Alt 29. Nov 2017, 10:55
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 meine Rechtschreibfehler sind Urheberrechtlich geschützt!!
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:13 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz