
Ok, also … ich bin keineswegs ein Profi, wenn es um Netzwerke, Lastausgleich, Tunneling oder VPN-Verbindungen geht, ABER ich habe ein paar Dinge ausprobiert, um dieses theoretische Konzept zum Laufen zu bringen – offensichtlich ohne Erfolg.
Was ich erreichen möchte: Ein öffentliches VPN erstellen (also offen für externe Verbindungen aus dem Internet), die Clients mit einem Load Balancer-Server verbinden lassen, der dann den Verkehr basierend auf der geringsten Anzahl an Verbindungen an die Backend-Server weiterleitet, die sich nicht im selben Netzwerk befinden und nur über das Internet erreichbar sind (nein, das lässt sich leider nicht ändern) und diese direkt dem Client antworten lassen (DSR), sodass die Bandbreite hauptsächlich auf den Backend-Knoten und nicht auf dem Load Balancer auftritt, sodass es zu keinem Engpass auf dem Load Balancer kommt.
Meine Idee war also: Da unser Hoster keine privaten Netzwerke anbietet, muss ich mehrere Server remote miteinander verbinden, um den Lastenausgleich zu gewährleisten. Zu Testzwecken habe ich daher Folgendes erstellt:
- Ein Load Balancer-Server, der auch als interner VPN-Server fungiert, um das Netzwerk zu erstellen, das ich für erforderlich hielt, um die Server privat zu verbinden und sie im selben Subnetz zu platzieren
- Ein erster externer VPN-Serverknoten, der sich „hinter“ dem Load Balancer-Server befindet, in dem Sinne, dass ich eine Verbindung zum Load Balancer herstellen und dann den Datenverkehr mithilfe von „Least Connections“ an einen der Knoten weiterleiten lassen möchte und den Knoten dann direkt mit dem Client verbinden möchte (Direct Server Return), damit nicht die gesamte Bandbreite wieder auf dem Load Balancer landet.
- Eine virtuelle IP (10.8.0.250)
Nachdem ich das VPN erfolgreich erstellt und den Knoten damit verbunden habe, habe ich die folgenden IPs:
10.8.0.1 (Load Balancer and internal VPN Server)
10.8.0.10 (First external VPN Server node)
Auf dem Load Balancer habe ich die IP-Weiterleitung aktiviert und den folgenden DNAT-Eintrag erstellt:
sudo iptables -t nat -A PREROUTING -i eth0 -p udp --dport 1194 -j DNAT --to-destination 10.8.0.250
und dem folgenden IPVS-Eintrag:
ipvsadm -A -u 10.8.0.250:1194 -s wlc
ipvsadm -a -u 10.8.0.250:1194 -r 10.8.0.10:1194 -g -w 1
Ich habe außerdem die virtuelle IP zur Loopback-Schnittstelle des externen VPN-Serverknotens hinzugefügt, damit dieser den für die virtuelle IP eingehenden Datenverkehr akzeptiert.
Das ist im Wesentlichen das, was ich getan habe, und es funktioniert nicht.
Meine Frage ist nun: Funktioniert das überhaupt oder versuche ich einfach etwas, was in der Art und Weise, wie ich es mache, unmöglich ist? Und wenn ja: Was wäre die beste Vorgehensweise, wenn man bedenkt, dass die Server nur über das Internet verbunden sind und es keine Möglichkeit gibt, sie im selben privaten Netzwerk zusammenzufassen?
Vielen Dank im Voraus für alle Hinweise!