PfSense Reverse proxy ( 1 Public IP aber 4 Webserver )


  • Hallo liebe pfSense Gemeinde,
    ich bin neu hier und probiere gerade pfSense aus.
    Ich habe es aktuell geschafft pfSense zu installieren und dahinter einen Exchange Server über das Plugin Squid 3 freizugeben.

    Nun ist es so das ich noch mehr Webserver habe, welche alle auf Port 80 oder Port 443 horchen.

    Leide blicke ich ab hier aktuell nicht mehr durch und frage mich wie ich die Umleitung an die richtigen Webserver realisieren kann ?

    Ev. könnte mir da jemand mit 1-2 Beispielen behilflich sein ?

    Gruß

  • LAYER 8 Moderator

    Ahoi,

    ich habe an der Stelle mit Squid keine großen Erfahrungen, da ich es nicht nutze. Aber mit HaProxy solltest du so etwas erreichen können, indem du nach dem Domainnamen weiterleitest (sprich: Zugriffe auf www.test1.de gehen auf srv1, www.test2.de gehen auf srv2 etc.)
    Zusätzlich wirst du SSL hinter nur einer Public IP nur mit SNI hinbekommen, das muss also der Proxy ebenfalls unterstützen (und der Client mitsenden, was alle halbwegs aktuellen Browser tun). HaProxy kann meines Wissens auch dies.

    Allerdings frage ich mich etwas, wie du das vorher betrieben hast wenn du doch nur eine IP hast. Unbedingt sinnvoll halte ich das ja nicht, machbar aber hingegen schon.

    Grüße


  • Hallo JeGr,

    danke für deine Antwort.

    Ich bin noch recht neu im Thema und das ist die erste Konfiguration die ich mache.
    Vorher hatten wir eine IP für einen Domänen Namen, aus Kostengründen soll das aber nun anders werden.

    Mir ist hierbei auch gleich im Post ein Fehler unterlaufen.

    Es handelt sich um subdomains, also z.b.

    exchange.mydomain.com
    lync.mydomain.com
    share.mydomain.com
    suppoprt.mydomain.com

    usw usw. alles natürlich auf port 80 oder port 443

    Für domains soll das aber auch kommen.

    Hast Du zufällig ein Konfigurationsbeispiel für mich ?
    Oder macht es Dir was aus wenn ich dich um Rat frage und hier meine Konfig mal poste wenn ich morgen damit anfange ?

  • LAYER 8 Moderator

    Es handelt sich um subdomains, also z.b.
    Für domains soll das aber auch kommen.

    Das ist für die eigentliche Technik recht unerheblich, allerdings wären "nur subdomains" natürlich einfacher, da man dann SSL mit einem *-Zertifikat erschlagen könnte, ohne SNI zu machen.
    Wenn allerdings unterschiedliche Domains dabei sind und noch welche hinzukommen, kann man auch nicht vorab ein SAN Zertifikat nutzen, sondern muss eben via SNI die Erkennung des Hostnamen vor dem TLS Transfer machen und basierend darauf den Host selektieren. Das sollte HAProxy eigentlich drauf haben.

    Config kannst du immer posten, solltest da aber ggf. private Informationen rauslassen oder schwärzen (Screenshots) bevor du in irgendeine Bredouille kommst.

    Grüße


  • Hallo JeGr,
    nachdem ich nun das ganze Wochenende von 8 uhr in der früh bis um 22 uhr am Abend versucht habe das hin zu bekommen, bin ich nun schon am verzweifeln.

    Kann mir jemand bei der Einrichtung und Konfiguration helfen ?

    Ich bin inzwischen sogar dazu bereit einen obolus springen zu lassen wenn mir jemand zeigt wie das funktioniert oder mir jemand einen Schritt für Schritt Anleitung postet.

    Gruß
    choffmeister

  • LAYER 8 Moderator

    Mit was hast du denn was wie getestet? Squid? HAProxy?


  • Hi JeGr, ich habe beides versucht und bin an beidem gescheitert, hast Du interesse mir dabei per Teamviewer zu helfen ? Soll auch nicht kostenlos sein.

  • LAYER 8 Moderator

    Können wir gerne machen, hängt nur davon ab wie zeitkritisch dir das unter den Nägeln brennt?


  • Hi,

    ich habe das hier so problemlos mit squid-dev am Laufen. Ich habe z.B. die statische IP 1.2.3.4 und alle Hosts zeigen auf dieselbe statische IP:

    Ich herwende ein *.domain.com-Zertifikat.

    • Reverse Proxy -> General -> reverse HTTP proxy port auf 8080 stellen, und HTTPS proxy port auf 8443
    • Entprechende Port forwards am WAN interface einrichten: 80 auf 127.0.0.1 port 8080 und 443 auf 127.0.0.1 port 8443
    • Damit ist der Reverse Proxy von extern auf HTTP 80 und HTTPS 443 erreichbar.

    Dann

    • Reverse Proxy -> Web Servers mit "+" einen neuen Server hinzufügen
    • Enable this peer auf on
    • Peer alias "www"
    • Peer IP auf Name oder IP vom internen Web-Server
    • Peer Port auf Port-Nummer des internen Servers
    • Peer Protocol auf HTTP oder HTTPS, je nachdem, was der Server auf dem o.g. Port spricht. Ein Server kann extern per HTTPS angesprochen werden, obwohl er intern nur HTTP macht

    Dann

    • Reverse Proxy -> Mappings, "+"
    • Enable this uri auf on
    • Group name "www"
    • Peers "www" auswählen (ist der Name von oben)
    • Bei URI dann "^http://www.domain.com/.$" eintragen, wenn HTTP und/oder "^https://www.domain.com/.$ wenn HTTPS

    Jetzt müsste man von extern (oder über NAT reflection auch von intern) auf http://www.domain.com oder https://www.domain.com zugreifen können.

    Dann mit allen anderen Servern wiederholen.