pfSense als Gateway für Guests im Proxmox Cluster

  • Einen schönen Nachmittag wünsche ich!

    Und ich hoffe, dass es euch allen bei der derzeitigen Situation gut geht und wünsche weiterhin viel Gesundheit!


    Bevor ich zu meinem Problem komme:

    Ich bin KEIN Netzwerktechniker und gebe auch nicht vor, einer zu sein. Ich würde dennoch meinen, dass ich zumindest ein Grundverständnis dafür habe.

    Dennoch möchte ich mich zurzeit in diese Richtung weiterentwickeln, mir nötiges Wissen aneignen und dafür brauche ich jetzt eben etwas Hilfe.


    Nun zu meinem Problem:

    Ich bin seit den letzten Tagen im Besitz von 2 x RS 8000 SAS G8SE a1, 1 x RS 2000 SSD G8 a1 und 1 x Cloud vLAN Free.

    • Auf dem 2000er läuft zurzeit pfSense, zusammen mit OpenVPN.
    • Auf den 2 8000ern läuft Proxmox, in einem Cluster zusammengeschlossen

    Wie sieht meine Infrastruktur bisher aus?

    Nun:

    • Alle 3 Geräte sind mit dem kostenlosen vLAN erreichar (Also jedes Gerät wurde auf dem Interface mit einer statischen IP bestückt).
    • Pingen und alles funktioniert einwandfrei, auch das VPN funktioniert und ich erreiche die einzelnen Hosts.
    • Das Webinterface der Proxmox Hosts ist zurzeit noch über die jeweilige öffentliche IP erreichbar, solange meine Infrastruktur nicht steht. Das Webinterface von pfSense ist nur noch über VPN erreichbar.
    • Bei beiden Proxmox Hosts habe ich das IP-Forwarding konfiguriert. Heißt: Wenn ich auf bspw. meinen TeamSpeak Server connecten möchte, dann läuft das über die öffentliche IP des jeweiligen Proxmox Hosts ab, welcher den Traffic zu meinem TS3-Container PATtet (Ganz normal über von mir konfigurierte iptables Regeln). Das Setup funktioniert soweit auch einwandfrei, alles kein Problem.

    Mein Vorhaben:

    • Aller Traffic soll über die pfSense laufen, von dort zu dem jeweiligen Host/Container geroutet werden.
    • Theoretisch einfach, Portweiterleitung erstellen, auf die vLAN IP des jeweiligen Hosts zeigen lassen und gut ist.

    Das Problem:

    • Das mit der Weiterleitung funktioniert NUR, wenn ich die iptables auf den Proxmox Hosts konfiguriert lasse. Aber genau diesen Schritt möchte ich abschaffen! Wenn ich nun bspw. einen Container erstelle, der eine Webseite am Laufen hat, dann wäre der Workflow folgender:
      Portweiterleitung auf pfSense erstellen mit der IP des jeweiligen Hosts, wo der Container liegt -> Portweiterleitung auf dem Proxmox Host via iptables erstellen, weiter zur IP des Containers -> Container erhält nun den Traffic
    • Wie ihr seht, müsste ich also sowohl die pfSense als auch die iptables konfigurieren, was mir etwas ineffizient erscheint.

    Meine Fragen:

    • Ist es möglich den 2. Schritt wegzulassen? Ich persönlich (wie gesagt, ich bin kein Netzwerktechniker!), würde bei der jetzigen Konfiguration sagen: Nein! Was bräuchte ich? Vermutlich ein weiteres Interface/Cloud vLAN. Stimmt das ? Wenn ja, wie würde ich das neue vLAN dann auf den Proxmox Hosts konfigurieren müssen? Oder geht es vielleicht sogar über das vLAN das ich bereits habe (obwohl es für das Cluster verwendet wird) ?
    • Nehmen wir an es ist möglich, würdet ihr dazu raten? Oder ist das aus mir nicht bekannten Gründen keine schlaue Idee?
      Was ich jedoch stark bezweifel, denn zurzeit habe ich einen "größeren" administrativen Aufwand, als wenn ich nur eine Firewall konfigurieren müsste (Ja, es ist nur eine weitere Firewall Regel, aber dennoch zusätzlicher Aufwand). Aber vielleicht macht es aus sicherheitstechnischer Sicht irgendwie mehr Sinn oder so.

    Ich habe natürlich schon einige Zeit damit verbracht, eine Lösung zu finden, habe diverse Sachen probiert und bin vieles gedanklich durchgegangen, aber es wollte nichts so wirklich klappen. Wohl gemerkt: Ich habe auf meinem Standrechner ebenfall Proxmox, da läuft pfSense allerdings in einer virtuellen Maschine. Hier muss ich also 3 Regeln erstellen: Router -> Proxmox, Proxmox -> pfSense, pfSense -> Container/VM. Und auch das meiste was ich bisher im Internet gefunden habe, bezieht sich darauf, pfSense als VM im Proxmox zu installieren. Aber ich habe ich eine pfSense VOR den Hosts, nicht innerhalb.


    Das Ganze hat keinen Stress und ich werde mich auch nach wie vor mit dem Problem beschäftigen und so, aber vlt. hat einer von euch ja einen Anhaltspunkt oder eine Richtung, in die er mich bringen kann.


    Vielen Dank schon mal im Voraus und bleibt gesund!


    Mit freundlichen Grüßen


    Dominic Resch

  • Ich habe einen ähnlichen Setup am laufen.


    Wieso benutzt du eine Portweiterleitung? Ich würde hier direkt auf haproxy setzen. Da siehst du dann auch direkt was abgeht, kannst bei http auch Zertifikate einbinden etc. Du leitest dann beim pfSense/haproxy direkt auf die private IP von dem Container. Das funktioniert nur, wenn die Container auch wissen, dass die Route nach drausen über den Proxmox läuft.


    Ansonsten hast du dir da eine Dreicksverbindung gebaut, wo die pfSense nur den Hinkanal übernimmt und die Gäste auf dem Proxmox selbst nach draussen antworten. Das ist technisch auch möglich, aber etwas komplizierter und eher für höheren Durchsatz gedacht.

  • Servus!

    Danke schon mal für die Antwort.


    Ja, an sich soll HAProxy dann auch verwendet werden. Aber das bringt mir ja nur was bei TCP Verbindungen (in meinem Fall dann eben nur für Webserver). TeamSpeak bspw. nutzt ja UDP, sowie die meisten Gameserver.

    Ich hatte nicht erwartet die Anwendungen für das Problem beschreiben zu müssen, da es an sich meiner Meinung nach keine Rolle spielt.

    Wenn du mit Dreiecksverbindung meinst: pfSense <-> Proxmox, Proxmox <-> Container, pfSense <-> Container, dann stimme ich dir zu. Aber genau das möchte ich halt beheben. Quasi mit einer Art "direkt Verbindung" zwischen Container und pfSense ("direkt Verbindung" in "", weil der Traffic ja dennoch über Proxmox läuft).

    Also pfSense <-> Proxmox, pfSense <-> Container
    Sodass der Traffic über die pfSense läuft und dementsprechend zum richtigen Container geroutet wird, ohne dass ich in Proxmox zusätzliches etwas machen muss. Ich möchte quasi pfSense das "Netz der Container" bekannt machen, wenn du so willst. Vielleicht durch ein zusätzliches vLAN oder so? Wie gesagt, ab hier übersteigt es leider mein Wissen, was ich dennoch nun lernen möchte.


    Mit freundlichen Grüßen


    Dominic Resch

  • Also dann, ich denke ich habe mich einfach ziemlich dämlich angestellt. Anfangs hatte ich nur einen Server, weshalb ich iptables und NAT/Masquerading verwendet habe. Nun hab ich eben drei. Lösung ist ziemlich einfach: Auf den Proxmox Hosts eine Bridge für's vLAN Interface erstellen und gut ist. Danke dennoch für die Antworten.