Truenas (Nextcloud) -> Pfsense -> Cloudflare 522 (timeout)
-
@tsag Was passiert, wenn Du es ohne den Cloudflare DDOS Schutz einrichtest? Denn so wie hier gezeigt, sind doch viele zu viele Variablen drin... auch HAProxy erst mal weglassen...
-
Hey, danke für die Antwort.
Mit ausgeschaltetem Cloudflare Proxy ändert sich leider nichts.Gibt es eventuell irgendwelche Logs die ich bemühen könnte?
Ich habe gerade einmal in die Socket Info geschaut und gesehen, das HAProxy den Port 443 auf eine (mir unbekannte) Ip gebunden hat. Ist das richtig so? Mein lokales Netz hat nur 192.168.1.* und VPN mit 10.10.10.*
-
Gibt es noch irgendetwas, das ich prüfen kann?
Ist es ein Problem, das mein Nextcloud nur über http anstatt https kommuniziert?
-
@tsag said in Truenas (Nextcloud) -> Pfsense -> Cloudflare 522 (timeout):
Ich habe gerade einmal in die Socket Info geschaut und gesehen, das HAProxy den Port 443 auf eine (mir unbekannte) Ip gebunden hat. Ist das richtig so?
Das sollte die WAN IP sein, auf welcher das Frontend lauscht.
Gibt es noch irgendetwas, das ich prüfen kann?
Ja, vieles. Allzu viel hast du ja noch nicht ausgeschlossen und auch nicht viel über Setup und Problem verraten.
Ist es ein Problem, das mein Nextcloud nur über http anstatt https kommuniziert?
Ich denke nicht, da sollte es meiner Meinung einen anderen Fehler geben als 522.
Ist die Nextcloud von intern erreichbar?
Eventuell mit IP:port? Oder über einen DNS Host Override. So kannst du auch ein Problem mit HAproxy ausschließen.Noch was: Du hast mehrere Services auf Port 443 laufen?
Den Port für pfSense WebGUI hast du geändert? -
Okay, ich hab gerade eine Entdeckung gemacht. :)
Ich habe in HA-Proxy die Access Control List entfernt, sodass er auf alle Anfragen auf Port 443 reagiert.
Nun habe ich es mit der IP Adresse getestet und siehe da, ich komme rein! Zwar bekomme ich ein 503 Fehler (503 Service Unavailable) aber das wird erstmal aufgeschoben (Falls jemand hier eine Idee hat, gerne her damit).
Nun habe es einmal mit der Hauptdomain versucht und siehe da, es klappt auch! Natürlich zeigt mir mein Browser die Warnung an, dass das Zertifikat nicht übereinstimmt, aber ich komme immerhin rein (auch Fehler 503).
Nun, also der nächste Test mit subdomain, auf die auch die Zertifikate ausgestellt sind: cloud.xyz.de -> Funktioniert nicht -> Timeout
Nächster Test cloudzwei.xyz.de -> funktioniert.
Zusätzlicher Test -> clouddrei.xyz.de mit Cloudflare Proxy -> timeout
Kann sich da jemand einen Reim drauf bilden?
EDIT: Okay, ich habs geschafft den Server auf meiner gewünschten subdomain zu erreichen, sodass nun die Zertifikate Übereinstimmen.
Ich musste im Backend das Häkchen bei Encrypt(SSL) setzen.Nun muss ich noch den 503 Fehler beheben.
-
@tsag said in Truenas (Nextcloud) -> Pfsense -> Cloudflare 522 (timeout):
Nun habe ich es mit der IP Adresse getestet und siehe da, ich komme rein! Zwar bekomme ich ein 503 Fehler (503 Service Unavailable) aber das wird erstmal aufgeschoben (Falls jemand hier eine Idee hat, gerne her damit).
Also Fehler 503 wäre nicht was, womit ich weiter testen wollte. Der Zugriff von intern, ohne Proxy und DNS Zeugs sollte erst mal funktionieren. D.h., da sollte HTTP-Code 200 zurückkommen. Erst dann würde ich mich um den anderen Kram kümmern.
Heißt das, die Nextcloud hat noch niemals funktioniert, ist völlig jungfräulich und du packst gleich dyn. DNS, Cloudflare und HAproxy davor? Und ich nehme an, du hast so etwas auch noch nicht allzu oft gemacht?
-
503 heißt beim Proxy dass das Backend nicht da ist, das ist dann was lokales und nichts was die Internetverbindung betrifft. Sollte leicht zu prüfen und beheben sein.
-
@viragomann said in Truenas (Nextcloud) -> Pfsense -> Cloudflare 522 (timeout):
Heißt das, die Nextcloud hat noch niemals funktioniert, ist völlig jungfräulich und du packst gleich dyn. DNS, Cloudflare und HAproxy davor? Und ich nehme an, du hast so etwas auch noch nicht allzu oft gemacht?
Genau. Ich bin gerade von einem Synology NAS auf Truenas umgestiegen. Leider ist das hinzufügen von Containern ins VPN (imho) ziemlich umständlich. Zusätzlich kommt es häufiger zu Verbindungsabbrüchen. Also wollte ich nun, da ich von einer Fritz!Box auf PFSense umgestiegen bin, meine Domain nutzen.
Nun läuft nur noch das zweite Offsite Backup über VPN.Mittlerweile kann ich auch mitteilen, dass alles funktioniert :)
Der 503 Fehler lag tatsächlich an Nextcloud. HAProxy musste als trusted Proxy eingetragen und https forciert werden. Macht man das nicht, bricht Nextcloud die Verbindung ab.Das ist mir aufgefallen, als ich testweise das Backend von Nextcloud auf Home-Assistant geändert habe und es plötzlich (mehr oder weniger) funktionierte.
Nun würde ich gerne noch einen Eintrag im DNS Resolver eintragen, um den Datenfluss nicht durch das Internet zu leiten, wenn ich im Lokalen LAN bin. Wie macht man das am besten? Normalerweise hätte ich einfach die lokale IP im Resolver überschrieben, allerdings kann ich dort keinen Port angegeben. Dank HaProxy wird Port 1337 ja auf 443 umgeleitet, im Resolver ist das nicht möglich.
Muss ich hier eventuell die interne HaProxy IP nutzen? -
@tsag said in Truenas (Nextcloud) -> Pfsense -> Cloudflare 522 (timeout):
Nun würde ich gerne noch einen Eintrag im DNS Resolver eintragen
Ich würde mir das in deinem Fall, wo das über HAproxy läuft, ersparen.
Du wirst doch keine Lust haben, im Browser immer den Port 1337 mitzugeben?Ohne DNS Override lösen deine internen Geräte die Nextcloud Domain auf deine WAN-IP auf. Dahin versuchen sie die Verbindung. Darauf lauscht der HAproxy und leitet die Verbindung zur Nextcloud, wie er es sonst auch tut.
Was fehlt?Du musst nur den Zugriff auf die WAN-IP von intern erlauben, falls du Public IPs irgendwie beschränkt hast oder alles auf "This Firewall" blockierst.
Edit:
Ah ja, mir ist eben eingefallen, dass du da Cloudflare eingebunden hast. Da kommt es drauf an, was Cloudflare für dich macht. Wenn es nur DNS ist, kein Problem. Wenn du allerdings deren Proxy verwendest, würde der Traffic von intern über Cloudflare und zurück laufen, was doch sinnfrei wäre. -
@viragomann said in Truenas (Nextcloud) -> Pfsense -> Cloudflare 522 (timeout):
Ich würde mir das in deinem Fall, wo das über HAproxy läuft, ersparen.
Du wirst doch keine Lust haben, im Browser immer den Port 1337 mitzugeben?Warum? Muss er doch nicht.
Ich würde wie folgt vorgehen:
- DNS Resolver den Host Eintrag der nextcloud auf die lokale IP der pfSense überschreiben
- Frontend, das du für WAN konfiguriert hast editieren
- Bei external address mit Pfeil runter eine zusätzliche IP/Port Kombi hinzufügen
- Die LAN Addresse + Port 443 mitgeben
- Dann solltest du WAN:1337 und LAN:443 quasi drinstehen haben
- Natürlich ggf. VORHER: WebUI der Sense muss dann logisch von 443 runter und der Redirect ausgemacht werden!!
- Voilà dein Proxy sollte jetzt extern auf <wan>:1337 und intern auf <lan>:443 hören
- Testen
Dann gehen Aufrufe egal von wo immer über den Proxy (was relevant sein kann wenn es sonst Probleme wegen Zertifikat, HTTP vs HTTPS etc. gibt o.ä.)
Wenn du aber intern auf der NC eh auch ein gültiges Zertifikat laufen hast/hättest, dann könntest du auch die Aufrufe von deiner Domain auf die entsprechende/n IP/s einfach per Port Forward auf dem LAN abfangen und auf die Nextcloud Kiste umleiten ohne Proxy. Ist aber die Frage ob das in deinem Setup mehr Sinn macht als über Proxy oder nicht. Wollte es aber nicht unerwähnt lassen :)
Cheers
-
@jegr
Und wofür das Ganze?Wenn der Nextcloud Hostname ohnehin auf die WAN IP auflöst, ist das alles überflüssig.
Dem HAproxy ist es dann gleichgültig, ob die Anfrage aus dem Internet oder aus dem LAN oder von sonst wo daher kommt. Alles, was an IP und Port geht, an welchen er lauscht und nicht vorher schon von der Firewall geblockt oder umgeleitet wird, wird im Frontend verarbeitet.Mehr Konfigurationszeilen halte ich auch nicht wirklich für schöner.
Aber dazu gibt es vielleicht unterschiedliche Ansichten. Natürlich könnte man auch ein zusätzliches Frontend dafür einrichten, wenn man das mag. -
@viragomann said in Truenas (Nextcloud) -> Pfsense -> Cloudflare 522 (timeout):
Dem HAproxy ist es dann gleichgültig, ob die Anfrage aus dem Internet oder aus dem LAN oder von sonst wo daher kommt. Alles, was an IP und Port geht, an welchen er lauscht und nicht vorher schon von der Firewall geblockt oder umgeleitet wird, wird im Frontend verarbeitet.
Gibt es dann aber nicht das "NAT-Nadelöhr", wenn man von einer privaten IP auf die öffentliche WAN-Adresse zugreift oder umgeht der ha-proxy das irgendwie?
-
@bob-dig said in Truenas (Nextcloud) -> Pfsense -> Cloudflare 522 (timeout):
Gibt es dann aber nicht das "NAT-Nadelöhr"
Ein Nadelöhr im Zusammenhang mit NAT kenne ich nicht. Was meinst du?
Problem mit NAT ist typischerweise, dass die Regel am WAN definiert ist und sich nicht auf Paket auswirkt, die an einem anderen Interface reinkommen.
Um das abzudecken gibt es dann NAT-Reflection.Zusammen mit HAproxy wird aber NAT nicht verwendet. Die Weiterleitung an die jeweilige interne IP macht dann ja der Proxy.
Wenn der Revers-Proxy also auf WAN-IP:443 lauscht, darf (am WAN) keine NAT-Regel für dieses Ziel aktiv sein. Dies würde den Proxy umgehen, weil NAT-Regeln erst angewendet werden.
Ist aber praktisch zum Testen. Regel einfach aktivieren oder deaktivieren.Auf die pfSense kannst du mit jeder ihr zugewiesenen IPs zugreifen. Das gilt genereall auch für andere Systeme, doch bei einem Router / Gateway kommt dazu, dass alle Pakete an IPs außerhalb des Subnetzes auch dahin geschickt werden und dieser damit alles abbekommt.
Daher ergibt sich auch die Gefahr, dass die WebGUI aus Gäste-Netzen erreichbar ist, wenn man any public IPs erlaubt aber keine Block-Regel anlegt. -
@viragomann
Hey, Ich wollte das nochmal aufgreifen, da mir aufgefallen ist, dass auch lokal anscheinend der ganze Traffic übers Netz geleitet wird.Wenn ich bspw. meinen Nextcloud Client auf dem Rechner mit meiner Domain angebe -> cloud.mydomain.de wird der Traffic dann wohl auch Übers PC -> Pfsense -> Internet -> Cloudflare -> Pfsense -> Server geleitet, oder?
Gibt es eine Möglichkeit, dass PFSense/HAProxy das Lokal löst?
Ich könnte es zwar über den LAN DNS Server über den Hostname erreichen, allerdings kann dieser keine Ports auflösen. Mein Nextcloud läuft bspw. auf 192.168.1.2:1337, was in HAProxy auch eingetragen ist, sodass ich direkt über meine Domain (ohne Port) darauf zugreifen kann. Beim Hostname muss ich immer den Port mit angeben. -
@tsag
Kein DNS Server kann Ports auflösen, natürlich auch nicht die pfSense.Wenn die Umsetzung auf den Port des Webservers HAproxy macht, dann richte auf deinem internen DNS einen Override ein, der zum Proxy zeigt.
-
@tsag said in Truenas (Nextcloud) -> Pfsense -> Cloudflare 522 (timeout):
Gibt es eine Möglichkeit, dass PFSense/HAProxy das Lokal löst?
Ich könnte es zwar über den LAN DNS Server über den Hostname erreichen, allerdings kann dieser keine Ports auflösen. Mein Nextcloud läuft bspw. auf 192.168.1.2:1337, was in HAProxy auch eingetragen ist, sodass ich direkt über meine Domain (ohne Port) darauf zugreifen kann. Beim Hostname muss ich immer den Port mit angeben.Verstehe das Problem nicht ganz. Warum sollte dein interner Traffic extern über Cloudflare laufen (müssen)?
Trag doch einfach als IP in DNS der Sense die IP des HAproxys ein - der schickt das doch dann auf :1337 weiter ohne dass du mit Ports rumbasteln musst genauso wie von extern auch?