Port 443 und Port 80 Weiterleiten abhängig von der Quelle - Ist das Möglich?
-
Eigentlich nicht. Es gibt direkt nach Installation von HAproxy bereits ein Template, welches man "installieren" kann, das den Einstatzzweck "shared fontend" abbildet.
Shared Frontend: Das Frontend von HAproxy, also die "Seite" von HA, die Verbindungen annimmt, wird für mehrere Domains/URLs geteilt, daher der Name.
Backends: Server in DMZ oder LAN, die die eigentlichen Seiten ausliefern sollen.Beim Backend werden quasi die Server konfiguriert (und ein Check, damit HAproxy weiß ob da überhaupt was läuft oder ob er eine temporäre Fehlerseite ausliefern soll), beim Frontend - oder Frontends - die IP(s), auf denen von extern was angenommen wird (und auf welchem Port). Dann wird durch sog. ACLs (access control lists) definiert, was bei welchem Event ausgeführt wird.
Das Shared Frontend Template bspw. definiert 3 Backends und konfiguriert ein Frontend, welches je nach Hostname (host1/2/3.domain.tld) dann ein anderes Backend "selektiert" und sich damit verbindet. Das sollte recht einfach anpassbar sein.
Wenn man das noch mit SSL und ACME spicken möchte, wirds ein klein wenig umfangreicher. Kommt aber drauf an, ob das SSL Zertifikat auf der pfSense durch den Proxy ausgeliefert werden soll (SSL Termination) oder ob der Zugriff einfach durchgereicht wird und die Endgeräte selbst SSL sprechen (SSL Passthrough). Geht beides, je nachdem ist das eine oder das andere gewünscht oder einfacher.
-
Hallo Jens,
danke für die Erklärung. Die Funktionsweise hab ich geschnallt. Ich schau mir das mal an.
Grüße
Heinz -
das dilemma ist ein shared frontend für mehrere TLDs auf
1 ext IP auf :443zb: zeigen mittels A Record alle auf die 1 (eine) IP
service.sandy.xyz
service.lexi.xyz
service.kenzie.xyzund alles sollte auf das backend service.stars.xyz zeigen
funny ist das alle (also sandy lexie & kenzie) auf stars hinkommen
klar durch das port forwarding auf der pfS-boxallerdings immer das wildcard zertifikat von sandy.xyz verwendet wird
was wieder nicht das ziel ist.sandy hat ein LE wildcard
lexie & kenzie sind LE Certs p hoststars.xyz ist nur der interne name des apache :)
irgendwo hängt die logik.
PS nein es sind nicht die "wirklich verwendeten namen" ;)
-
@noplan said in Port 443 und Port 80 Weiterleiten abhängig von der Quelle - Ist das Möglich?:
funny ist das alle (also sandy lexie & kenzie) auf stars hinkommen
klar durch das port forwarding auf der pfS-boxWas für ein Forwarding? Das ist doch Quark. Wenn ich mit HAProxy auf einer externen IP:443 Pakete annehme brauche ich kein Forwarding.
allerdings immer das wildcard zertifikat von sandy.xyz verwendet wird
Warum sollte? Es wird normalerweise das Zert von HAProxy verwendet und davon das was benötigt wird.
sandy hat ein LE wildcard
lexie & kenzie sind LE Certs p hostWarum ist das überhaupt relevant? Du willst doch Certs per ACME auf der Sense machen, also kümmert das Backend Zert überhaupt nicht?
-
-
list itemad forwarding jop das stimmt.
die bringt ja wirklich nix da sie auf die interne IP der pfS box zeigt (himmel)
das 443 port ist ja eh in der firewall open.(die forward sache kommt wohl noch aus alten Tagen ..... ;)
Danke für den Hinweis !! -
ad Zertifikate
ja das versteh ich auch nicht.
das Backend wird ohne Probleme von der sandy aus erreicht und funktioniert
will ich das gleiche Backend von lexi oder kenzie aus erreichen
komm ich zwar zum backend aber die Browser laufen Amok weil das Zert nicht passt (da es das wildcard von sandy ist)irgendwas versteh ich nicht richtig.
ich hab 3 https frontends gebaut
frontend 1 als shared basis
frontend 2 für sandy mit primary frontend= frontend-1
frontend 3 für kenzie mit primary frontend= frontend-1
frontend 4 für lexie mit primary frontend= frontend-1ich muss doch sowohl am backend unter
das CA und das Client Cert angebenals auch im frontend unter
a) das LE wildcard oder wenn per host das host cert
b) die certs die ich am frontend verwende
c) und hier die CA
irgendwo faslch abgebogen ?
-
-
Im Backend "musst" du gar keine Zertifikate angeben. Entweder du stellst ein, dass das Backend strikt geprüft wird ob es ein valides Zert hat oder nicht. Normalerweise macht mans nicht, weil oft der Sinn des Proxies ja genau darin liegt, überhaupt ordentliche Zerts zu haben.
Das Zert das vom Proxy ausgeliefert wird, ist nur im Frontend definiert und bei den Mikroscreenshots kann ich leider nichts von der Konfig erkennen, bei dem ich so helfen könnte, sorry. Ohne vernünftig mal deine Konfig zu posten und was genau von wo aus nicht geht, wird das schwer mit der Glaskugel und so :)
-
@JeGr said in Port 443 und Port 80 Weiterleiten abhängig von der Quelle - Ist das Möglich?:
wenn am backend keine zerts abgelegt werden müssen auch ok
funktioniert nur leider mit einem shared frontend nicht ohne zerts am backenddas problem besteht darin
das ich zwar auf die backends (via frontend-2) für domain-2 komm aber
die zerts für domain-1 (also die von frontend-1) bekomm.ich seh mir das morgen in ruhe noch mal an.
btw.
wie machst du einen service aus dem internet erreichbar wenn du kein forwarding machst ? -
@noplan said in Port 443 und Port 80 Weiterleiten abhängig von der Quelle - Ist das Möglich?:
btw.
wie machst du einen service aus dem internet erreichbar wenn du kein forwarding machst ?HA-Proxy sollte direkt auf der WAN-Schnittstelle laufen und deswegen wäre jegliches Portforwarding hier schädlich und könnte ggf. auch deine Problem erklären, wenn du denn welches eingerichtet hast. Den/die Port/s öffnen musst du natürlich trotzdem in der Firewall.
-
ergo musst du ein forwarding auf zB
destinationPort 443 destination firewall itself setzen
nur
in der rule das port zu öffnen funktionierte hier nichtaber danke für den input gleich mal testen
-
@noplan said in Port 443 und Port 80 Weiterleiten abhängig von der Quelle - Ist das Möglich?:
funktioniert nur leider mit einem shared frontend nicht ohne zerts am backend
Öm doch. Schon mehrfach eingerichtet :) In Backends muss kein Zert hinterlegt werden - warum auch? Proxy spricht mit Backend Server, Server präsentiert sein Zert. Warum sollte ich dazu erst eines installieren müssen?
die zerts für domain-1 (also die von frontend-1) bekomm.
Dann kommst du komischerweise bei Frontend 1 raus und nicht bei 2. Das ist obskur und würde eher für einen Fehler der Konfiguration sprechen.
ich seh mir das morgen in ruhe noch mal an.
Das macht immer Sinn :)
wie machst du einen service aus dem internet erreichbar wenn du kein forwarding machst ?
Ömm wie jeder andere Server auch der DIREKT am Internet hängt? Port aufmachen und "lauschen"? ;)
Deine Firewall hängt ja direkt im Internet und ist auf dem WAN direkt erreichbar. Dein Proxy hört auf das WAN. Oder eine IP die dort aufliegt (VIP, Alias etc.). Warum sollte ich also umständlich noch irgendwas forwarden, was "eh einfach da" ist?
Du leitest ja nichts nach innen zu privatem IP Space weiter, sondern antwortest auf deiner WAN IP auf dem HTTPS Port ganz normal als wäre die Firewall der Server selbst. Das ist die Jobbeschreibung des Proxies ^^ergo musst du ein forwarding auf zB
destinationPort 443 destination firewall itself setzen
Nein eben nicht Das machst du wenn du Port 443 ÜBER die Firewall hinweg ins LAN _weiter_leiten willst. Du willst aber nichts WEITERleiten, sondern es am Proxy direkt beantworten!
Sorry aber ich weiß nicht wie man es dir anders erklären soll als es Bob oder ich schon haben. Deine Firewall hat die WAN IP, eine echte IP (wahrscheinlich) und antwortet DORT auf Anfragen aus dem Internet. Da muss NICHTS weitergeleitet werden, weil es kein "weiter" gibt! Der HAProxy läuft nicht HINTER der Firewall, sondern darauf und hört per default auf 80 oder/und 443. Und wenn du sauber bei HAproxy im Frontend als "Listen Address" das WAN ausgewählt hast, dann hört der HAproxy schon auf das WAN, dann musst du dem WAN nicht erst noch irgendwas weiterleiten :)
-
@noplan said in Port 443 und Port 80 Weiterleiten abhängig von der Quelle - Ist das Möglich?:
ich hab 3 https frontends gebaut
frontend 1 als shared basis
frontend 2 für sandy mit primary frontend= frontend-1
frontend 3 für kenzie mit primary frontend= frontend-1
frontend 4 für lexie mit primary frontend= frontend-1Um das hier nochmals aufzugreifen, dazu kurz ein paar Fragen.
- Sandy, Kenzie und Lexie haben alle als Adresse sowas wie <name>.domain.tld - korrekt?
- Kannst du kein wildcard Zertifikat (per LE/ACME) ausstellen, dass alle Namen abdeckt oder geht das aus irgendeinem Grund nicht?
- Wenn es nicht geht - kommt ja vor - kannst du per LE/ACME und deinem Provider ein SAN Zertifikat ausstellen? (ein Zertifikat, in dem alle 3 Domains enthalten sind, funktioniert recht einfach)
Beide Varianten - Wildcard und SAN - sind in Verbindung mit HAproxy wesentlich einfacher zu handeln als 3 einzelne Zertifikate und können jederzeit ergänzt oder geändert werden wenn benötigt. Hält auch den Zertifikatsspeicher und die Konfiguration kleiner.
Ansonsten würde ich ggf. statt dieser Shared Frontend Konfiguration, die das Template da vorschlägt statt dessen die ACL Variante vorschlagen, die das Template ebenfalls enthält. Also EIN Frontend auf Port 80 und auf 443 packen und per ACLs und Actions das "Routing" auf die Backend vornehmen. Hört sich schlimm an, ist aber extrem simpel und wenn du etwas mehr Details zu deinem "was ich gerne hätte" Setup postest, wäre das auch in kurzer Zeit erledigt :)
Schnellstes Setup war erst kürzlich für einen Kunden zwei Seiten hinter Proxy mit Acme/LE packen. Knapp 1h mit ACME LE MultiSAN Zertifikat, automatischer Erneuerung, ACME Redirect, SSL Setup etc. - also wirklich kein großer Aufriß.
Grüße
-
so ich glaub ich dreh jetzt durch !!!
kurzum wenn ich:
port 443 mittels and die zB 10.0.0.1 (die interne IP der Firewall weiterleite)
3 stk Frontends
(1. shared mit LAN Adress IPv4 | https offloading | default backend | use forward option | dem default cert d pfsense einrichte [serverCert] | Add ACL for certificate Subject Alternative Names aktiviere.)
(2. das auf das shared auf pkt 1 zeigt die ACLs für die Backends einrichte | default backend | cert = das LE widcard cert" für diese domain | Add ACL for certificate Subject Alternative Names aktiviere | Add ACL for certificate Subject Alternative Names.)
(3. das auf das shared auf pkt 1 zeigt die ACLs für die Backends einrichte | default backend | cert = das LE mit dem TXT IEntrag u d _acme_challenge für diese domain | Add ACL for certificate Subject Alternative Names aktiviere | Add ACL for certificate Subject Alternative Names.)funktioniert das genau so wie gewollt .... naja ....
@Bob-Dig hatte mich mit seiner Anmerkung " könnte ggf. auch deine Probleme erklären"
drauf gebracht ... die frontends die auf der WAN0 laufen abgedreht .... siehe da man konnte aufgrund der port forwarding ein backend noch erreichen ..... shared frontend eingerichtet ... 2te & 3te domain fix zack bumm rennt mit ssl offloading...wieso es am WAN0 nicht geht versteh ich bis jetzt noch immer nicht .... verdacht der ISP tut was komisches trau ich der Bande zu :(
ich geh jetzt staubsaugen weil ich grantig bin und morgen weitersuchen !
man liest sich!