OPNsense Forum

International Forums => German - Deutsch => Topic started by: ThomasH on May 13, 2019, 11:27:13 pm

Title: HAProxy: Rule Verständnisfrage
Post by: ThomasH on May 13, 2019, 11:27:13 pm
Hallo zusammen

Ich bin am Konfigurieren des HAProxy und bringe das Teil einfach nicht richtig zum Laufen. Eigentlich ist es ein einfaches Testszenario in welchem zwei verschiedene Domains (test1.domain.com und test2.domain.com) auf
dem selben Port erreichbar sein sollen (Port HTTP 89), ohne SSL nur HTTP.

Meines Erachtens habe ich alles richtig konfiguriert:

1. NAT Rule erstellt: Anfragen via Port 89 werden auf HAProxy / OpnSense weitergeleitet
2. HAProxy: 2 Real Server erstellt
3. HAProxy: 2 verschiedene Conditions erstellt (Host contains test1.domain.com und test2.domain.com)
4. HAProxy: 2 Rules erstellt
5. HAProxy: 2 Backend Pools erstellt mit Zuweisung des jeweiligen Real Servers (Rest default, keine Rules etc.)
6. HAProxy: 2 Public Services erstellt (Listener)

Ich vermute nun ein Problem in den Rules und dort in der Execute function. In älteren Versionen von OpnSense gab es dort die Möglichkeit "Use specified Backend Pool" anzugeben. Nun gibt es diesen Eintrag nicht mehr. Ich sehe einzig "Override server in Backend Pool" und "Map domains to backend pools using a map file". Ist einer dieser Optionen die "Nachfolgefunktion"? Wenn ja, wie muss ich das einrichten, dass aufgrund der Rule
(mit entsprechender Condition "Host contains...") auf den Backend Pool und somit auf den entsprechenden Server zugegriffen wird?

Testmässig habe ich nun mal unter der Rule "Map domains to backend pools using a map file" ausgewählt mit Parameter Map file: none und Default backend pool: der jeweilige Backend Pool. Weiter oben die entsprechende Condition und unter "Logical operator for conditions" AND (default). Keine Ahnung ob das richtig ist und so funktionieren könnte. Im HAProxy Log File sehe ich, dass jeweils Requests an einen der Public Service ankommt. Dort erscheint dann die folgende Meldung:

haproxy[55878]: xxx.xxx.xxx.xxx:49773 [13/May/2019:23:00:10.104] Listener_Test1_89 Listener_Test1_89/<NOSRV> -1/-1/-1/-1/0 503 212 - - SC-- 1/1/0/0/0 0/0 "GET / HTTP/1.1"

Die Backend Webserver laufen aber problemlos.
Was ich auch nicht verstehe ist die Tatsache, dass gemäss Log File die Requests immer an den gleichen Public Service gelangen (obwohl bei beiden eine entsprechende Rule (mit Condition host match) hinterlegt ist).

Weiss hier evtl. jemand Rat, ich bin mittlerweile verzweifelt und weiss nicht mehr, wo das Problem liegen könnte.

Vielen Dank für eure wertvolle Hilfe.

Gruss Thomas
Title: Re: HAProxy: Rule Verständnisfrage
Post by: superwinni2 on May 14, 2019, 01:51:23 pm
Hallo ThomasH


hast du die Rules auch dem Frontend zugeordnet?


Ansonsten führe mal bitte folgenden Befehl auf deiner OPNsense aus und Poste den Output. Dann sehen wir was du wie konfiguriert hast:
Code: [Select]
cat /usr/local/etc/haproxy.conf
Title: Re: HAProxy: Rule Verständnisfrage
Post by: astromeier on May 14, 2019, 03:22:41 pm
Aus der kurzen Beschreibung kann ich auch nichts falsches erkennen.

Vielleicht hilft dir mein Howto etwas weiter:
Link zum Howto (https://forum.opnsense.org/index.php?topic=12126.0)
Lass einfach den Kram mit HTTPS offloading weg...
Title: Re: HAProxy: Rule Verständnisfrage
Post by: superwinni2 on May 14, 2019, 03:40:14 pm
Hallo Thomas


sei mir bitte nicht böse aber es wäre echt sehr sehr hilfreich einfach deine Config zu posten.
Habe keine Lust in der Anleitung den Fehler zu erahnen....
Da sieht man direkt wenn was falsch eingestellt ist oder nicht....
(Nachher ist etwas eben falsch eingestellt weil du eben dieses SSL Offloading weggelassen hast)


Grüße
Title: Re: HAProxy: Rule Verständnisfrage
Post by: astromeier on May 14, 2019, 08:58:08 pm
Hi Hi
Thomasverwirrung ;-)

ThomasH = TO

Thomas aka astromeier = Helfenwollender

Title: Re: HAProxy: Rule Verständnisfrage
Post by: superwinni2 on May 14, 2019, 09:02:36 pm
Oh  ::)  da hab ich wohl etwas vertauscht *lach*
Sorry :D
Title: Re: HAProxy: Rule Verständnisfrage
Post by: ThomasH on May 14, 2019, 10:04:54 pm
Hallo zusammen

Hier spricht nochmals ein Thomas... der Hilfesuchende :)

Vielen Dank mal vorerst für eure Antworten.
Hallo ThomasH

hast du die Rules auch dem Frontend zugeordnet?

Ansonsten führe mal bitte folgenden Befehl auf deiner OPNsense aus und Poste den Output. Dann sehen wir was du wie konfiguriert hast:
Code: [Select]
cat /usr/local/etc/haproxy.conf

Ja, die Rules sind den Frontends / Public Services zugewiesen. Untenstehend der Output von der HAProxy Konfiguration:

#
# Automatically generated configuration.
# Do not edit this file manually.
#
global
   # Note: Could be a security issue, but required for some feature.
   uid                     80
   gid                     80
   chroot                  /var/haproxy
   daemon               
   stats                  socket /var/run/haproxy.sockelt level admin
   nbproc                  1
   nbthread               1
   tune.ssl.default-dh-param   1024
   spread-checks            0
   tune.chksize            16384
   tune.lua.maxmem            0
   log /var/run/log local0 info
   
defaults
   log      global
   option redispatch -1
   timeout client 30s
   timeout connection 30s
   timeout server 30s
   retries 3
   
# autogenerated entries for ACLs

# autogenerated entries for config in backends/frontends

# autogenerated entries for stats


# Frontend: Listener_Test2_89 (Listener Test 2 für Port 89)
frontend Listener_Test2_89
   bind 0.0.0.0:89 name 0.0.0.0:89
   mode http
   option http-keep-alive
   option forwardfor
   # tuninng options
   timeout client 30s
   
   # logging options
   option httplog
   #ACL: Condition_Test2
   acl acl_5cd8547bc163c6.80550707 hdr_sub(host) -i test2.domain.com
   # ERROR: missing parameters
   # ACTION INVALID: Test2-rule

   
# Frontend: Listener_Test1_89 (Listener Test 1 für Port 89)
frontend Listener_Test1_89
   bind 0.0.0.0:89 name 0.0.0.0:89
   mode http
   option http-keep-alive
   option forwardfor
   # tuninng options
   timeout client 30s
   
   # logging options
   option httplog
   #ACL: Condition_Test1
   acl acl_5cd853985b9ff4.30025630 hdr_sub(host) -i test1.domain.com
   # ERROR: missing parameters
   # ACTION INVALID: Test1-rule   

   
# Backend: SRVDB_Test1_89 (Test1-89)
backend SRVDB_Test1_89
   # health checking is DISABLED
   mode http
   balance source
   # stickiness
   stick-table type ip size 50k expire 30m
   stick on src
   # tuning options
   timeout connect 30s
   timeout server 30s
   http-reuse never
   server SRVDB_Test1_89 192.168.10.6:89

# Backend: SRVDC16_Test2_89 (Test2-89)
backend SRVDC16_Test2_89
   # health checking is DISABLED
   mode http
   balance source
   # stickiness
   stick-table type ip size 50k expire 30m
   stick on src
   # tuning options
   timeout connect 30s
   timeout server 30s
   http-reuse never
   server SRVDC16_Test2_89 192.168.10.30:89   
   
listen local_statistics
   bind         127.0.0.1:8822
   mode         http
   stats uri      /haproxy?stats
   stats realm      HAProxy\ statistics
   stats admin      if TRUE
   
# statistics are DISABLED

   
Wie ihr sehen könnt gibt es in den Frontends Errors, die allenfalls das Problem erklären:
# ERROR: missing parameters
# ACTION INVALID: Test1-rule      

Hier ein Screenshot eines Public Servers:

(http://www.viniecc.ch/Proxy/PublicService1.png)

...die Konfiguration einer Rule:

(http://www.viniecc.ch/Proxy/Rule1.png)

... Details zur Condition:

(http://www.viniecc.ch/Proxy/Condition1.png)

Hinweis: Der Domainnamen wurde entsprechend angepasst auf test1.domain.com etc.

Vielen herzlichen Dank für eure hochgeschätzte Unterstützung!

Gruss vom Hilfesuchenden

Thomas
Title: Re: HAProxy: Rule Verständnisfrage
Post by: superwinni2 on May 14, 2019, 10:26:17 pm
Ich glaube da sind zwei Fehler drin:
Einmal in den Regeln und einmal in den Frontends.
Du braucht für beide Backends nur ein Frontend ;) Also bitte eines der Beiden löschen.
Bei dem Frontend was du behälst, bitte beide (!) Regeln hinzufügen.


Zum "Fehler" deiner Rule:Der Fehler liegt in der "logik" deiner Rule.

Du willst durch die Rule erreichen,dass ein spezieller BackendPool benutzt wird?
Falls ja:
Nimm bei "Execute Funktion" -> "Use specific Backend Pool" und wähle dann unten drunter bei "Use backend Pool" deinen Pool aus. Ist die erste Option in der riesigen Auswahlliste... Es kan bisher einmal bei mir vor, dass aufgrund von blöden Bildschirmeinstellungen diese Option oben "versteckt" war... dann halt die Pfeiltasten benutzen ;)
Falls nein: Erklär mir bitte nochmals was du vor hast :D


Falls dem so ist, sollte es dann funktionieren.

EDIT: Noch was gefunden in deiner Condition:
Änder mal von "Host contains" nach "Host matches"
Title: Re: HAProxy: Rule Verständnisfrage
Post by: ThomasH on May 14, 2019, 11:25:23 pm
Hallo superwinni2

Vielen herzlichen Dank für die rasche Rückmeldung. Ich habe die Konfiguration gemäss deinem Input angepasst. Jetzt verstehe ich auch etwas mehr die Logik dahinter. Trotzdem geht es nun immer noch nicht. :( Hier nochmals die aktuelle Konfiguration, inkl. Backend Pool und Real Server:

Frontend

(http://www.viniecc.ch/Proxy/PublicService_v2.png)

Rule 1

(http://www.viniecc.ch/Proxy/Rule1_v2.png)

Rule 2

(http://www.viniecc.ch/Proxy/Rule2_v2.png)

Condition

(http://www.viniecc.ch/Proxy/Condition_v2.png)

Backend Pool

(http://www.viniecc.ch/Proxy/BackendPool1_v2.png)

Real Server

(http://www.viniecc.ch/Proxy/RealServer1_v2.png)

Vielen Dank auch für den Input bezüglich "Use backend Pool", als ich die Skalierung im Browser angepasst habe (für die Screenshoots) ist auf einmal auch dieser Eintrag erschienen...

Vielen Dank für eure Unterstützung, wäre für mich ein Meilenstein, wenn dies nun endlich laufen würde.

Gruss Thomas


Title: Re: HAProxy: Rule Verständnisfrage
Post by: superwinni2 on May 15, 2019, 06:16:48 am
Guten Morgen

Kannst du bitte nochmals die Textbasierte Config hochladen? Finde jetzt so an sich eigentlich keinen Fehler mehr...

Evtl. Auch noch die log wenn du probierst darauf zu zugreifen?


Zeigt der Syntax test irgendwelche Fehler an?

Grüße

Gesendet von meinem LG-H815 mit Tapatalk

Title: Re: HAProxy: Rule Verständnisfrage
Post by: ThomasH on May 15, 2019, 12:07:38 pm
Hallo

Vielen Dank für die Rückmeldung. Sämtliche Syntax-Tests sind erfolgreich, es werden keinerlei Fehler angezeigt. Hier ein Auszug aus den Fehlermeldungen (Logs):

(http://www.viniecc.ch/Proxy/Errors.JPG)

Es scheint so, dass der dahinterliegende Server nicht erreichbar ist. Wenn ich auf die Server mittels IP Adresse zugreife kann ich aber problemlos auf die Webseiten zugreifen...

Den Auszug der Config werde ich heute Abend nachliefern.

Gruss Thomas



Title: Re: HAProxy: Rule Verständnisfrage
Post by: ThomasH on May 15, 2019, 12:27:56 pm
Ich gleich nochmals... ich konnte nun bereits jetzt die HAProxy Config auslesen. Untenstehend das Resultat:

#
# Automatically generated configuration.
# Do not edit this file manually.
#

global
    # NOTE: Could be a security issue, but required for some feature.
    uid                         80
    gid                         80
    chroot                      /var/haproxy
    daemon
    stats                       socket /var/run/haproxy.socket level admin
    nbproc                      1
    nbthread                    1
    tune.ssl.default-dh-param   1024
    spread-checks               0
    tune.chksize                16384
    tune.bufsize                16384
    tune.lua.maxmem             0
    log /var/run/log local0 info

defaults
    log     global
    option redispatch -1
    timeout client 30s
    timeout connect 30s
    timeout server 30s
    retries 3

# autogenerated entries for ACLs

# autogenerated entries for config in backends/frontends

# autogenerated entries for stats


# Frontend: Listener_Test_89 (Listener Test für Port 89)
frontend Listener_Test_89
    bind 0.0.0.0:89 name 0.0.0.0:89
    mode http
    option http-keep-alive
    option forwardfor
    # tuning options
    timeout client 30s

    # logging options
    option httplog
    # ACL: Condition_Test2
    acl acl_5cd8547bc163c6.80550707 hdr(host) -i test2.domain.com
    # ACL: Condition_Test1
    acl acl_5cd853985b9ff4.30025630 hdr(host) -i test1.domain.com

    # ACTION: Test2-rule
    use_backend SRVDC16_Test2_89 if acl_5cd8547bc163c6.80550707
    # ACTION: Test1-rule
    use_backend SRVDB_Test1_89 if acl_5cd853985b9ff4.30025630

# Backend: SRVDB_Test1_89 (Test1-89)
backend SRVDB_Test1_89
    # health checking is DISABLED
    mode http
    balance source
    # stickiness
    stick-table type ip size 50k expire 30m
    stick on src
    # tuning options
    timeout connect 30s
    timeout server 30s
    http-reuse never
    server SRVDB_Test1_89 192.168.10.6:89

# Backend: SRVDC16_Test2_89 (Test2-89)
backend SRVDC16_Test2_89
    # health checking is DISABLED
    mode http
    balance source
    # stickiness
    stick-table type ip size 50k expire 30m
    stick on src
    # tuning options
    timeout connect 30s
    timeout server 30s
    http-reuse never
    server SRVDC16_Test2_89 192.168.10.30:89

listen local_statistics
    bind            127.0.0.1:8822
    mode            http
    stats uri       /haproxy?stats
    stats realm     HAProxy\ statistics
    stats admin     if TRUE

# statistics are DISABLED

Vielen Dank für eure Hilfe.

Gruss Thomas
Title: Re: HAProxy: Rule Verständnisfrage
Post by: superwinni2 on May 15, 2019, 12:45:31 pm
Also sieht so aus, als wenn dein Backend Server nicht antwortet...
Wenn du die Server direkt ansprichst... musst du dort auch den Port 89 angeben?
Wird intern SSL verwendet?
Title: Re: HAProxy: Rule Verständnisfrage
Post by: ThomasH on May 15, 2019, 01:10:30 pm
Ja, ich muss den Port 89 auch angeben. Beide Zugriffe funktionieren direkt problemlos:

http://192.168.10.6:89/
http://192.168.10.30:89/

Es ist keinerlei SSL involviert, ganz simpel über Port 89.

Gibt es allenfalls ein Routing Problem, NAT Problem? Ich poste mal die NAT Rule. Gibt es allenfalls hier einen Überlegungsfehler?

OpnSense Firewall Alias:

(http://www.viniecc.ch/Proxy/OpnSense_Alias.JPG)

NAT Rule:

(http://www.viniecc.ch/Proxy/NAT_1.JPG)
(http://www.viniecc.ch/Proxy/NAT_2.JPG)

Vielen Dank für eure Bemühungen!

Gruss Thomas
Title: Re: HAProxy: Rule Verständnisfrage
Post by: superwinni2 on May 15, 2019, 01:20:24 pm
Öööhmmm... Ich hab gar keine Forwarding Regel angelegt....
Ich hab nur ne WAN Regel die erlaubt, dass man via Port 80 (oder in deinem Fall Port 89) auf die FirewallIP darf...


PS. Es gibt bereits einen Alias für die Firewall (This Firewall) hier sind dann alle eigenen IPs dann drin.


Was ich vorschlagen würde:
Lösch die Forwarding Regel udn lege eine Regel im WAN an. Testweise kannst ja mal ne kleine ANY regel anlegen.
Protokol: UDP/ TCP
Source: ANY
Destination: This Firewall
Port: 89


Dann nochmal schauen ob es klappt.. Falls ja dann würde ich eben die Regel noch weiter einschränken indem ich nur die gewünschte "Destination" IP freigeben würde.
Title: Re: HAProxy: Rule Verständnisfrage
Post by: ThomasH on May 16, 2019, 12:34:00 am
Vielen Dank für deine Rückmeldung. Ich habe die bestehende NAT- und Firewall-Rule wie von dir vorgeschlagen gelöscht und nun "nur" eine WAN Rule angelegt:

(http://www.viniecc.ch/Proxy/FW_Rule_Proxy.png)

Leider hat aber auch das keine Verbesserung gebracht. :( Ich habe weiterhin die Fehlermeldungen im HAProxy Log und im Webbrowser erscheint jeweils "503 Service Unavailable". Ich sehe auch im Logfile des Webserververs, dass die Requests jeweils gar nicht bis zum Server kommen.

Ich habe nun testmässig den HAProxy Service deaktiviert und direkt eine NAT Port Forwarding Rule mit Port 89 erstellt. Als Destination habe ich abwechselnd einen der Webserver hinzugefügt. Im Anschluss konnte ich von extern problemlos auf die jeweiligen Webserver zugreifen. Das zeigt mir, dass das Problem irgendwo im HAProxy liegen muss.

Ich bin mittlerweile verzweifelt und weiss echt nicht wo das Problem liegen könnte...
Title: Re: HAProxy: Rule Verständnisfrage
Post by: superwinni2 on May 16, 2019, 07:11:06 am
Also muss wohl eine andere Problemsuche her...


Du kannst auch PortForwarding und HA Proxy Parrallel benutzen.. Da der HAProxy aktuell dann die "Test" Methode ist, würde ich hier einen anderen Port nehmen wie z.B. 8080.

Firewallregel nicht vergessen zu ändern ;)
Dazu auf den HAProxy -> PublicService gehen und 0.0.0.0:8080 als Listener eintragen und das bestehende Löschen.


Zudem im PublicService mal einen "Default Backend Pool" auswählen und nochmals probieren. Am besten wieder mit einem Blick in die Logs.


Wenn du dann auf den dementsprechenden Backend Pool kommst, wissen wir das der HAProxy richtig mit dem Server kommuniziert. Dann stimmt irgendwas mit dem Regeln nicht...


PS. Falls du und vielleicht die Zukünftigen Leser nicht wissen wie man die Zugriffe direkt über die Konsole/SSH ausliest:
Code: [Select]
Config:   cat /usr/local/etc/haproxy.conf
Zugriffe: clog -f /var/log/haproxy.log
Title: Re: HAProxy: Rule Verständnisfrage
Post by: ThomasH on May 16, 2019, 01:58:35 pm
Hallo superwinni2

Vielen Dank für deine Rückmeldung. Danke auch für den Hinweis bezüglich Shell Kommando für die Config und Logs.

Mir war/ist bewusst, dass das Forwarding und HAProxy parallel laufen können. Ich wollte bei meinem Test einfach sicherstellen, dass nichts "reinfunkt".

Folgendes habe ich gemacht:

--> Dies hatte leider keine Verbesserung zur Folge, gleiches Verhalten, gleiche Fehlermeldungen


--> Dies hatte leider keine Verbesserung zur Folge, gleiches Verhalten, gleiche Fehlermeldungen

Ich bin mir nun am Überlegen, ob ich HAProxy ganz lösche und neu installiere und konfiguriere. Ich weiss ansonsten nicht mehr weiter.

Gruss Thomas
Title: Re: HAProxy: Rule Verständnisfrage
Post by: superwinni2 on May 16, 2019, 02:32:20 pm
Mhmmm seeehr komisch....

Was mir nur mal noch testweise weiterhin einfallen würde... Schnapp dir ne Linux Maschine (Debian, Ubuntu etc.) und installier nen Apache oder Nginx drauf und versuch es mal damit...Alles Standart auf Port 80...
Nicht, dass der Fehler Am Backend liegt...
Ansonsten fällt mir aktuell leider nichts mehr ein...


Die Anfragen kommen bis zum HAProxy (somit stimmt die FW das Anfragen bis zum HAProxy kommen) und Standartmäßig darf ja von der FW alles raus. somit sollte die FW ja auch deine Server erreichen...




Neukonfiguration wäre natürlich die andere möglichkeit wobei ich sowas immer unschön finde...
Title: Re: HAProxy: Rule Verständnisfrage
Post by: ThomasH on May 20, 2019, 12:00:09 pm
Hallo zusammen

Gute Neuigkeiten: ich konnte den HAProxy nun endlich erfolgreich zum Laufen bringen!  :)

Folgendes habe ich gemacht:


Fazit:

Vielen Dank für eure Unterstützung.

Gruss Thomas, der nun happy ist!
Title: Re: HAProxy: Rule Verständnisfrage
Post by: wirehire on May 24, 2019, 08:08:43 am
Hallo,

erstmal schön zu lesen, das am ende alles funktioniert.

Ich habe jetzt 3x probiert nach diversen Anleitungen Haproxy mit letsecrypt aufzusetzten,scheietere aber bisher immer.

Ich möchte am Ende 3 instanzen einbinden und mit ssl ansichern.

Hat jemand mal von seiner config ein paar Bilder? Mein Beispiel wäre zb ein Nextcloud.


 Anfrage nextcloud.example.com ----> Opnsense-haproxy ---> nimmt entgegen ----> Weiterleitung auf den Client (192.168.1.2) Port 80.

 Beim letsencrypt plugin stand immer pending. Hatte aber gesehen das er es über port 444 probiert hat. (hatte die opnsense Gui https auf den Port gelegt wie es in der Anleitung geschrieben stand).

 Derzeit habe ich alle plugins wieder heruntergeworfen. Ich würde mich freuen, wenn mir jemand einen Anstoß geben kann.

Danke
Title: Re: HAProxy: Rule Verständnisfrage
Post by: superwinni2 on May 24, 2019, 08:18:37 am
Hallo wirehire


Naja.. Zeig uns doch mal her wie deine Config aussieht und wir schauen mal wie wir die Problemchen lösen.
Habe hier zwar auch etwas ähnliches in meiner Config stehen mit 3 Instanzen + Let'sEncrypt, aber da steht noch um einiges mehr weil das eine gut gewachsene Struktur in letzter Zeit war.
Dann können wir sicher schauen wo der Schuh drückt.


Beim letsencrypt plugin stand immer pending. Hatte aber gesehen das er es über port 444 probiert hat. (hatte die opnsense Gui https auf den Port gelegt wie es in der Anleitung geschrieben stand).
Naja.. Aber eigentlich will Let'sEncrypt doch auf Port 80 für die Authentifizierung?!?




Schreib doch mal deine Config wie du für gut empfindest und lade diese dann am besten in Textform hoch. Befehle stehen ja hier im Thread.
Title: Re: HAProxy: Rule Verständnisfrage
Post by: wirehire on May 24, 2019, 08:36:01 am
okay ,

probiere ich noch mal:

https://forum.opnsense.org/index.php?topic=12126.0
diese Howto habe ich als Vorlage genommen.

Kann ich dann die config auslesen um sie hier zu posten?
Title: Re: HAProxy: Rule Verständnisfrage
Post by: superwinni2 on May 24, 2019, 08:43:55 am
Das Problem was ich an solchen Anleitungen finde, ist immer das man oftmals zwar eine Anleitung hat um sich zu orientieren, aber ob es bei einem dann auch wirklich genau gleich funktioniert ist immer etwas fragwürdig... Habe z.B. mehrere (>5) OPNsense im Einsatz... Davon funktioniert keine wie die andere... Jede hat hier oder da ein paar Schrauben die man anderst anziehen muss...
Zudem ist es auch oftmals die Frage ob ne Fritzbox oder ähnliches davor hängt, wie es wirklich hinter der Struktur aussieht etc...
Ich habe z.B. meine Konfig etwas komplizierter gemacht, wenn man jedoch versteht wie es funktioniert finde ich es ganz einfach. Habe es so sogar schon einigen Kollegen verständlcih gemacht ;)


Aber poste doch einfach mal deine Config, änder die privaten Daten wenn du nicht willst wie deine Domain heißt und dann schauen wir mal wie gut wir hinkommen ;)
Es führen ja bekanntlich auch viele Wege nach Rom.

Title: Re: HAProxy: Rule Verständnisfrage
Post by: wirehire on May 24, 2019, 08:57:03 am
Danke superwinni2,

ich stelle es erneut ein und poste dann meine config.
Title: Re: HAProxy: Rule Verständnisfrage
Post by: wirehire on May 24, 2019, 11:58:34 am
habe es noch einmal eingestellt aber läuft leider nicht.

wo befindet sich (pfad) die config datei zum auslesen?
Title: Re: HAProxy: Rule Verständnisfrage
Post by: wirehire on May 24, 2019, 12:06:26 pm
gefunden :

# Frontend: mattermost_frontend ()
frontend mattermost_frontend
    bind 127.0.0.1:80 name 127.0.0.1:80
    mode http
    option http-keep-alive
    default_backend Mattermost_back
    # tuning options
    timeout client 30s

    # logging options
    # ACL: Mattermost_ACL
    acl acl_5ce7bccb5fd722.63607215 path_beg -i /*

    # ACTION: Mattermost_aktion
    use_backend Mattermost_back if acl_5ce7bccb5fd722.63607215

# Backend: Mattermost_back ()
backend Mattermost_back
    # health checking is DISABLED
    mode http
    balance source
    # stickiness
    stick-table type ip size 50k expire 30m
    stick on src
    # tuning options
    timeout connect 30s
    timeout server 30s
    http-reuse never
    server Mattermost 192.168.1.20:443 ssl verify none

Die config ist momentan ohne Letsencrypt , auf dem client läuft nginx mit ssl

Wenn ich probiere die Seite aufzurufen kommt :

SSL hat einen Eintrag erhalten, der die maximal erlaubte Länge überschritten hat. Fehlercode: SSL_ERROR_RX_RECORD_TOO_LONG
Title: Re: HAProxy: Rule Verständnisfrage
Post by: wirehire on May 24, 2019, 02:22:26 pm
Ich sehe aber nie eine Anfrage im log von haproxy.

Ich habe noch wie in einem Vorschlag:

die beiden rules eingetragen :

WAN   TCP   *   *   WAN address   443 (HTTPS)   127.0.0.1   443 (HTTPS)

IPv4 TCP   *   *   127.0.0.1   443 (HTTPS)   *      NAT
Title: Re: HAProxy: Rule Verständnisfrage
Post by: superwinni2 on May 24, 2019, 02:57:11 pm
Sorry für die kurze Antwort... Bin grad am Handy und nicht am Rechner...
Das wegen der log liegt wahrscheinlich am frontend... Trage mal die richtige WAN Adresse oder einfach 0.0.0.0 ein... Dann solltest du auch was sehen...

Gute Ansatz zuerst zu schauen ob was in der log kommt *daumenhoch*

Und wegen deiner NAT rule... Ich glaub habe bei mir noch nie eine eingetragen... Immer nur die FW Regel gemacht...
Wenn du eine machst, musst glaub noch das "No RDR" aktivieren

Gesendet von meinem LG-H815 mit Tapatalk
Title: Re: HAProxy: Rule Verständnisfrage
Post by: wirehire on May 24, 2019, 03:24:02 pm
@superwinni2

Danke für deine Hilfe.

Habe jetzt das frontend auf 0.0.0.0:80 geändert und die NAT rule entfernt.

Jetzt sehe ich im haproxy log die aufrufe. Wenn ich http://domain eingebe komme ich auch auf die Seite. https leider nicht.

was wäre jetzt der richtige weg? im client nginx die ssl keys löschen und dann auf der sense ssl für haproxy zu erstellen?

Bzw. warum gibt er nur das HTTp durch aber nicht das HTTps vom client?
Title: Re: HAProxy: Rule Verständnisfrage
Post by: superwinni2 on May 24, 2019, 03:29:31 pm
Nochmals wieder kurz
Du musst auch ein frontend für https anlegen.
Ich gehe mal davon aus, dass alle deine Seiten am Ende auf https laufen sollen.

Dann im http frontend eine Regel anlegen das alles was nicht den Pfad ./well-known (oder wie der acme Pfad lautet) ist auf https weiterleitet.
Dann im https frontend die Regeln erstellen, damit er anhand vom Domain Namen das passende Backend nimmt...
Dann müsste es glaub klappen...
Das wegen dem acme brauchst du später für letsencrypt

Gesendet von meinem LG-H815 mit Tapatalk

Title: Re: HAProxy: Rule Verständnisfrage
Post by: wirehire on May 24, 2019, 03:39:28 pm
wow ^^

die sätze muss ich erstmal auf mich wirkken lassen :)

ja am ende soll alles per https bzw ssl ablaufen.

bisher ist ja im client schon ssl in nginx hinterlegt. muss das raus?

ich muss mal schauen wie ich das mit dem letsencrypt plugin hinbekomme.

man merkt das Du dich sehr gut auskennst, ich finde immer das die Howtos generell so einen Weg einmal auch mit Bilder aufzeichenen sollten :), erstelle ichd ann auch gerne wenn es läuft. Ich glaube das geht vielen so das es bildlich mit einem example am besten in den Kopf sickert :).
Title: Re: HAProxy: Rule Verständnisfrage
Post by: superwinni2 on May 24, 2019, 04:07:38 pm
bisher ist ja im client schon ssl in nginx hinterlegt. muss das raus?

ich muss mal schauen wie ich das mit dem letsencrypt plugin hinbekomme.

man merkt das Du dich sehr gut auskennst, ich finde immer das die Howtos generell so einen Weg einmal auch mit Bilder aufzeichenen sollten :), erstelle ichd ann auch gerne wenn es läuft. Ich glaube das geht vielen so das es bildlich mit einem example am besten in den Kopf sickert :).

Also ssl am Server muss nicht raus... Ich persönlich "vertraue" meinem DMZ Bereich und lasse hinter dem HAProxy alles als http laufen... Dann ist die Fehlerquelle "doppeltes https" auch weg...

Das ist relativ easy mit dem letsencrypt....
Plugin konfigurieren (am besten mit der HAProxy Unterstützung da er dann das backend automatisch anlegt)
Dann im http interface eine Regel anlegen mit
"wenn der Pfad der acme Pfad ist dann auf das backend vom acme"
 und Gleichzeitig eine Regel mit
"wenn der url deine gewünschten Domains und nicht acme Pfad dann auf https"

Kleiner Tipp wegen dem negieren von Sachen...
Lege eine Bedingung an mit
"ist acme Pfad" und  der mit "ist nicht acme Pfad"
Der Unterschied sollte nur der Haken "negate condition" oder wow es heißt sein...
Dann kannst dir deine Regeln zusammenbauen ;)

Falls es nicht klappt, bin nachher am Rechner, dann schreibe ich genauer mit Anleitung


PS Anleitung... Ja sowas wollte ich auch machen und habe mich bereits daran versucht... Aber damit das dann auch für alle gilt und gültig sein kann muss einiges beachtet werden...

Gesendet von meinem LG-H815 mit Tapatalk

Title: Re: HAProxy: Rule Verständnisfrage
Post by: wirehire on May 24, 2019, 04:55:05 pm
@superwinni2

Danke für Erklärung, ich probiere es mal so umzusetzten aber noch sind schwarze wolke über dem Kopf :)
Title: Re: HAProxy: Rule Verständnisfrage
Post by: superwinni2 on May 24, 2019, 05:00:31 pm
Ansonsten mal ein zwei Sätze über HAProxy lesen und über dann Änderungen machen und die config über die Konsole anschauen und verstehen was es ändert...
Dann eine Logik entwickeln was wie reagieren soll und dann umsetzen ;)

Was ich noch sagen kann: Die redirect rules greifen immer vor dem anderen Regeln...
Als diesem Grund muss die http zu https redirect Regel auch das "nicht acme Pfad" sein haben...

Gesendet von meinem LG-H815 mit Tapatalk

Title: Re: HAProxy: Rule Verständnisfrage
Post by: wirehire on May 24, 2019, 05:06:24 pm
guter tipp mit der config, schaue ich mir auch jedes mal an.

habe jetzt das letsencrypt plugin installiert, konfiguriert und aktiviert.

hat auch alles geklappt. zertifikat hat er schon erstellt.

ich werde jetzt also unter rules eine neue anlegen:

wenn acme pfad dann..
Title: Re: HAProxy: Rule Verständnisfrage
Post by: wirehire on May 24, 2019, 05:13:27 pm
leg er diese rules nicht sogar schon automatisch an, wenn ich haproxy bei letsencrypt aktiviere?
Title: Re: HAProxy: Rule Verständnisfrage
Post by: superwinni2 on May 24, 2019, 05:26:29 pm
Theoretisch ja.. Wie gut oder schlecht das allerdings geht... Keine Ahnung mehr

Gesendet von meinem LG-H815 mit Tapatalk

Title: Re: HAProxy: Rule Verständnisfrage
Post by: wirehire on May 24, 2019, 05:32:14 pm
bisher eher schlecht :))

noch greift nicht alles.

ich werde erstmal das doppel ssl ausstellen.
Title: Re: HAProxy: Rule Verständnisfrage
Post by: wirehire on May 24, 2019, 05:44:03 pm
also das ssl im nginx habe ich ausgestellt, intern über port 80 erreichbar und getestet.

die rules stimmen irgendwie noch nicht, she im haproxy log das eine anfrage auf port 443 rein kommt auf das erstellte frontend, aber dann passiert nix :)
Title: Re: HAProxy: Rule Verständnisfrage
Post by: wirehire on May 24, 2019, 05:56:57 pm
jetzt klappt es, die Frage ist nur ob es so richtig ist.

ich habe beim backend auf port 80 gestellt, da kein ssl mehr im nginx aktiviert ist.

dann im Frontend ssl entlastung und das zugehörige ssl zertifikat ausgewählt. nun geht es und meldet auch das richtige zertifikat.

ist das so richtig?

wenn jetzt ein weiterer Dienst dazu kommt, müsste ich nur ein weiteres Backend und frontend anlegen oder?
Title: Re: HAProxy: Rule Verständnisfrage
Post by: superwinni2 on May 24, 2019, 08:48:31 pm
Das klingt ja schonmals nicht schlecht ;)


Wegen dem weiteren Dienst:
Backend anlegen, Pool anlegen und Regeln nicht vergessen ;)
Das Frontend ist ja das gleiche... Es greift dann nur eine andere Regel bei der Auswahl des Backends.
Title: Re: HAProxy: Rule Verständnisfrage
Post by: wirehire on May 24, 2019, 09:15:30 pm
Würde es dann nicht sinn machen , bei den Regeln auf dem Host Namen zu matchen?

bisher habe ich das mit dem /* pfad.
Title: Re: HAProxy: Rule Verständnisfrage
Post by: superwinni2 on May 24, 2019, 09:24:04 pm
Achsooo
Ja das ist natürlich mehr als sinnvoll ;)
Das mit dem Pfad finde ich nur relevant wegen der Acme challenge... Ansonsten will man die einzelnen Backends ja eher über den Domainnamen trennen


Hier mal noch spaßeshalber meine Config von mir zuhause:
Vielleicht liest du ja raus was du brauchst, ansonsten bin ich gerne für Fragen offen.
Habe zuhause aktuell jedoch nur eine Seite "öffentlich"... Mein WP Server ist deszeit "offline"
Code: [Select]
root@OPNsense1:~ # cat /usr/local/etc/haproxy.conf
#
# Automatically generated configuration.
# Do not edit this file manually.
#


global
    # NOTE: Could be a security issue, but required for some feature.
    uid                         80
    gid                         80
    chroot                      /var/haproxy
    daemon
    stats                       socket /var/run/haproxy.socket level admin
    nbproc                      1
    nbthread                    1
    tune.ssl.default-dh-param   1024
    spread-checks               0
    tune.chksize                16384
    tune.bufsize                16384
    tune.lua.maxmem             0
    log /var/run/log local0


defaults
    log     global
    option redispatch -1
    timeout client 30s
    timeout connect 30s
    timeout server 30s
    retries 3


# autogenerated entries for ACLs


# autogenerated entries for config in backends/frontends


# autogenerated entries for stats




# Frontend: WAN_https ()
frontend WAN_https
    http-response set-header Strict-Transport-Security "max-age=15768000"
    bind 192.168.178.4:443 name 192.168.178.4:443 ssl no-sslv3 no-tlsv10 no-tlsv11 no-tls-tickets ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256 crt-list /tmp/haproxy/ssl/5c852b4aef9e88.45675078.certlist
    bind 192.168.178.191:443 name 192.168.178.191:443 ssl no-sslv3 no-tlsv10 no-tlsv11 no-tls-tickets ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256 crt-list /tmp/haproxy/ssl/5c852b4aef9e88.45675078.certlist
    mode http
    option http-keep-alive
    option forwardfor
    # tuning options
    timeout client 1m


    # logging options
    option httplog
    # ACL: Host_ist_push_domain_xyz
    acl acl_5cdf1ec3cfc2b4.19528643 hdr(host) -i push.domain.xyz


    # ACTION: SSL Redirect ungültig
    http-request redirect location http://google.de unless acl_5cdf1ec3cfc2b4.19528643


    # ACTION: Rule_backend_gotify
    use_backend BackendPool_Gotify if acl_5cdf1ec3cfc2b4.19528643


# Frontend: WAN_http ()
frontend WAN_http
    bind 192.168.178.191:80 name 192.168.178.191:80
    bind 192.168.178.4:80 name 192.168.178.4:80
    mode http
    option http-keep-alive
    # tuning options
    timeout client 30s


    # logging options
    option httplog
    # ACL: Pfad_beginnt_mit_acme_challenge
    acl acl_5ca7b6170c5440.28623250 path_beg -i /.well-known/acme-challenge/
    # ACL: Host_ist_push_domain_xyz
    acl acl_5cdf1ec3cfc2b4.19528643 hdr(host) -i push.domain.xyz
    # ACL: Pfad_beginnt_nicht_mit_acme_challenge
    acl acl_5cdf296b57e264.72995214 path_beg -i /.well-known/acme-challenge/


    # ACTION: SSL Redirect für gültige Seiten
    http-request redirect scheme https code 301 if acl_5cdf1ec3cfc2b4.19528643 !acl_5cdf296b57e264.72995214
    # ACTION: SSL Redirect ungültig
    http-request redirect location http://google.de unless acl_5cdf1ec3cfc2b4.19528643


    # ACTION: redirect_acme_challenges
    use_backend acme_challenge_backend if acl_5ca7b6170c5440.28623250


# Backend: BackendPool_WP ()
backend BackendPool_WP
    # health checking is DISABLED
    mode http
    balance source


    # tuning options
    timeout connect 1m
    timeout server 30s
    http-reuse never
    server realWP 10.10.20.101:80


# Backend: acme_challenge_backend (Added by Let's Encrypt plugin)
backend acme_challenge_backend
    # health checking is DISABLED
    mode http
    balance source
    # stickiness
    stick-table type ip size 50k expire 30m
    stick on src
    # tuning options
    timeout connect 30s
    timeout server 30s
    http-reuse never
    server acme_challenge_host 127.0.0.1:43580


# Backend: BackendPool_Gotify ()
backend BackendPool_Gotify
    # health checking is DISABLED
    mode http
    balance source
    # stickiness
    stick-table type ip size 50k expire 30m
    stick on src
    # tuning options
    timeout connect 30s
    timeout server 30s
    http-reuse never
    server gotify 10.10.20.110:8080
Title: Re: HAProxy: Rule Verständnisfrage
Post by: wirehire on May 24, 2019, 09:47:25 pm
also lasse ich das mit dem /* drin und erstelle dazu eine match rule?
Title: Re: HAProxy: Rule Verständnisfrage
Post by: superwinni2 on May 24, 2019, 09:53:35 pm
Ich würde es auf den Hostnamen ändern... du brauchst auf jeden fall eine unterscheidung zwischen den eizelnen anfragen / servern... Hier bietet sich eigentlich so gut wie immer der FQDN an.
Daher würde ich die Condition z.B. ändern auf "mattermost.domain.xyz" und wenn beispielsweise irgendwann noch ne Wordpress dazu kommt dann gibts ne neue regel die besagt wenn wordpress.domain.xyz aufgerufen wird soll das Backend von Wordpress greifen.


Musst natürlich soweit mitdenken, dass bei dir auch noch letsencrypt läuft ;)
Darfst aber natürlich gerne wieder die config posten und dann schau ich mir an was du zusammen konfiguriert hast :)
Title: Re: HAProxy: Rule Verständnisfrage
Post by: wirehire on May 24, 2019, 10:07:58 pm
ich habe die matches jetzt mal auf host angepasst.

die erste greift , aber bei der zweiten will er das andere zertifikat nehmen. beim syntax test kommt das der backend kein frontend hat.

ich poste gleich mal die config
Title: Re: HAProxy: Rule Verständnisfrage
Post by: wirehire on May 24, 2019, 10:11:45 pm
#
# Automatically generated configuration.
# Do not edit this file manually.
#

global
    # NOTE: Could be a security issue, but required for some feature.
    uid                         80
    gid                         80
    chroot                      /var/haproxy
    daemon
    stats                       socket /var/run/haproxy.socket level admin
    nbproc                      1
    nbthread                    1
    tune.ssl.default-dh-param   1024
    spread-checks               0
    tune.chksize                16384
    tune.bufsize                16384
    tune.lua.maxmem             0
    log /var/run/log local0 info

defaults
    log     global
    option redispatch -1
    timeout client 30s
    timeout connect 30s
    timeout server 30s
    retries 3

# autogenerated entries for ACLs

# autogenerated entries for config in backends/frontends

# autogenerated entries for stats


# Frontend: mattermost_frontend ()
frontend mattermost_frontend
    bind 0.0.0.0:80 name 0.0.0.0:80 ssl  crt-list /tmp/haproxy/ssl/5ce7b75390d475.80894832.certlist
    bind 0.0.0.0:443 name 0.0.0.0:443 ssl  crt-list /tmp/haproxy/ssl/5ce7b75390d475.80894832.certlist
    mode http
    option http-keep-alive
    default_backend Mattermost_back
    # tuning options
    timeout client 30s

    # logging options
    # ACL: Mattermost_ACL
    acl acl_5ce7bccb5fd722.63607215 hdr(host) -i matter.example.com

    # ACTION: Mattermost_aktion
    use_backend Mattermost_back if acl_5ce7bccb5fd722.63607215

# Frontend: nextcloud_frontend ()
frontend nextcloud_frontend
    bind 0.0.0.0:80 name 0.0.0.0:80 ssl  crt-list /tmp/haproxy/ssl/5ce84c367bfcf8.98124961.certlist
    bind 0.0.0.0:443 name 0.0.0.0:443 ssl  crt-list /tmp/haproxy/ssl/5ce84c367bfcf8.98124961.certlist
    mode http
    option http-keep-alive
    default_backend Nextcloud_back
    # tuning options
    timeout client 30s

    # logging options
    # ACL: NEXTCLOUD_ACL
    acl acl_5ce84de7069a99.41039013 hdr(host) -i cloud.example.com

    # ACTION: Nextcloud_aktion
    use_backend Nextcloud_back if acl_5ce84de7069a99.41039013

# Backend: Mattermost_back ()
backend Mattermost_back
    # health checking is DISABLED
    mode http
    balance source
    # stickiness
    stick-table type ip size 50k expire 30m
 stick on src
    # tuning options
    timeout connect 30s
    timeout server 30s
    http-reuse never
    server Mattermost 192.168.1.20:80

# Backend: acme_challenge_backend (Added by Let's Encrypt plugin)
backend acme_challenge_backend
    # health checking is DISABLED
    mode http
    balance source
    # stickiness
    stick-table type ip size 50k expire 30m
    stick on src
    # tuning options
    timeout connect 30s
    timeout server 30s
    http-reuse never
    server acme_challenge_host 127.0.0.1:43580

# Backend: Nextcloud_back ()
backend Nextcloud_back
    # health checking is DISABLED
    mode http
    balance source
    # stickiness
    stick-table type ip size 50k expire 30m
    stick on src
    # tuning options
    timeout connect 30s
    timeout server 30s
    http-reuse never
    server Nextcloud 192.168.1.40:80


noch mal angepasst, jetzt kommen keine syntax fehler
Title: Re: HAProxy: Rule Verständnisfrage
Post by: wirehire on May 24, 2019, 10:28:08 pm
 Im log sehe ich das er immer auf das erste matter frontend geht.
Title: Re: HAProxy: Rule Verständnisfrage
Post by: superwinni2 on May 24, 2019, 10:35:31 pm
Ahhh großer Fehler... Ich glaube der passiert jeden...
Du brauchst zwei Frontends...
 - ein http Frontend
 - ein https Frontend


Diese Frontend "reagieren" entweder auf deine http Anfragen bzw auf deine https Anfragen....
PS. Ich weiß nicht ob es funktioniert, dass man im Backend angibt die Regel "find_acme_challenge" benutzt... Ich benutze sozusagen meine eigene im Frontend... Aber auch hier führen vielleicht viele Wege nach Rom :)


Also ich würde folgendes machen:
Code: [Select]

"Ganz von vorne anfangen"
Frontend für http anlegen
Frontend für https anlegen
Conditions erstellen
  - host_ist_matterhost  -> Host matches matterhost.example.com
  - host_ist_nextcloud   -> Host matches nextcloud.example.com
  - find_acme_challenge  -> Pfad beginnt mit /.well-known/acme-challenge/
  - nicht_acme_challenge -> Pfad beginnt nicht mit /.well-known/acme-challenge/


Dann folgende Regeln erstellen
  - SSL_Redirect_matterhost -> host_ist_matterhost & nicht_acme_challenge -> http-request redirect "scheme https code 301"
  - SSL_Redirece_nextcloud  -> host_ist_nextcloud & nicht_acme_challenge  -> http-request redirect "scheme https code 301"
  - Backend_matterhost      -> host_ist_matterhost & nicht_acme_challenge -> Benutze backend "Matterhost"
  - Backend_nextcloud       -> host_ist_nextcloud & nicht_acme_challenge  -> Benutze backend "Nextcloud"
  - Backend_acme            -> find_acme_challenge                        -> Benutze Backend "acme"


Dann die Regeln aus deinen Backends löschen... Regeln benutze ich nur im Frontend.
Regeln für http Frontend:
  - SSL_Redirect_matterhost
  - SSL_Redirect_nextcloud
  - Backend_acme


Regeln für https Frontend:
 - Backend_matterhost
 - Backend_nextcloud


Dann nochmals probieren...
Ich hoffe ich habe nichts vergessen um alles bei dir abzubilden ;) Falls ja bitte ich um verzeihung.. Dann suchen wir den Fehler erneut ;)
Title: Re: HAProxy: Rule Verständnisfrage
Post by: wirehire on May 24, 2019, 10:38:45 pm
erstmal vielen Dank. Ich teste es sofort!
Title: Re: HAProxy: Rule Verständnisfrage
Post by: superwinni2 on May 24, 2019, 10:40:31 pm
Kein Problem ;)
Vielleicht kommt auch jemand und schreit "aber das geht viel besser" :)
Falls das jemand liest und dies denkt darf er gerne zwischen rein schreien :P
Ich bin immer offen für Kritik :D
Title: Re: HAProxy: Rule Verständnisfrage
Post by: wirehire on May 24, 2019, 11:00:29 pm
jetzt hat es geklappt.

so macht es auch mehr Sinn von der Struktur und dem Aufbau. Jetzt kann ich es besser nachvollziehen.

ich hatte gerade noch vergessen ssl entlastung und die beiden  zertifikate beim https frontend einzustellen. dann ging es mit deiner Anleitung!

Vielen Dank

(ich werde davon eine Doku erstellen)
Title: Re: HAProxy: Rule Verständnisfrage
Post by: wirehire on May 24, 2019, 11:04:07 pm
Noch eine Frage hätte ich, wenn jetzt  ein Dienst selber seine zertifikate durch letsencrypt zieht, würde ihn dann das doppel ssl stören?


 webseite beispiel.example.com hat ssl

 und wenn ich dann im frontend auch noch ein zertifikat hinzufüge über das le plugin?

 oder würde ich dann eher eine regel machen match host =beispiel.example.com und das dann auf das http frontend packen?

sehe das es für mailcow einen haproxy Anleitung gibt.

frontend https-in
  bind :::443 v4v6 ssl crt mailcow.pem
  default_backend mailcow

backend mailcow
  option forwardfor
  http-request set-header X-Forwarded-Proto https if { ssl_fc }
  http-request set-header X-Forwarded-Proto http if !{ ssl_fc }
  server mailcow 127.0.0.1:8080 check

würde jetzt für mich bedeuten, letsencrypt plugin zertifikat erstellen, backend einstellen wie in der config.

richtig?
Title: Re: HAProxy: Rule Verständnisfrage
Post by: superwinni2 on May 24, 2019, 11:29:38 pm
schön zu hören das es funktioniert :)


Also eigentlich sollte es kein Problem geben, auch intern über https zu kommunizieren.
Muss mal schauen ob ich dies irgendwo so habe, aber ich glaube ich habe intern bisher immer so gut wie nur unverschlüsselte Verbindungen...
Kann ich aber sicher auch mal noch die Tage irgendwie testen wenn ich einen freien Moment dafür finde.


Das was du vorhast, könnte etwas knifflig werden oder sogar unmöglich sein...
Du willst den Backend Server mit LetsEncrypt verschlüsseln? Was genau willst du damit bezwecken? Normalerweise ist ja nun das schöne an dem HAProxy, dass er dir die ganzen "Sorgen" mit Letsencrypt und dem Reverse Proxy abnimmt. Somit braucht es deinen Server nicht mehr kümmern ob das Zertifikat gültig ist oder nicht.
Damit dein Server zudem über Letsencrypt ein Zertifikat bekommt, muss er öffentlich mit Port 80 erreichbar sein. Aber genau das wollen wir ja nicht und verstecken deshalb den Server hinter dem HAProxy.


Bei deiner Anleitung für mailcow wird  auch das ssl zertifikat vom HAProxy gegeben. Siehe "ssl crt mailcow.pem". Ich vermute "mailcow.pem" wird das gültige zertifikat sein.
Dieses wird dann vom HAProxy veröffentlicht. Im Backend redet der HAProxy mit mailcow unverschlüsselt über Port 8080. Denn verschlüsselt wäre der Port nur mit 8443 von mailcow.


Was du mir genau mit deiner Frage fragen willst verstehe ich nicht.. vielleicht bin ich aber auch schon zu müde dafür :P



Title: Re: HAProxy: Rule Verständnisfrage
Post by: wirehire on May 24, 2019, 11:38:54 pm
Ich bin auch schon zu müde.

Im Endeffekt hast Du trotzdem meine Frage beantwortet.

In der Anleitung sieht man ja das es dann vonhaproxy das ssl benutzt. Und genau wie du es sagst, es ist ja der Vorteil von Haproxy das der Rest halt nicht per ssl extra ist ,sondern sich haproxy zentral darum kümmert.

also muss ich im Endeffekt es genauso einstellen wie du es mir vorhin gezeigt hast für ein neues Backend mailcow.

Teste ich aber erst morgen wenn ich wieder Fit bin :)

Danke für deine große Hilfe und dem dazulernen!

Ich wünsche dir eine angenehme Nacht!
Title: Re: HAProxy: Rule Verständnisfrage
Post by: superwinni2 on May 24, 2019, 11:49:19 pm
Wenn ich alles beantworte ohne Fragen zu beantworten ist immer ein sehr gutes Zeichen ;)




Wenn du intern unbedingt verschlüsselt kommunizieren willst, mach nen selbst signiertes Zertifikat, richte den BackendServer dementsprechend ein und dann sollte es passen.
ACHTUNG hier kommen noch mehr Funktionen der OPNsense hinzu: (Zertifikatverwaltung)
Wenn du dem nicht ganz vertraust oder sichergehen willst, dass das Zertifikat nicht verändert worden ist, kannst du auch eine Certificate Authority (CA) erstellen. Dann das Zertifikat für deinen Server ausstellen und dort importieren und dann beim Backend auch noch das "Überpüfe Gültigkeit des Zertifikates" aktivieren.


Falls es auch morgen noch Probleme gibt.. Einfach melden ;)
Title: Re: HAProxy: Rule Verständnisfrage
Post by: wirehire on May 25, 2019, 12:17:50 pm
@superwinni2

ich habe es gerade mal mit einer Testinstalltion ausporobierrt und es läuft super.

Bin den gleichen Weg wie gestern gegangen und konnte damit mailcow erfolgreich zum haproxy hinzufügen!

Vielen Dank!

Werde es nachher dann auf produktiv umstellen.
Title: Re: HAProxy: Rule Verständnisfrage
Post by: superwinni2 on May 25, 2019, 04:06:34 pm
Sehr gut

Wenn man die Logik verstanden hat, ist es ganz einfach

Viel Spaß

Gesendet von meinem LG-H815 mit Tapatalk

Title: Re: HAProxy: Rule Verständnisfrage
Post by: superwinni2 on May 27, 2019, 10:01:29 am
Hi wirehire


also habe eben mal bei mir nachgeschaut... Ich habe ebenfalls HAProxy mit SSL Backends / Realen Servern am laufen. Dürfte somit kein Problem sein....


Was ich noch sagen/schreiben wollte: Wenn di e Anleitung fertig hast, schau ich gerne mal noch drüber... Habe wie gesagt auch schon probiert eine Anleitung zu schreiben... Ist jedoch nicht ganz so einfach... :P
Title: Re: HAProxy: Rule Verständnisfrage
Post by: wirehire on June 07, 2019, 04:45:23 pm
@superwinni2

ich mache die noch die Tage fertig, wäre wirklich super wenn Du dann noch ein Mal drüber schaust.

Läuft super stabil bis jetzt!
Title: Re: HAProxy: Rule Verständnisfrage
Post by: mbr89 on November 17, 2021, 11:17:28 pm
Hat jemand eine Idee was mit

AcmeClient: challenge type not supported: http_haproxy (9200f47f-a1fd-4679-b611-49994ca2b149)

gemeint sein könnte ?