Reverse Proxy Caddy / Loadbalancing

Started by hsiewert, April 12, 2024, 12:16:59 PM

Previous topic - Next topic
OK, die neue Option "TLS Server Name" neben der schon gelesenen "TLS Insecure Skip Verify" Option eben nach einem Update der Test OPNsense VM gefunden (neu zumindest seit 1.5.2) ...

Und erfreulicherweise auch nicht in den Advanced Options "versteckt", so dass der unbedarfte User das dann intuitiv sogar entsprechend erfolgreich konfigurieren kann  ;D 👍

Ich hab die UI etwas verbessert um die Relevanten Optionen besser hervorzuheben. Gut wenn es dir gefällt.  ;D
Hardware:
DEC740

@Reiner030 Ich hab das DEBUG log in der nächsten Version eingebaut. Danke für das Feedback.

https://github.com/opnsense/plugins/issues/3935
Hardware:
DEC740

April 28, 2024, 01:47:54 PM #18 Last Edit: April 28, 2024, 01:53:55 PM by guenti_r
Eine Frage:

Habe Backends, die "nur" HTTPS verstehen und über vhosts laufen, wie ist da die korrekte Vorgehensweise?
Ich bekomme es mit den üblichen HowTos nicht hin und im Caddy-Forum wird das irgendwie anders angegangen...

Caddy wirft mir immer "remote error: tls: unrecognized name" aus.

April 28, 2024, 03:09:49 PM #19 Last Edit: April 28, 2024, 03:19:43 PM by guenti_r
UPDATE:

Konnte es mit manuellem editieren hinbekommen, anscheinend geht das noch nicht über die GUI.

Szenario:
Hinter dem Caddy liegt eine lokale Cloudpanel-VM mit der IP 192.168.1.205.
Wenn ich eine neue Website mit einer Beispiel-Domain anlegen will (mit self-signed Cert) dann muss man im Caddyfile folgendes abändern:

www.beispieldomain.at {
   handle {
      reverse_proxy https://192.168.1.205 {

         transport http {
            tls_server_name www.beispieldomain.at
         }
      }
   }


Ist hier nur experimentell; über die GUI funktioniert es so (noch) nicht.

Häh was doch das geht über die GUI.

In den Docs steht das alles. Schau dir mal die Optionen bei Handler an.

https://docs.opnsense.org/manual/how-tos/caddy.html#reverse-proxy-handler

Und dazu das Beispiel hier:
https://docs.opnsense.org/manual/how-tos/caddy.html#reverse-proxy-the-opnsense-webui

Außerdem gibt es seit os-caddy-1.5.4 auch das hier für vhosts:
https://docs.opnsense.org/manual/how-tos/caddy.html#reverse-proxy-to-an-upstream-webserver-serving-vhosts

Hardware:
DEC740

April 28, 2024, 04:12:04 PM #21 Last Edit: April 28, 2024, 04:48:10 PM by guenti_r
Leider nein, sobald ich nach einer internen upstream domain gehe, bekomme ich "remote error: tls: unrecognized name"

Extern geht es ohne Probleme.

Hier habe ich was gefunden und angewendet:

https://caddy.community/t/caddy-reverse-proxy-to-multiple-sites-on-port-80/17263/4

Das Beispiel geht aber ganz genau so wie auch in dem Thread beschrieben mit der GUI.

- Du kannst den Host Header verändern. Dafür gibt es das Header menü.
- Die Checkbox für TLS gibt es, diese ersetzt das https://
- "TLS Server Name" gibt es auch in der GUI, dort kann man den Namen setzen.

Wenn das nicht geht, zeige mir bitte ganz genau das Caddyfile welches nicht geht, was du mit der GUI erstellt hast. Und das Caddyfile was du manuell editiert hast.

Nur so kann ich das Verhalten nachstellen und wenn es einen Fehler gibt patchen.
Hardware:
DEC740

April 28, 2024, 05:39:55 PM #23 Last Edit: April 28, 2024, 05:45:09 PM by guenti_r
Ich sagte ja schon, über die GUI funktioniert es nicht, weil im Handler eine IP anzugeben ist und keine Domain.
Habe im vorherigen Post das funktionierende Besipiel abgebildet.

Manuelles editieren des Caddy-Files geht sofort.
Man benötigt dann auch keine Header Manipulation mehr.

Szenario:
Eine öffentliche WAN-IP mit mehreren gepointeten Domainnamen (www.beispiel1.com, www.beispiel2.com etc...).

OPNSense mit Caddy grundlegend eingerichtet.
Im LAN zB. eine Cloudpanel-VM mit mehreren gehosteten Webseiten (zB: 192.168.1.100).
Im Caddy die gewünschten Domains anlegen.

Für diese Domains KEINE Handlers oder Headers einrichten.

Im Caddyfile die dazugehörigen Einträge folgend abändern:
www.beispiel1.com {
handle {
reverse_proxy 192.168.1.100:443 {
transport http {
tls_server_name www.beispiel1.com
}
}
}

abort
}


und

www.beispiel2.com {
handle {
reverse_proxy 192.168.1.100:443 {
transport http {
tls_server_name www.beispiel2.com
}
}
}

abort
}


Caddy restarten und es funktioniert.

https://caddyserver.com/docs/caddyfile/directives/reverse_proxy#tls_server_name

VORSICHT: Das hier ist experimentell anzusehen  ;)




April 28, 2024, 06:01:31 PM #24 Last Edit: April 28, 2024, 06:13:26 PM by Monviech
Aber man kann bei Upstream Domain doch eine IP Adresse eintragen. Und man kann TLS anhaken und bei TLS Server Name etwas eingeben. Vielleicht stehe ich hier auf dem Schlauch.

Hier z.b ein Beispiel Caddyfile was jemand mit der GUI erstellt hat. Darin sieht man genau das was du zeigst.

https://github.com/opnsense/plugins/issues/3929#issuecomment-2068171214

Hast du os-caddy-1.5.4 installiert?

EDIT: Wenn tls-server-name auftauchen muss, ohne dass gleichzeitig TLS angehakt wird, dann muss ich das in der template fixen. transport_http erscheint nur, sobald TLS angehakt wurde. Aber bei dir ist es das erste mal dass es jemand ohne tls in der direktive braucht.
Hardware:
DEC740

April 28, 2024, 06:20:57 PM #25 Last Edit: April 28, 2024, 06:24:01 PM by guenti_r
Oh, Fehler gefunden!

Caddy reloaded/restarted sich nicht gerne über die GUI  :-\

Man drückt reload/restart, im Glauben es wäre so...
Dann geht man davon aus, die Änderungen wären durch. Aber dem ist dann nicht so.
Manuelles restarten über die CLI und plötzlich funktioniert alles einwandfrei!

Somit bin ich also ohne es zu wissen ins offene Messer gerannt.

@Monviech, DANKE!

EDIT: Eben dein Edit übersehen. Ja, das könnte nicht schaden.

@guenti_r

Hiermit wird tls_server_name und tls unabhängig voneinander.

https://github.com/opnsense/plugins/pull/3948
Hardware:
DEC740