Fritzbox-Weboberfläche hinter Reverse-Proxy

leseratte10

Mitglied
Mitglied seit
23 Apr 2012
Beiträge
406
Punkte für Reaktionen
2
Punkte
18
Hallo zusammen,

ich möchte gerne die Weboberfläche(n) meiner Fritzbox(en) über einen Nginx-Reverseproxy erreichbar machen, bin dabei aber über ein paar Fallstricke gestolpert. Hat so eine Konstellation zufällig noch jemand im Einsatz?

Erster Fallstrick war, der Reverseproxy lief über HTTPS und hat die Anfrage per HTTP an die Fritzbox weitergeleitet. Damit konnte man allerdings Telefoniegeräte und SIP-Rufnummern nicht mehr bearbeiten (man wurde einfach wieder auf die Startseite umgeleitet). Habe dann rausgefunden dass die Fritzbox da einen Redirect auf eine HTTP-Seite schickt (was der Browser dann nicht mag), anstatt einen Protokollunabhängigen Redirect zu machen. Den habe ich dann im Reverseproxy repariert (siehe Spoiler) und seitdem scheint alles zu laufen.
Code:
map $upstream_http_location $m_replaceme {
    ""  "";
    "~^http(.*)$" "https$1";
}
...     
      proxy_hide_header Location;
      add_header Location  $m_replaceme;

Die zweite "Falle" auf die ich gerade gestoßen bin (und die weshalb ich hauptsächlich diesen Thread erstellt habe), ist, dass im Ereignislog der Fritzbox dann für jede Anmeldung nur noch die IP-Adresse des Reverse-Proxy drin steht. Eigentlich hatte ich erwartet, dass da die "üblichen" Header wie X-Real-IP oder X-Forwarded-For ausreichen, dass die Fritzbox die korrekte IP (oder zumindest beide, die vom Proxy und die im Header) im Ereignislog anzeigt - das ist offensichtlich nicht der Fall.

Google war auch keine große Hilfe, 99% der Treffer beziehen sich entweder auf die Frage, ob die Fritzbox einen Reverseproxy hat (damit mehrere Clients sich den Port 80/443 teilen können), oder wie man hinter der Fritzbox einen Reverseproxy für andere Dienste, nicht die Fritzbox betreibt.

Hat so eine Konstellation (Fritzbox-UI hinter Nginx) noch jemand im Einsatz und kennt zufällig irgendeinen Trick oder versteckten Parameter, mit der die Fritzbox die richtige IP anzeigt? In einem Einstellungs-Export im Bereich "webui" habe ich bisher nichts gefunden was danach aussieht. Oder muss ich mit der falschen IP-Adresse im Log leben? Wäre jetzt auch nicht sooo dramatisch, ich kann ja auch im Nginx dann loggen wann welche Zugriffe von welcher IP passieren.
 
Ich hab kürzlich mal mit dem Reverse-Proxy auf meinem Synology-NAS rumgespielt (auch nginx) und einen der DNS-Namen (https://fb.examle.com) testweise auf die Oberfläche meiner Fritzbox um- bzw. zurück zuleiten, u.a. auch um zu sehen, wie sich das bei den Zertifikaten verhält, abhängig davon, ob intern auf https oder http weitergeleitet wird.

Ergebnis: Nach außen sehe ich das Zertifikat meines Proxies, egal ob es intern per http oder https weitergeht. Im Log der Fritzbox steht dann ein Login von meinem NAS. Dieses Verhalten hatte ich auch so erwartet. Ich habe aber auch nicht Menü-Punkte durchprobiert.

Deine Problem/Frage verstehe ich noch nicht so ganz, aber ich vermute mal, du würdest im Log der Fritzbox lieber die IP des wirklich zugreifenden sehen.

Damit das Ganze auch mit http klappt, hätte es wohl einem Eintrag
Code:
server {
        listen 80;
        server_name fb.example.com;

        return 301 https://$host$request_uri;
}
auf dem Proxy bedurft, um http auf https umzuleiten. So mache ich das sonst als.
 
Zuletzt bearbeitet von einem Moderator:
Genau das war meine Frage, ich würde gerne im Fritzbox-Log die "echte" IP des zugreifenden Benutzers sehen und nicht die des Proxys. Normale "Webanwendungen" (wo es zu erwarten ist dass die hinter einem Reverse-Proxy laufen) haben da oft ne Einstellung für, dass die IP aus einem HTTP-Header gelesen wird statt direkt aus der IP-Verbindung. Sowas suche ich für die Fritzbox (auch wenn ich befürchte, dass es das nicht gibt). Also sowas wie wgUseCdn/wgCdnServersNoPurge in MediaWiki oder mod_remoteip im Apache, suche ich für die Fritzbox.

Den Port 80 auf dem Proxy auch anzuwenden hat / hätte nichts gebracht. Der Browser hat sich schon geweigert den Request überhaupt durchzuführen, weil ihm nicht gefällt, dass eine HTTPS-Seite per Javascript einen Request auf die HTTP-Version durchführt. Also musste ich den Proxy dazu bringen, die Seite zu patchen, dass der Browser erst gar nicht auf HTTP zugreifen will.
Das war aber eher nur als "Info" gedacht falls jemand anderes auf diesen Thread stößt mit ähnlichem Problem, weil ich dazu bisher nichts gefunden habe.
Wenn du den Reverse-Proxy noch aufgebaut hast kannst du ja mal testen, ob du unter "Telefonie -> Telefoniegeräte" oder unter "Telefonie -> Eigene Rufnummern" die Einträge bearbeiten kannst oder nicht. Bei mir ging das - ohne die erwähnte Config-Anpassung - nicht.
 
So, ich hab's nochmal probiert, so wie in #2 beschrieben. Im Proxy habe ich https eingehend auf http der Fritzbox umgeleitet. Ich komme dann problemlos sowohl per http als auch per https auf die Fritzbox. Bei http werde ich auf https umgeleitet. Soweit so gut.

Aber: Du hast Recht. An den verschiedensten Stellen, nicht nur bei "Telefonie -> Telefoniegeräte" oder unter "Telefonie -> Eigene Rufnummern" lande ich wieder bei der Anmeldung. Manchmal geht es aber auch. Bei den Ereignissen steht dann was von ungültiger Sitzungskennung. Vielleicht hat es auch was mit IPv4/IPv6 zu tun. Oder noch wahrscheinlicher: Mein NAS (Proxy) hängt mit 2 Füßen im LAN, einmal über Bond und einmal über einen 2,5GBit-USB-NIC. Im Log der FB tauchen die IPv6-Adressen der beiden wild gemischt auf, so dass die beiden sich wohl gegenseitig rauskegeln.

Edit: Ich hab's jetzt nochmal mit der IPv4 der Fritte im Proxy probiert anstatt des Namens, also nicht mehr https://fb.example.com -> http://FB7590-1 (löst die IPv4 und die IPv6 auf), sondern -> http://192.168.0.1. Dieser Effekt scheint nun weg zu sein, und ich lande nicht mehr ab und zu auf der Anmeldung.
 
Zuletzt bearbeitet von einem Moderator:
Ungültige Sitzungskennung hatte ich tatsächlich nicht. Interessant. Ich habe meinen Reverse-Proxy so eingestellt dass er auf die ULA der Fritzbox weiterleitet, evtl. hat das auch noch Probleme verursacht. Bei mir gab es keinerlei Logs in der Fritzbox, sondern nur Fehler vom Browser. Und ich bin auch nicht wieder auf der Loginseite gelandet, sondern halt wieder auf der "Telefoniegeräte"-Übersicht.

Die Fritzbox ist also wohl einfach nicht so 100% für den Betrieb hinter einem Reverseproxy ausgelegt.
 
Wieso? Bei mir klappt es inzwischen. Probier's halt nochmal.
 
Eigentlich hatte ich erwartet, dass da die "üblichen" Header wie X-Real-IP oder X-Forwarded-For ausreichen, dass die Fritzbox die korrekte IP (oder zumindest beide, die vom Proxy und die im Header) im Ereignislog anzeigt - das ist offensichtlich nicht der Fall.
[...]
Sowas suche ich für die Fritzbox (auch wenn ich befürchte, dass es das nicht gibt).
Das wäre ja auch für 99% der anderen Fälle (wo die Verbindung NICHT über einen Proxy erfolgt) kontraproduktiv. Denn NICHTS hindert irgendeinen beliebigen Client aus dem Internet (und natürlich auch aus dem (W)LAN - wobei DAS bei einem Router ja tatsächlich noch zu erkennen wäre, aber dann wäre die Kombination mit einem Reverse-Proxy wieder "ungewöhnlich") daran, auch in entsprechende Requests, die DIREKT an die FRITZ!Box gerichtet sind, ebenfalls solche Header-Zeilen einzubauen, die ihrerseits dem FRITZ!OS "vorgaukeln", der Request käme von einer anderen Adresse.

Wenn das FRITZ!OS dann seine Protokollierung automatisch auf diese "Falschinformationen" stützen würde, wäre das vermutlich nicht wirklich "im Sinne des Erfinders".
 
Hallo Zusammen, was man nicht alles findet :D

Ich habe ein Problem mit bestimmten Fritzboxen und Reverse Proxys festgestellt und bin dann auf diesen Beitrag gestoßen.

An sich funktioniert bei mir alles einwandfrei. Das Problem mit den ungültigen Sitzungen tritt bei mir auch auf, aber immer nur kurz nach einem Neustart meines Routers (7690) und auch nur bei dem.

Ich habe über NGINX Proxy Manager für jede meiner Fritzboxen und Repeater eine Subdomain konfiguriert und nutze ein SSL Zertifikat von IONOS (hier habe ich die Hauptdomain). Bei allen meinen Fritz Geräten funktioniert der Zugriff auf die entsprechende Subdomain problemlos und schnell, bis auf die Fritzbox 7590 und 7590 AX - hier dauert es extrem lange, bis die Seiten geladen werden. Die Boxen sind alle per Netzwerkkabel angeschlossen und es spielt auch keine Rolle, wie "weit" weg sie sich von meinem Router oder dem NUC, auf dem NPM läuft, befinden (ich habe baubedingt keine perfekte Stern Topologie und zwei größere Hauptäste).

KI referenzierte unter anderem diesen Beitrag, um "einen bekannten AVM Bug für Reverse Proxies bei der 7590 und 7590 AX" belegen zu wollen, was ich amüsant und spannend finde :D

Da ich jetzt aber hier bin: Hat jemand eine Idee, was ich noch testen und überprüfen kann oder woran das liegt? In den Edge DEV Tools und vor allem in den NPM Logs der Proxy Hosts der 7590 er Boxen sind auffällig viele Redirects zu beobachten. Diese treten kaum bis gar nicht bei den anderen Geräten auf. Ansonsten hat KI bisher nur wild rum haluziniert und wollte meine feldkonvektionierten RJ45 Stecker beschuldigen.

Der Zugriff über die IPv4 Adressen ist übrigens nicht von dem Effekt betroffen, deswegen muss es ja quasi mit den Reverse Proxies und den Subdomains zu tun haben.

EDIT: Achja, es ist auch Clientunabhängig. Sowohl auf meinem Windows 11 PC mit diversen Browsern, also auch auf Mobilen Endgeräten wie iPhone mit Safari ist es das gleiche. Auch der Ort, an dem ich mich befinde, also mit welchem AP der Client in meinem Heimnetz verbunden ist, spielt keine Rolle.

[Edit Novize: Beiträge zusammengefasst - siehe Forumsregeln]

Ich habe jetzt nochmal etwas herumgespielt und das Problem gefunden: die beiden Boxen 7590 und 7590 AX kommen mit TLS Re-Encryption nicht klar. Meine Proxyhosts waren mit dem Schema HTTPS und Port 443 konfiguriert. Ein Ändern auf HTTP und Port 80 beseitigt alle Performance Probleme beim Zugriff auf die Weboberfläche.
 
Zuletzt bearbeitet von einem Moderator:
Kostenlos!

Statistik des Forums

Themen
248,903
Beiträge
2,303,611
Mitglieder
378,538
Neuestes Mitglied
FraSche