Openvpn shared Port und Apache

  • Hallo Zusammen,


    hat jemand Erfahrung mit Openvpn und shared Port mit Apache?

    Prinzipiell läuft es, wie es soll. Bis auf eine böse Kleinigkeit.


    Ich habe einen VHost, der nur laufen soll, wenn man von einer bestimmten IP aus meinem VPN kommt (Require ip). Im "shared Port"-Betrieb bekomme ich aber trotzdem einen 403 Access forbidden. Nach Stunden Detektivarbeit hab ich sogar den Grund dafür gefunden: Im access.log steht die öffentliche IP und nicht wie erwartet die VPN-IP. Das heißt, im "shared Port"-Betrieb weiß Apache nicht, dass ich vom VPN aus komme.


    Hat irgendwer eine Idee, woran das liegt?


    Für jeden Tipp dankbar,

    Thilo

  • Wenn die öffentliche IP im Log steht, dann liegt es an OpenVPN oder am DNS:

    1. Machst Du Split-DNS oder erhält der Client immer die öffentliche IP des Hostnames Deines Apachen?

    2. Hast Du kein Split-DNS, das für Anfragen aus dem VPN die VPN-IP des Apachen ausgibt, benötigst Du eine Host-Route, die OpenVPN über das VPN zum Apachen. (push route oder route, eventuell iroute). Diese Variante ist wahrscheinlich die sinnvollste, weil sonst der NamedHost Probleme machen kann.

  • Mit öffentliche IP ist die Server IP gemeint, oder?


    Wie lautet die NAT Firewall-Regel? Enthält die ein -o mit dem Netzwerkdevice vom Server?

    Ok, irgendwas ist faul. Die öffentliche IP ist nämlich die meines Internetproviders (Router zu Hause) und nicht die meines Servers.

    die NAT-Regel lautet: -A POSTROUTING -s 10.8.0.0/24 -o ens3 -j SNAT --to 188.68.45.xxx

    Und in der VPN-Config steht: push "redirect-gateway def1 bypass-dhcp" Damit sollte der Traffic ja übers vpn gehn ...



    Trotzdem bekomm ich aber bei https://ipleak.net/ die korrekten IPs meines Servers angezeigt!


    Irgendwas fehlt ...

  • Warum ist das eine SNAT und keine MASQUERADE NAT Regel?

    Stimmt, müsste MASQUERADE sein, Fehler bleibt der selbe.

    Was ich ernsthaft nicht auf die Reihe bekomme ist.

    • Tests auf die öffentliche IP mit IP-Leaks oder whatsmyip passen
    • Der Traffic wird auch korrekt geroutet.
    • nur im apache log stimmt das Ganze nicht


    Wenn die öffentliche IP im Log steht, dann liegt es an OpenVPN oder am DNS:

    1. Machst Du Split-DNS oder erhält der Client immer die öffentliche IP des Hostnames Deines Apachen?

    2. Hast Du kein Split-DNS, das für Anfragen aus dem VPN die VPN-IP des Apachen ausgibt, benötigst Du eine Host-Route, die OpenVPN über das VPN zum Apachen. (push route oder route, eventuell iroute). Diese Variante ist wahrscheinlich die sinnvollste, weil sonst der NamedHost Probleme machen kann.

    Die Clients erhalten immer die öffentliche IP vom Apache.

    Vermute mir fehlt dann wohl die Host-Route. Wie müsste diese denn aussehen?

    Bisher pushe ich nur die internen Routen.


    Kleine Hntergrundinfo: Was Netzwerk und Routing angeht, hab ich noch einige Wissenslücken. Hab mir das alles erst nach und nach angeeignet.


    Großes Dankeschön an Euch beiden

  • Hallo voja , hallo eripek ,


    ich wollte Feedback geben, wo letztendlich das Problem war und wie ich es gelöst hab. Evtl. hilft es auch anderen Forennutzern.


    Problem:

    Wenn OpenVPN und Apache an der selben IP hängen wird ohne spezielles Routing der Traffic zu dieser IP nicht durch das VPN geleitet, sondern normal über den Internetprovider.


    Lösung:

    Ich hab die Host-Route nicht hinbekommen. Da man ja ausreichend IPv6-Adressen hat, hab ich OpenVPN an eine solche gebunden.

    Firewall-technisch ging das POUSTROUTING nur mit SNAT. Anders war bei mir die öffentliche IP immer die primäre und nicht die zugewiesene.