[NAS Typ:] TS-239
[Firmware:] 3.2.0
[Getestet:] ja
[Sonstige Modifikationen:] keine
Häufig möchte der eine oder andere User die Webdienste (Webserver, Multimedia, Download, Filemanager, Admin-GUI) seines NAS vom Internet über die Standardports 80 bzw. 443 erreichen.
Dies ist auf dem NAS mit der GUI nicht konfigurierbar, da folgendes Verfahren verwendet wird:
1. Der Standard-Webserver (Qweb) ist Apache und läuft auf Port 80 (http)
2. Die Admin-GUI läuft über Tiny HTTP (thttp) auf Port 8080
3. Secure HTTP (https) wird über keinen der beiden Webserver direkt abgewickelt, sondern von stunnel realisiert
Die Lösung funktioniert, ob sie gut ist, ist eine andere Frage...
Um alle Dienste über die Standardports 80 und 443 erreichbar zu machen, sind folgende Anpassungen notwendig (Firmware 3.2 TS-239):
1. In der Admin-GUI wird unter Allgemeine Einstellungen "Sicherer Anschluss aktivieren" auf Port 8443 eingestellt.
Damit erreichen wir, dass stunnel gestartet wird.
2. In der Datei /etc/config/stunnel/stunnel.conf wird am Ende folgende Änderung durchgeführt:
[https]accept = 8443connect = 127.0.0.1:8080TIMEOUTclose = 0[https-all]accept = 443connect = 127.0.0.1:80TIMEOUTclose = 0
Der erste Abschnitt [https] sollte automatisch erzeugt worden sein, indem für die Admin-GUI die sichere Verbindung aktiviert worden ist. Der zweite Abschnitt [https-all] wird von uns hinzugefügt. Dieser bewirkt, dass alle https-Anfragen über den Standardport 443 auf den Apache-Webserver auf Port 80 weitergeleitet werden.
Auf dem Router, der die Verbindung weiterleitet, sollte später nur Port 443 und NICHT Port 80 auf das NAS weitergeleitet werden! Das ist sonst etwas gefährlich und durch die Lösung auch nicht notwendig.
3. Über die Admin-GUI unter "Netzwerkdienst" den Webserver starten und den sicheren Anschluss (SSL) NICHT aktivieren. Ggf. deaktivieren.
Das verhindert, dass die stunnel-Konfiguration mit der Apache-Konfiguration kollidiert. Nur einer der beiden darf Port 443 benutzen!
4. Jetzt kann stunnel mit
neu gestartet werden und wir können folgendes testen:
http://MEINNAS sollte die Qweb-Apacheseiten anzeigen
https://MEINNAS sollte auch die Qweb-Apacheseiten anzeigen
http://MEINNAS:8080 sollte die Admin-GUI anzeigen
https://MEINNASIP:8443 sollte auch die Admin-GUI anzeigen
5. Nun zum spannenden Teil
In die Datei /etc/config/apache/apache.conf werden folgende Zeilen am Ende hinzugefügt:
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_http_module modules/mod_proxy_http.so
<VirtualHost *:*>
<Proxy *>
AddDefaultCharset Off
Order deny,allow
Allow from all
</Proxy>
ProxyPass /cgi-bin/ http://MEINNAS:8080/cgi-bin/
ProxyPassReverse /cgi-bin/ http://MEINNAS:8080/cgi-bin/
ProxyPass /ajax_obj/ http://MEINNAS:8080/ajax_obj/
ProxyPassReverse /ajax_obj/ http://MEINNAS:8080/ajax_obj/
ProxyPass /help/ http://MEINNAS:8080/help/
ProxyPassReverse /help/ http://MEINNAS:8080/help/
</VirtualHost>
Alles anzeigen
[EDIT] Im Code wurde noch das Mapping für die Hilfe (/help/) hinzugefügt, die sonst nicht angezeigt wird. [/EDIT]
und danach der Apache mit /etc/init.d/Qthttpd.sh restart neu gestartet. MEINNAS kann entweder der DNS-Name des NAS sein oder die IP-Adresse des NAS.
Mit der Konfiguration wird dem Apache beigebracht alle URIs, die mit /cgi-bin oder /ajax_obj beginnen, nicht selbst zu beantworten, sondern diese die URL http://MEINNAS:8080/... weiterzuleiten. Das sind genau die URIs, die alle NAS-Anwendungen und die Admin-GUI verwenden.
Eigene cgi-Skripte muss man dann ggf. in ein anderes Verzeichnis legen. Das kann in der apache.conf entsprechend konfiguriert werden.
6. Testen
http://MEINNAS sollte die Qweb-Apacheseiten anzeigen
https://MEINNAS sollte auch die Qweb-Apacheseiten anzeigen
http://MEINNAS:8080 sollte die Admin-GUI anzeigen
https://MEINNASIP:8443 sollte auch die Admin-GUI anzeigen
http://MEINNAS/cgi-bin/html/login.html sollte die Admin-GUI anzeigen
https://MEINNAS/cgi-bin/html/login.html sollte ebenfalls die Admin-GUI anzeigen
Mit der letzten URL sind dann alle Dienste des NAS über https (443) erreichbar. Jetzt noch im Router eine NAT für Port 443 auf NAS-IP:443 einrichten und das wars...
Viel Spaß,
Jan