Proxy, Route, Reverse-Proxy oder wie ich es nennen soll

Matze83

Member
Hi,

ich habe folgendes Problem:

Angenommen ich habe einen Server in Frankreich und einen in Deutschland. Der Server in Frankreich dient z.B einer Weiterleitung, damit die IP-Adresse von Server 2 in Deutschland nicht zu erkennen ist. Verbinde ich mich sozusagen über die IP von Server 1, werde ich auf Server 2 weitergeleitet - jedoch sehe ich dann die IP-Adresse von Server 2 in Deutschland.

Das Ganze was ich vorhabe lässt sich relativ leicht mit einem Reverse-Proxy vergleichen, nur eben mit Servern die nicht im gleichen Netzwerk sind sondern an verschiedenen Standorten.

Ich verbinde mich also mit Server 1 und werde zu Server 2 weitergeleitet, ich möchte also, dass Server 2 sozusagen seine IP-Adresse versteckt und nur die IP von Server 1 angezeigt wird. Ich hoffe, es ist verständlich genug, worauf ich hinaus möchte.

(Sozusagen möchte ich den Traffic vom Client zu Server 1 und dann zu Server 2 leiten und eben von Server 2 zu Server 1 und von Server 1 dann zum Client), nur dass eben die IP von Server 2 nicht zusehen ist, sondern die von Server 1.

05:30 Uhr, bitte um Entschuldigung.. Danke im Voraus
 
Hallo und willkommen hier im Forum

Eine Lösung lautet "SSH-Socks-Proxy". Beim 1. Server richtest du eine Weiterleitung auf Port X zum 2 Server ein. Dein Client verbindet sich über diese Weiterleitung dann natürlich direkt zum 2. Server wo der Endpunkt des Proxy's ins Internet dann erscheint.
 
ok, du hast ein 'Problem' geschildert (das gleiche sogar mehrmals), aber du hast keine Frage gestellt.

Naja, meine Frage ist es eben, wie es funktioniert.



Hallo und willkommen hier im Forum

Eine Lösung lautet "SSH-Socks-Proxy". Beim 1. Server richtest du eine Weiterleitung auf Port X zum 2 Server ein. Dein Client verbindet sich über diese Weiterleitung dann natürlich direkt zum 2. Server wo der Endpunkt des Proxy's ins Internet dann erscheint.

Es ist nicht zwangsläufig SSH, eher Server wie CS:S. Meine Matchserver werden im Match oft angegriffen und der Server A hat einen Schutz dagegen. Deswegen möchte ich, dass, wenn der Spieler auf den CS.S Server connected, die IP von Server A sieht und nicht die von Server B, überwelchen der Gameserver läuft

Die Lösung ist auch nicht, dass ich den Server auf Server A packe, weil er a) vom Ping her nicht geeignet ist b) die Hardware beim Hoster nicht angeboten wird, die ich benötige, bis auf den Schutz



Soweit ich erfahren konnte, nennt sich das ganze "Reverse Proxy" - liege ich da richtig? Wenn ja, Squid z.B funktioniert doch nur mit Apache und nicht mit anderen Services die auf anderen Ports lauschen und andere Aufgaben übernehmen, oder?
 
Zuletzt bearbeitet:
Naja, meine Frage ist es eben, wie es funktioniert.
Mach Dir nix draus, der ist nur schlecht gelaunt. Schau mal, wie zusammengerollt der daliegt.
Es ist nicht zwangsläufig SSH, eher Server wie CS:S.
Schon klar! SSH ist ja nur der Weg, nicht das Ziel. Du mußt auf Server 1 einen SSH-Client starten:
Code:
ssh -L 80:Server2:8080
Dann wird jeder, der Server1 auf Port 80 kontaktiert, klammheimlich weitergeleitet auf Server2, wo irgendein Programm auf Port 8080 lauscht. Natürlich kann dann auf Server1 kein anderes Programm mehr auf Port 80 lauschen, denn der ist ja nun durch SSH besetzt. Der Kunde glaubt sich mit Server1 verbunden, Server2 sieht dagegen nur Server1 als Kunden, nicht dessen ursprüngliche Adresse.
Du kannst auch 99 verschiedene SSH-Weiterleitungen gleichzeitig betreiben, für lauter verschiedene Ports. Die zugeordnete Portnummer auf Server1 und Server2 darf natürlich auch gleich sein.
Wenn Du nicht so genau weißt, auf welchen Ports irgendein Programm auf Server2 lauscht, hilft dort ein lsof -Pi.
 
Schon mal ein guter Ansatz, aber das Problem ist, dass die Mitspieler nicht alle SSH verwenden, sondern ihr Spiel.

CS.S (Counter Strike-Source) Client wird geöffnet, sie geben die IP von Server 1 ein, werden aber autom. auf Server 2 weitergeleitet. Sie denken jetzt, ok "1.2.3.4" ist die IP vom Gameserver, worauf sie connecten, aber "1.2.3.4" ist nur die IP des Servers der die Anfragen an Client und dem richtigen Gameserver (Server B) weiterleitet. Habe es bereits mit forwarding probiert, aber dann sehe ich wieder die Adresse von Server B
 
Schon mal ein guter Ansatz, aber das Problem ist, dass die Mitspieler nicht alle SSH verwenden, sondern ihr Spiel.
Himmel, Gesäß und Nähgarn, lies doch: SSH wird auf Server1 gestartet, nicht auf den Kisten der Mitspieler! Natürlich muß auf Server2 auch ein entsprechender Dienst SSHD laufen. SSH selber benutzt übrigens Port 22, der muß natürlich benutzbar sein. (Also auf Server 1 raus- und auf Server 2 reinlassen, falls Firewall.)
Habe es bereits mit forwarding probiert, aber dann sehe ich wieder die Adresse von Server B
Du hast was???
 
Himmel, Gesäß und Nähgarn, lies doch
Ähm, jöh, das hätte man vielleicht ein wenig gesetzter ausdrücken können. :o Hab' genauso wenig ausgeschlafen wie Du.
Noch drei Fragen: Du hast vollen Zugriff auf jeden der beiden Server? Server1 läuft wohl unter FreeBSD? Welches Betriebssystem hat der andere?
 
um nicht aus der Rolle zu fallen.... :
http://www.freshports.org/net/rinetd/ http://www.freshports.org/security/stunnel/

Und ja, ich bin ein großer Freund von sinnvoll erstellten Beiträgen die gleich Sachverhalt und Zielvorstellung darlegen. Abgesehen davon arbeitet ein ReverseProxy in der Regel auf Applikationsebene. nginx/squid/apache werden also sich um HTTP kümmern können. Wenn aber nur ein TCP Port wie ein Proxytransfer gehandhabt werden soll reicht ein rinetd
 
Ähm, jöh, das hätte man vielleicht ein wenig gesetzter ausdrücken können. :o Hab' genauso wenig ausgeschlafen wie Du.
Noch drei Fragen: Du hast vollen Zugriff auf jeden der beiden Server? Server1 läuft wohl unter FreeBSD? Welches Betriebssystem hat der andere?

Server 1 Debian, Server 2 FreeBSD. Ja, habe überall Vollzugriff.


um nicht aus der Rolle zu fallen.... :
http://www.freshports.org/net/rinetd/ http://www.freshports.org/security/stunnel/

Und ja, ich bin ein großer Freund von sinnvoll erstellten Beiträgen die gleich Sachverhalt und Zielvorstellung darlegen. Abgesehen davon arbeitet ein ReverseProxy in der Regel auf Applikationsebene. nginx/squid/apache werden also sich um HTTP kümmern können. Wenn aber nur ein TCP Port wie ein Proxytransfer gehandhabt werden soll reicht ein rinetd

Rinetd habe ich bereits auf Debian installiert, Problem ist nur, dass, wenn alle auf den Matchserver connecten, sie einmal die IP von Server 1 sehen was schon ein guter Ansatz ist, aber auch die IP von Server 2 sehen über die der Server in Wirklichkeit läuft.
 
wie kann man sich das "sehen der IP" vorstellen? Denkbar dass innerhalb der Applikation etwas wie ein STUN abläuft, und die Programme sich austauschen mit welchen echten IPs sie präsent sind?
Und noch etwas ist mir noch unklar.
Welche Ports für welche Zwecke sind bei deinem Projekt im Einsatz? Warum sollten die Angriffe nicht einfach auch durch den Proxy geleitet werden. Wie sollte ein Proxy auf Server A ein Latenzproblem lösen könne, wenn nur auf dem B Server die Latenzen für deine Clients ok sind.
 
Wenn ich z.B auf die IP von Server 1 connecte und netstat -n via cmd eingebe, sehe ich zwar die IP die dazwischen geschaltet ist und den Port des Gameservers, aber eben auch die IP von Server 2 mit dem Port des Gameservers.
 
Ich empfehle mal einen Basiskurs zu networking.

Wenn der andere Server wegen der Latenz nicht geeignet ist, dann kannste das Ganze gleich vergessen. Physik lässt sich nicht bescheißen. Wenn du da mit Tunneln hantierst, wird das ganze von der Latenz nämlich noch höher.

Prinzipiell würdest du einen VPN-Tunnel zwischen Server 1 und Server 2 aufbauen, also wie zu Hause ein privates Netz aufbauen, wo dann Server 1 dein "Router" ist und NAT macht und Server 2 eine private Adresse hat und der Dienst darauf quasi durch das VPN genötigt wird mit passenden Routen oder pf-Regeln.


Code:
Server 1     a.b.c.d --- ... --- w.x.y.z     Server 2
       + 192.168.f.g ----------- 192.168.f.h +

a.b.c.d und w.x.y.z sind die öffentlichen Adressen, 192.168.f/24 das VPN-Netz. Auf Server 1 kannst du dann port forwards nach 192.168.f.h machen bzw. auf Server 2 bestimmte Dienste über 192.168.f.g als gateway über Server 1 forcieren; wie ein 0815-LAN zu Hause eben.
 
Wenn ich z.B auf die IP von Server 1 connecte und netstat -n via cmd eingebe, sehe ich zwar die IP die dazwischen geschaltet ist und den Port des Gameservers, aber eben auch die IP von Server 2 mit dem Port des Gameservers.
Heißt das, die Kunden können auf dem Gameserver Shell-Kommandos ausführen? Ist das unvermeidbar? Dann läßt sich die IP nur mit großem Aufwand verstecken, etwa so, wie TCM schreibt. Wobei: Auf Server2 ist doch dann noch eine Virtualisierungsschicht nötig, damit man wirklich von w.x.y.z nichts sieht, oder, TCM?
 
Zurück
Oben