Bestimmten Traffic über anderen Server routen

  • Hallöchen,


    ich habe eine, zumindest für mich noch dezent komplexe, Sache vor.


    Folgendes ist geplant: Ich möchte bestimmten Traffic von Clients meines VPN Netzes ins Internet anhand der IP als Kriterium über das Interface eines anderen vServer leiten.

    Der Grund dafür ist simpel: der Betreiber einer Website die ich öfter nutze meint, dass er die IP meines Servers sperren muss, weil vermutlich mit der IP mal irgendwas verbotenes gemacht wurde, von dem er aber selbst nicht sagen will, was es war. Und seine supertolle IP Sperre möchte ich jetzt einfach umgehen, indem ich die Zugriffe über einen anderen Server leite.


    Server1 (hostet mein VPN Netz) = 10.8.0.1

    Server2 = 10.8.0.3

    Client = 10.8.0.5

    Ziel im Internet (Beispielhaft) = 1.2.3.4


    Wenn der Client jetzt auf das Ziel zugreifen will, dann läuft der Traffic ja zunächst nach tun0 von Server1, und wird dann auf ens3 von Server1 geleitet, und geht von dort aus an das Ziel.


    Ich möchte, dass alle Anfragen des Clients auf das Ziel von tun0 von Server1 per VPN an tun0 von Server2 weitergeleitet werden, und erst dieser den Traffic dann auf sein ens3 weitergibt, von wo aus dieser dann ins Netz geht.


    Bisher bin ich schonmal so weit, dass ich den Traffic auf das Ziel von Server1 per IP Route auf den zweiten Server umleite (auf Server1: ip route add 1.2.3.4 via 10.8.0.3)

    Soweit so gut, scheint an sich auch zu klappen.


    Das Problem ist jetzt Server2. IPv4 Forwarding ist mit sysctl aktiviert, und ich habe eigentlich auch die korrekten Firewall Regeln definiert.

    Code
    iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
    iptables -A FORWARD -i ens3 -o tun0 -j ACCEPT
    iptables -A FORWARD -i tun0 -o ens3 -j ACCEPT
    
    #Die Regeln sind was Sicherheit betrifft noch optimierbar, das ist mir bewusst, das ist grad nur die "Debugging-Version"


    Hab ich irgendwo einen Fehler gemacht? War das mit der IP Route evtl. schon falsch, oder habe ich grundsätzlich einen Denkfehler? ?(


    Ich bin für jede Hilfe, Kritik und Anregung dankbar. :)

    "Denn der radikalste Zweifel ist der Vater der Erkenntnis."

    -Max Weber

  • Hi, weiß dein Server2 wie er die Pakete zum Client routen soll? Zur Hinroute gehört auch immer eine Rückroute für die Antwortpakete.


    Berechtigte Frage.

    Also bewusst habe ich keine Route gesetzt. Wie müsste eine solche Route denn dann aussehen? Weil der Gateway im VPN ist Server1 ja sowieso... Wobei, Server2 läuft mit route-nopull in der OpenVPN Config. Der schickt nur wirklichen VPN-internen Traffic durchs VPN, alle Verbindungen ins Internet laufen über dessen eigene Anbindung. :/


    Habe mich mit dem Routing Thema bisher noch nie wirklich auseinandergesetzt, daher sorry für ggf. doofe Fragen. :pinch:

    "Denn der radikalste Zweifel ist der Vater der Erkenntnis."

    -Max Weber

  • Du kannst iene Route auf den Clients verteilen und diese über S2 leiten. entweder direkt auf dem Client (route add usw. unter Win) oder auch per DHCP über den Router.

    Soo. Probiert und fast für gut befunden. Der Ansatz scheint auf jeden Fall der richtige zu sein! ^^


    Ich habe jetzt versucht, den Clients via OpenVPN-Server per push "route 1.2.3.4 255.255.255.255 10.8.0.3 1" die Route zu übergeben. Dabei ist die Route auch in der Routing Tabelle von Windows erschienen, Problem ist nur, dass ich, wenn ich die Website im Firefox aufrufen will, trotzdem Server1 als Gateway habe und abgeblockt werde. Ideen? Kann es sein, dass push "redirect-gateway def1 bypass-dhcp" Probleme macht?

    :/

    "Denn der radikalste Zweifel ist der Vater der Erkenntnis."

    -Max Weber

  • Warum setzt du die Route nicht zuerst einmal lokal auf dem Rechner?

    Habe ich probiert, hatte allerdings auch nicht geklappt. Kann ich aber nochmal testen, vielleicht hatte ich auch einen Fehler gemacht - melde mich dann nochmal dazu. ;)

    "Denn der radikalste Zweifel ist der Vater der Erkenntnis."

    -Max Weber

  • Ich habe es jetzt mal getestet. Die Route habe ich eingetragen (Powershell als Admin: route add 1.2.3.4 mask 255.255.255.255 10.8.0.3 metric 500).

    Bei der Metric habe ich unterschiedliche Werte getestet.


    Endergebnis: Geht nicht. Das ist irgendwie das selbe Spiel, wie wenn ich per OpenVPN die Routen mitegebe. Sie sind da, aber sie werden grundsätzlich ignoriert.


    Ideen? ?(

    "Denn der radikalste Zweifel ist der Vater der Erkenntnis."

    -Max Weber