Hallo,
obwohl ich schon eine ganze Weile Mitglied bin, war ich bisher hier im Forum nur lesend aktiv. Als Privatperson betreibe ich den HS mehr oder weniger als Hobby, viel lesen und testen ist angesagt und schließlich will man ja nicht durch dumme Kommentare auffallen.
Jetzt stehe ich allerdings vor einem für mich bisher nicht lösbaren Problem: Ich betreibe den HS zu Testzwecken noch im privaten LAN und möchte ihn jetzt neben zwei anderen Webservern im Internet möglichst sicher veröffentlichen. Grundgedanke hierzu ist, den öffentlichen Datenverkehr über https abzuwickeln. Dazu bestehen die folgenden Voraussetzungen: Internetaccount mit variabler IP inkl. Webspace und Domain, DynDNS-Domain, Fritzbox mit Portforwarding Ports 80 und 443 auf einen Linux-Server mit Apache2-Webserver und 2 Virtual Hosts. Nachfolgend habe ich den geplanten Verlauf skizziert und dabei die tatsächlichen Namen/Daten durch Platzhalter ersetzt und hervorgehoben.
Ein Aufruf von http://www.meinedomain.de wird redirected auf http://www.meinaccount.dyndns.de, erreicht somit den Apache2-Webserver und wird beantwortet. Auf einer zurückgegebenen Website gibt es einen Link für einen privaten Bereich, der über https://sec.meinaccount.dyndns.de/webcontent/ (das sec steht für secured im Gegensatz zu www) mit einem selbstsignierten SSL-Zertifikat und Benutzer-Authorisierung angesprochen wird. Über mehrere Reverse-Proxy-Befehle (ProxyPass... und ProxyPassReverse...) des Apache2 sind nun folgende Bereiche erreichbar:
1. https://sec.meinaccount.dyndns.de/webcontent/ -> nicht weiterleiten sondern selbst beantworten per https
2. https://sec.meinaccount.dyndns.de/server2/ -> Anfrage durch Proxy per http an internen Server2 und Antwort durchleiten ins Internet per https
3. https://sec.meinaccount.dyndns.de/ -> Anfrage durch Proxy per http an HS und Antwort transparent durchleiten ins Internet per https
Von aussen ist somit nur der Linux-Server erreichbar. Unter Punkt 1 wird der Webinhalt des Linux-Servers im Unterverzeichnis /webcontent abgebildet. Punkt 2 bildet den Webinhalt von Server2 transparent im Unterverzeichnis /server2 ab, der Nutzer merkt nichts von der im Hintergrund stattfindenen Umleitung auf Server2. Punkt 3 bildet den HS im Root-Verzeichnis der Website (/) ab. Somit wird der Aufruf https://sec.meinaccount.dyndns.de/hs vom Proxy in den in der Gira-Doku genannten Aufruf http://ip-Adresse/hs umgesetzt und die Antwort über https ins Internet zurückgegeben.
Die Punkte 1 und 2 funktionieren einwandfrei, bei 3 (HS-über-Proxy-Variante) habe ich allerdings mein Problem: Gemäß Doku wird der HS angesprochen durch .../hs, .../hshtm, .../hsthm?Anmeldedaten, .../shs, .../shshtm, .../hswap.wml, .../hslist, .../hslist?Liste+Anmeldedaten und .../shslist.
Mit der Firmware RC2.2 vom 10.07.07 führten die Aufrufe .../hslist und .../shslist zu einem Proxy-Error 502, der Aufruf .../hslist?Liste+Anmeldedaten sowie alle anderen Aufrufvarianten funktionieren einwandfrei, auch alle Icons (htmico?..., htmbg?... usw.) werden richtig nachgeladen und angezeigt. Seinerzeit habe ich intensiv gegoogelt und bin auf einen kommentierten Bug im Apache2-Proxy-Modul gestoßen, wo diese Fehlermeldung erwähnt wird und von seltenen Fällen des Auftretens gesprochen wird. Ich habe den Fall zunächst zu den Akten gelegt, da ich mit Übergabe der Parameter Liste+Anmeldedaten die Listen aufrufen konnte.
Kurz vor Weihnachten bin ich dann über den Design-Generator gestolpert, bei dem unter anderem eine aktualisierte Version der Firmware als Voraussetzung angegeben ist. Also habe ich die neue Firmware (RC vom 07.12.07) eingespielt mit dem Ergebnis, dass ich jetzt überhaupt nicht mehr von außen auf die HS-Listen zugreifen kann (auch der Aufruf .../hslist?Liste+Anmeldedaten funktioniert jetzt nicht mehr). Alle anderen Aufrufe funktionieren weiterhin einwandfrei (Bei beiden Firmwareversionen funktionieren alle Aufrufe vom internen LAN sowohl über die HS-IP-Adresse als auch über den HS-Namen tadellos).
Daraufhin habe ich die Feiertage genutzt und wieder nach Lösungen gesucht. Den Apache2-Webserver gibt es in einer aktualisierten Version - habe ich aufgespielt - keine Veränderung. Allerdings gibt die neue Version im Error-Log jetzt zusätzlich den Grund des Proxy-Fehlers aus: "(70014) End of file found: proxy: error reading status line from remote server HS-Name, referer: https://sec.meinaccount.dyndns.de/hslist", der mir jedoch nicht weiterhilft.
Unter den Apache-Bug-Reports habe ich dann gefunden, dass diese Fehlermeldung bedeutet "TCP FIN was sent from server" und auf serverseitige Netzwerkprobleme oder ein Problem mit dem Server (hier HS) selbst hinweist. Allerdings wird auch von einer "race condition" gesprochen, die den Fehler sporadisch auftreten lassen könnte: Unmittelbar nach Abfrage durch Apache schließt der Backend-Server die Keepalive-connection und der Apache startet seine Proxy-Anfrage auf einer eigentlich schon toten Verbindung, Browser würden sich hier anders verhalten und ihre Anfrage ohne Parameter wiederholen.
Da der Fehler reproduzierbar immer bei /hslist und /shslist auftritt, bei allen anderen Aufrufen jedoch nicht, vermute ich zurzeit die Ursache beim HS, insbesondere, da sich durch Änderung der Firmware auch eine Änderung im diesbezüglichen Verhalten gezeigt hat. Unschuldig ist der Apache2 allerdings auch nicht, da es ja über Browser von intern funktioniert.
Trotzdem würde ich gerne den Weg über einen Proxy mit Verschlüsselung (https) beibehalten. Die Variante, den Zugriff über verschiedene Ports zu realisieren, kommt nicht in Frage, da ich z.B. in der Firma hinter einer Firewall sitze, die Anfragen nur über die Ports 80 und 443 zulässt.
Hat vielleicht irgendjemand hierzu weitere Ideen oder Lösungsansätze oder sind evtl. schon irgendwo ähnliche Probleme aufgetreten?
So, hoffe, jetzt ist es nicht zu lang geworden und ich habe mein Problem trotzdem einigermaßen verständlich rübergebracht...
Danke für jede weitere Anregung
Rolf
obwohl ich schon eine ganze Weile Mitglied bin, war ich bisher hier im Forum nur lesend aktiv. Als Privatperson betreibe ich den HS mehr oder weniger als Hobby, viel lesen und testen ist angesagt und schließlich will man ja nicht durch dumme Kommentare auffallen.

Jetzt stehe ich allerdings vor einem für mich bisher nicht lösbaren Problem: Ich betreibe den HS zu Testzwecken noch im privaten LAN und möchte ihn jetzt neben zwei anderen Webservern im Internet möglichst sicher veröffentlichen. Grundgedanke hierzu ist, den öffentlichen Datenverkehr über https abzuwickeln. Dazu bestehen die folgenden Voraussetzungen: Internetaccount mit variabler IP inkl. Webspace und Domain, DynDNS-Domain, Fritzbox mit Portforwarding Ports 80 und 443 auf einen Linux-Server mit Apache2-Webserver und 2 Virtual Hosts. Nachfolgend habe ich den geplanten Verlauf skizziert und dabei die tatsächlichen Namen/Daten durch Platzhalter ersetzt und hervorgehoben.
Ein Aufruf von http://www.meinedomain.de wird redirected auf http://www.meinaccount.dyndns.de, erreicht somit den Apache2-Webserver und wird beantwortet. Auf einer zurückgegebenen Website gibt es einen Link für einen privaten Bereich, der über https://sec.meinaccount.dyndns.de/webcontent/ (das sec steht für secured im Gegensatz zu www) mit einem selbstsignierten SSL-Zertifikat und Benutzer-Authorisierung angesprochen wird. Über mehrere Reverse-Proxy-Befehle (ProxyPass... und ProxyPassReverse...) des Apache2 sind nun folgende Bereiche erreichbar:
1. https://sec.meinaccount.dyndns.de/webcontent/ -> nicht weiterleiten sondern selbst beantworten per https
2. https://sec.meinaccount.dyndns.de/server2/ -> Anfrage durch Proxy per http an internen Server2 und Antwort durchleiten ins Internet per https
3. https://sec.meinaccount.dyndns.de/ -> Anfrage durch Proxy per http an HS und Antwort transparent durchleiten ins Internet per https
Von aussen ist somit nur der Linux-Server erreichbar. Unter Punkt 1 wird der Webinhalt des Linux-Servers im Unterverzeichnis /webcontent abgebildet. Punkt 2 bildet den Webinhalt von Server2 transparent im Unterverzeichnis /server2 ab, der Nutzer merkt nichts von der im Hintergrund stattfindenen Umleitung auf Server2. Punkt 3 bildet den HS im Root-Verzeichnis der Website (/) ab. Somit wird der Aufruf https://sec.meinaccount.dyndns.de/hs vom Proxy in den in der Gira-Doku genannten Aufruf http://ip-Adresse/hs umgesetzt und die Antwort über https ins Internet zurückgegeben.
Die Punkte 1 und 2 funktionieren einwandfrei, bei 3 (HS-über-Proxy-Variante) habe ich allerdings mein Problem: Gemäß Doku wird der HS angesprochen durch .../hs, .../hshtm, .../hsthm?Anmeldedaten, .../shs, .../shshtm, .../hswap.wml, .../hslist, .../hslist?Liste+Anmeldedaten und .../shslist.
Mit der Firmware RC2.2 vom 10.07.07 führten die Aufrufe .../hslist und .../shslist zu einem Proxy-Error 502, der Aufruf .../hslist?Liste+Anmeldedaten sowie alle anderen Aufrufvarianten funktionieren einwandfrei, auch alle Icons (htmico?..., htmbg?... usw.) werden richtig nachgeladen und angezeigt. Seinerzeit habe ich intensiv gegoogelt und bin auf einen kommentierten Bug im Apache2-Proxy-Modul gestoßen, wo diese Fehlermeldung erwähnt wird und von seltenen Fällen des Auftretens gesprochen wird. Ich habe den Fall zunächst zu den Akten gelegt, da ich mit Übergabe der Parameter Liste+Anmeldedaten die Listen aufrufen konnte.
Kurz vor Weihnachten bin ich dann über den Design-Generator gestolpert, bei dem unter anderem eine aktualisierte Version der Firmware als Voraussetzung angegeben ist. Also habe ich die neue Firmware (RC vom 07.12.07) eingespielt mit dem Ergebnis, dass ich jetzt überhaupt nicht mehr von außen auf die HS-Listen zugreifen kann (auch der Aufruf .../hslist?Liste+Anmeldedaten funktioniert jetzt nicht mehr). Alle anderen Aufrufe funktionieren weiterhin einwandfrei (Bei beiden Firmwareversionen funktionieren alle Aufrufe vom internen LAN sowohl über die HS-IP-Adresse als auch über den HS-Namen tadellos).
Daraufhin habe ich die Feiertage genutzt und wieder nach Lösungen gesucht. Den Apache2-Webserver gibt es in einer aktualisierten Version - habe ich aufgespielt - keine Veränderung. Allerdings gibt die neue Version im Error-Log jetzt zusätzlich den Grund des Proxy-Fehlers aus: "(70014) End of file found: proxy: error reading status line from remote server HS-Name, referer: https://sec.meinaccount.dyndns.de/hslist", der mir jedoch nicht weiterhilft.

Unter den Apache-Bug-Reports habe ich dann gefunden, dass diese Fehlermeldung bedeutet "TCP FIN was sent from server" und auf serverseitige Netzwerkprobleme oder ein Problem mit dem Server (hier HS) selbst hinweist. Allerdings wird auch von einer "race condition" gesprochen, die den Fehler sporadisch auftreten lassen könnte: Unmittelbar nach Abfrage durch Apache schließt der Backend-Server die Keepalive-connection und der Apache startet seine Proxy-Anfrage auf einer eigentlich schon toten Verbindung, Browser würden sich hier anders verhalten und ihre Anfrage ohne Parameter wiederholen.

Da der Fehler reproduzierbar immer bei /hslist und /shslist auftritt, bei allen anderen Aufrufen jedoch nicht, vermute ich zurzeit die Ursache beim HS, insbesondere, da sich durch Änderung der Firmware auch eine Änderung im diesbezüglichen Verhalten gezeigt hat. Unschuldig ist der Apache2 allerdings auch nicht, da es ja über Browser von intern funktioniert.
Trotzdem würde ich gerne den Weg über einen Proxy mit Verschlüsselung (https) beibehalten. Die Variante, den Zugriff über verschiedene Ports zu realisieren, kommt nicht in Frage, da ich z.B. in der Firma hinter einer Firewall sitze, die Anfragen nur über die Ports 80 und 443 zulässt.
Hat vielleicht irgendjemand hierzu weitere Ideen oder Lösungsansätze oder sind evtl. schon irgendwo ähnliche Probleme aufgetreten?
So, hoffe, jetzt ist es nicht zu lang geworden und ich habe mein Problem trotzdem einigermaßen verständlich rübergebracht...
Danke für jede weitere Anregung
Rolf
Kommentar