[solved] haproxy und type, wo sind die Unterschiede?
-
proxy-noob hier. Was leider wenig verständlich für mich beschrieben ist, wann man welchen type wählt, bzw. was die Nachteile sind.
Ich habe hier z.B. eine xmpp(jabber)-TLS-Verbindung über den type "tcp" betrieben und konnte trotzdem offloading machen...
Woran kann man festmachen, was womit machbar ist? -
@bob-dig
Meine HAproxy Erfahrung ist leider auch noch eher bescheiden, aber etwas hab ich schon damit rumgespielt.Der Typ tcp arbeitet danach auf den unteren Schichten und kann damit nicht den Hostnamen auslesen und ebenso nicht SNI.
So wie ich es verstanden habe, ist mit tcp auch nur ein Frontend je IP/Port Kombination möglich.Mach mal mit Type tcp das ACL Drop-down auf. Da gibt es nicht viele Optionen.
http arbeitet auf dem Layer 7 und kann damit SNI und den Hostheader lesen und auf dieser Basis filtern.
Damit kann ich dann eine IP/Port-Kombi für mehrere Backends nutzen, was einer der häufigsten Anwendungszwecke ist.Mit "ssl / tcp" war ich bislang noch nicht sehr erfolgreich. Der Typ soll geeignet sein, um ohne SSL-Offloading die Pakete an das Backend zu leiten. Allerdings hat das zumindest dann nicht funktioniert, wenn der Backendserver SNI sehen wollte. Ohne SNI ging es.
Vielleicht weiß dazu jemand noch Rat. -
@bob-dig said in haproxy und type, wo sind die Unterschiede?:
über den type "tcp" betrieben und konnte trotzdem offloading machen...
Woran machst du fest, dass du offloading machst?
https als Typ gibt es eigentlich nicht, daher steht in der Auswahl auch (TCP mode) dahinter. HAproxy kennt eigentlich nur 3 modi, von denen nur 2 relevant sind:
https://cbonte.github.io/haproxy-dconv/2.2/configuration.html#4.2-mode
Das sind
tcp
oderhttp
. Der Modushealth
ist eigentlich nicht wirklich interessant.http
sagt gegenübertcp
nur, dass der eingehende Traffic zusätzlich auf HTTP Protokoll Inhalt geparsed werden soll und alles was nicht HTTP konform ist wird verworfen. Das ist der eigentliche Clou. Ansonsten wird einfach nur TCP angenommen. Was wichtig ist, wenn man L4 mode ohne Inspektion den Traffic einfach durchreichen will ans Backend. Dann wird aber eben kein SNI Header gelesen, denn der ist HTTP Bestandteil. Wenns um ein anderes TCP Protokoll geht kann man ggf. offloading machen, aber eben - je nachdem um was es geht - kein selektives Auswählen des Backends basierend auf angefragter IP oder DNS, außer das Protokoll gibt das über irgendwelche Wege her.Es steht aber schlicht auch drunter was die Option macht. Offloading wird hier nicht durch den Typ getriggert ob
http
,https
odertcp
, sondern über den Haken bei Offloading bei der IP/Portangabe darüber. Ist er drin, erscheint weiter hinten das SSL Setup bzw. wird versucht in TCP Mode 7 zu arbeiten. Ohne Offloading wird TCP redirect auf Layer 4 gemacht. Was man wo braucht hängt also schlicht vom Protokoll ab, das man bedienen möchte.This defines the processing type of HAProxy, and will determine the availabe options for acl checks and also several other options.
Please note that for https encryption/decryption on HAProxy with a certificate the processing type needs to be set to "http".Je nach Modus hat man also andere Optionen für ACL checks zur Verfügung die man sonst nicht hat. Wie gesagt, man kann nicht nach HTTP Pfaden, URLs o.ä. filtern, wenn man im reinen TCP Mode ist, der das nicht ausliest. Dann klappen die ACLs nicht.
-