2080638

NAS-Server einrichten - so ist der Speicher aus dem Web erreichbar

31.07.2016 | 16:33 Uhr |

Der Router trennt das Netzwerk in ein öffentliches und ein privates. Das ist gut so, solange Sie nicht vom öffentlichen Netz den Zutritt in Ihr privates brauchen. Aber wenn Ihr NAS hinterm Router hängt, müssen Sie Anpassungen vornehmen.

Kleine NAS-Server oder selbstgebaute Daten-Server auf Basis einer Raspberry-Platine bieten viel Speicherplatz, und die Daten sind hier sicherer aufgehoben als bei Cloud-Anbietern. Um einen Cloud-Speicher ersetzen zu können, muss Ihr Server allerdings auch von außerhalb erreichbar sein, also etwa vom Arbeitsplatz oder vom Urlaubsort.

HIER GEHTS ZUR OSTER-VOLLVERSION AM 02.04.2016!

Für dieses Ziel sind mehrere Konfigurationsschritte erforderlich. Dabei geht diese Anleitung davon aus, dass Sie keinen professionellen FTP-Server betreiben, der von vielen Kunden genutzt wird, sondern einen FTP- oder auch SSH-Zugriff für sich persönlich einrichten wollen: Ihre heimischen Daten sollen für den Fall der Fälle auch weltweit über das Web erreichbar sein, aber eben nur für Sie.

Öffentliche und private IP-Adresse: das müssen Sie wissen

Das heimische Netzwerk ist vor ungebetenen Anfragen aus dem Internet geschützt, weil PCs, Tablets oder NAS-Geräte gar nicht mit dem Internet kommunizieren, sondern nur mit dem Router. Dies funktioniert durch die Trennung in einen öffentlichen und privaten Adressraum.

Lesetipp: Cloud-Speicher mit Raspbian selbst gebaut

Öffentliche IP-Adresse: Der Router erhält bei der täglichen Verbindung zum Internet-Provider aus einem vorgegebenen Pool eine Zufalls-IP-Adresse.

Mit dieser einen öffentlichen IP-Adresse gehen dann sämtliche Geräte, die sich hinter dem Router im Heimnetz befinden, ins Internet. Mit dieser öffentlichen IP-Adresse kommt man dann auch, nach den hier erklärten Maßnahmen, vom Internet auf die heimischen Daten.

Private IP-Adresse: Jedes netzwerkfähige Gerät hinter dem Router wie PC, Tablet oder Smartphone erhält beim Start eine interne, „private“ IP-Adresse typischerweise aus dem Adressraum 192.168.0.xxx oder 192.168.1.xxx. Diese privaten Adressen dienen der Absprache der Geräte untereinander und mit dem Router, haben aber mit der öffentlichen IP-Adresse nichts zu tun. Die Geräte kennen die öffentliche IP nicht einmal, und es gibt daher auf PC-Betriebssystemen keine eingebaute Funktion, um die öffentliche IP zu ermitteln: Die einzige Möglichkeit ist eine Anfrage im Internet nach dem Motto „Hallo, wer bin ich da draußen?“ (etwa bei www.browsercheck.pcwelt.de oder www.wieistmeineip.de ).

Der Router dazwischen: Der Router vergibt und kennt die privaten IPs und natürlich auch die öffentliche IP. Er zeigt letztere auch in der Konfigurationsoberfläche an. Leider gibt es keinen zuverlässigen Weg, diese Information des Routers über einen PC automatisiert auszulesen. Im Prinzip geht das zwar über einen Telnet-Client (etwa Putty / Kitty ), aber dazu müsste der Router einen Telnet-Server besitzen (bei vielen Providern absichtlich entfernt), ferner der Telnet-Server des Routers über einen Telefoncode eingeschaltet werden. Eine zuverlässige und automatisierte Abfrage der öffentlichen IP ist auf diesem Weg nicht möglich.

Versteckte Tweaks für Ihren Router

Erlaubte und verworfene Webanfragen: Jedes Internet-Paket, das der Router über die öffentliche IP erhält, wird konsequent verworfen, sofern es nicht vorher durch eine private IP angefordert wurde. HTML-Seiten oder Downloads einer beliebigen Internet- IP erhalten Eintritt, wenn der Router eine IP-Adresse im privaten Adressbereich vermerkt hat, die genau diese Anforderung gestellt hatte. Für die richtige Verteilung der IP-Pakete von außen an die diversen Auftraggeberund Empfängergeräte im lokalen Netz sorgt die NAT-Komponente („Network Address Translation“). Damit ist das Netzwerk nach außen geöffnet, aber nach innen versperrt.

Typische Portfreigabe und Weiterleitung: Der öffentliche Port 22 (für SSH) wird geöffnet und an den Port 22 einer privaten IP im Heimnetz geleitet.
Vergrößern Typische Portfreigabe und Weiterleitung: Der öffentliche Port 22 (für SSH) wird geöffnet und an den Port 22 einer privaten IP im Heimnetz geleitet.

Portfreigabe: Öffnung für NAS-Webanfragen

Sobald Sie im eigenen Netzwerk einen Daten-Server oder ein NAS verwenden, der über das Internet erreichbar sein soll, ist die Abschottung des heimischen Netzwerks kontraproduktiv. Auch mit der Kenntnis der öffentlichen IP-Adresse kommen Sie aus den genannten Gründen nicht aus dem Web an Ihren Server: Es handelt sich um eine Anfrage von außen, für welche der Router keinen inneren Auftraggeber in seiner NAT-Tabelle protokolliert hat und die er deshalb verwirft.

Lesetipp: So richten Sie Ihr NAS gratis mit Open Media Vault ein

Damit ein Server von außen erreichbar wird, müssen Sie von innen ein wohldefiniertes Loch bohren. Dafür gibt es die „Portfreigaben“ im Router, je nach Router auch als „Portweiterleitung“, „Portmapping“ oder „Virtueller Server“ bezeichnet.

Für die Netzwerk-Kommunikation stehen theoretisch 65 536 Ports zur Verfügung, wobei vielgenutzte Protokolle vordefinierte Standardports verwenden. Die für den Zugriff auf Daten-Server relevanten Protokolle FTP und SSH nutzen Port 21 (FTP) und Port 22 (SSH):

Feste private IP für Server: Konstante IPs lassen sich am System des Rechners oder – wie hier – im Router einstellen. Dieser D-Link-Router nennt das DHCP-Reservierung.
Vergrößern Feste private IP für Server: Konstante IPs lassen sich am System des Rechners oder – wie hier – im Router einstellen. Dieser D-Link-Router nennt das DHCP-Reservierung.

Beispiel SSH: Um SSH-Anfragen aus dem Internet auf einen Rechner in das Heimnetz zu gestatten, muss also der Port 22 freigegeben werden. Außerdem muss der Router wissen, an welches Gerät er solche Anfragen schicken muss. In jüngeren Fritzboxen finden Sie die Einstellungen unter „Internet > Freigaben > Portfreigaben“. Nach „Neue Portfreigabe > Andere Anwendungen“ geben Sie als Protokoll „TCP“, neben „von Port“ die Zahl 22, neben „an Port“ ebenfalls die 22 ein. Das heißt: Was über die öffentliche IP an Port 22 ankommt, wird an den Port 22 eines Heimgeräts geschickt. Um welches Gerät es sich handelt, tragen Sie neben „an Computer“ und „an IP-Adresse“ ein.

Das Prinzip der Portfreigabe ist bei allen DSL- und Kabel-Routern identisch: Ein Port der öffentlichen IP wird geöffnet und an den (der Einfachheit halber) gleichen Port einer privaten IP geleitet. Wenn Sie die Portfreigaben bei Ihrem DSL-Router nicht finden, hilft http://portforward.com weiter.

Der Konfigurationskomfort der Router ist unterschiedlich: So bietet nicht jeder Router für die Angabe des Zielgeräts die angenehm lesbaren Rechnernamen an, sondern erwartet die private IP-Adresse des Geräts. Das scheint weniger komfortabel, ist aber die sauberste Methode. Sie setzt allerdings voraus, dass Ihr Server eine verlässliche, feste private IP besitzt. Da es sich hier um einen wichtigen Aspekt handelt, empfehlen wir ein tiefergehendes Einlesen in das Thema Portfreigabe .

Abfrage der öffentlichen IP-Adresse über die eigene Webseite: Für Heimnetze mit Direktverbindung zum Internet (ohne Proxy- Server) genügt das knappe Script links.
Vergrößern Abfrage der öffentlichen IP-Adresse über die eigene Webseite: Für Heimnetze mit Direktverbindung zum Internet (ohne Proxy- Server) genügt das knappe Script links.

Feste IP-Adresse vergeben: Jeder Rechner mit Server-Aufgaben sollte statt einer Zufalls-IP eine feststehende Adresse verwenden. Das vereinfacht die Administration im lokalen Netz und garantiert das richtige Routing bei der Portweiterleitung. Bei PCs und NAS-Geräten ist oft am einfachsten, diese feste IP am Rechnersystem selbst einzustellen. Der systematischere Weg, der unabhängig vom Gerät und seinem System immer funktioniert, führt aber wieder zum Router: Die Fritzbox zeigt unter „Heimnetz“ alle Geräte und bietet nach dem Klick auf die „Bearbeiten“-Schaltfläche die Option „Diesem Netzwerkgerät immer die gleiche IPv4-Adresse zuweisen“. Bei anderen Routern ist die betreffende Einstellung unter „DHCP-Reservierung“ zu finden oder ähnlich lautend.

Cloud-Server Owncloud auf Raspberry Pi installieren

Beispiel FTP: Für einen via Internet zugänglichen FTP-Server gelten wieder die gleichen Grundregeln: Eine feste private IP-Adresse ist Pflicht. Ansonsten wird in diesem Fall im Router statt Port 22 der Port 21 an den lokalen Server geleitet. FTP verdient dennoch diesen Extra-Abschnitt, weil die Öffnung und Weiterleitung von Port 21 meist nicht ausreicht. Um passives FTP zu ermöglichen, das auch beim Fernzugriff hinter Firewalls funktioniert, benötigen Sie eine zusätzliche Weiterleitungsregel im Router. Leiten Sie in diesem Fall auch den Portbereich 55536 bis 55663 an die private IP-Adresse des FTP-Servers weiter. Für solche Portbereiche sieht die Fritzbox zwei Eingabefelder vor („von Port“ und „bis Port“). Bei Routern, die nur ein Feld anbieten, funktioniert die Eingabe mit Bindestrich „55536-55663“.

Zwangstrennung und öffentliche IP

Mit einer Portfreigabe ist der heimische Server im Prinzip im Internet erreichbar. Sie müssten jetzt auf einem entfernten FTP-Client wie etwa Filezilla als Server lediglich die öffentliche IP Ihres Netzwerks eintragen – und natürlich Benutzer und Passwort. Gleiches gilt für den SSH-Zugriff mit Putty oder einem Linux-SSH-Client. Beachten Sie, dass für einen öffentlich zugänglichen Server rigorosere Sicherheitsansprüche gelten sollten als für Freigaben im privaten Heimnetz. Mit anderen Worten: Das Passwort muss relativ komplex sein, und der Benutzer sollte nicht unbedingt „root“ heißen.

Bleibt eine wesentliche Hürde: Wie ermitteln Sie aus der Ferne, welche öffentliche IP-Adresse Ihr Heimnetz besitzt? Erschwerend kommt hinzu, dass DSL- und Kabelanbieter die Verbindung einmal am Tag trennen und dann eine neue öffentliche IP vergeben. Diese Zwangstrennung soll den Betrieb privater Daten- und Webserver erschweren, hat aber immerhin auch den positiven Nebeneffekt, dass Brute- Force-Attacken auf Passwörter privater Server nur ein Tag Zeit bleibt.

Täglicher Cron-Job auf Ihrem heimischen Server: Der Wget-Download löst das PHP-Script aus, das anschließend die öffentliche IP ermittelt und in einer Textdatei ablegt.
Vergrößern Täglicher Cron-Job auf Ihrem heimischen Server: Der Wget-Download löst das PHP-Script aus, das anschließend die öffentliche IP ermittelt und in einer Textdatei ablegt.

Exkurs Dyn DNS: Eine bewährte Abhilfe bieten Dyn-DNS-Anbieter wie www.dyndns.org (kostenpflichtig), www.noip.com (kostenlos), www.dlinkddns.com (kostenlos für D-Link-Router) oder myfritz.net (kostenlos für AVM-Fritzbox). Daneben gibt es noch weitere Gratis-Alternativen. Das funktioniert so, dass der Router bei Erhalt einer neuen öffentlichen IP diese sofort an den Dyn-DNS-Dienst meldet. Wohin genau, müssen Sie dem natürlich Router mitteilen – bei der Fritzbox unter „Internet > Freigaben > Dynamic DNS“. Beim Dyn-DNS-Dienst ist dann wiederum eine Pseudo-Domain wie „apfelboeck.dlinkddns.com“ hinterlegt, und alle Anfragen an diese Pseudo-Adresse werden an die aktuelle IP umgelenkt. So kommen Sie trotz wechselnder IP zuverlässig zu Ihrem Router und dort je nach Weiterleitungsregeln an heimische Server. Die folgenden Tipps zeigen, dass Sie auch ohne Hilfe eines dynamischen DNS-Dienstes auskommen.

Die öffentliche IP auf der Homepage

Als Besitzer einer eigenen Homepage sind Sie auf keine Fremdhilfe angewiesen: Sie brauchen auf der Homepage nur ein PHP-Script, das die öffentliche IP Ihres Heimnetzwerks feststellt und als Textdatei ablegt. Die Abbildung auf dieser Seite zeigt zwei Beispiel-Scripts. Die Textdatei „ip.txt“ wird hier im Verzeichnis des PHP-Scripts abgelegt. Falls Sie in Ihrem Heimnetz hinter einem Proxy-Server arbeiten, verwenden Sie das zweite, geringfügig umfangreichere Script.

Wer keine Homepage mit PHP besitzt, braucht für die automatisierte Abfrage der öffentlichen IP einen Webdienst, der das Ergebnis auf die Kommandozeile liefert.
Vergrößern Wer keine Homepage mit PHP besitzt, braucht für die automatisierte Abfrage der öffentlichen IP einen Webdienst, der das Ergebnis auf die Kommandozeile liefert.

Nun geht es nur noch darum, dieses PHP-Script jeden Tag zuverlässig aufzurufen – und zwar unbedingt aus dem heimischen Netzwerk. Dafür gibt es diverse Optionen: Wenn ein Windows- PC täglich gestartet wird, genügt ein Autostart-Script etwa mit dem Kommandozeilen-Tool Wget:

wget -q http://meineseite.de/pfad/ip-heute.php  

Da aber ein PC wahrscheinlich gerade dann nicht gestartet wurde, wenn Sie unterwegs an Ihre Daten möchten, ist es logischer, das Script am Daten-Server selbst auszulösen. So kann jedes NAS-System tägliche Downloads zum gewünschten Zeitpunkt erledigen. Durch den Quasi-Download des PHP-Scripts wird der Code ausgelöst und die IP frisch gespeichert. Auf einem Platinen-Server wie Raspberry Pi oder Odroid benötigen Sie einen Cron-Job. Verwenden Sie SSH (Putty unter Windows) für die Server-Administration, und geben Sie in der SSH-Konsole

crontab –e  

ein. Nach den Kommentarzeilen schreiben Sie:

0 7 * * * wget -q http://meineseite.de/pfad/ip.php  

Das hinterlegt die öffentliche IP täglich um sieben Uhr auf Ihrer Homepage. Als Trennzeichen zwischen den insgesamt sechs Crontab-Parametern verwenden Sie Blanks oder Tabulatoren.

SSH-Fernwartung des Servers - so klappt's

Die öffentliche IP in der Cloud

Ohne eigene Homepage können Sie Ihre öffentliche IP täglich auf einem Cloud-Speicher hinterlegen. Abgesehen vom Cloud-Anbieter selbst geht es hier nicht ganz ohne Fremdhilfe, weil Sie auch die IP über einen Webdienst abfragen müssen. Das kann etwa ein täglich gestartetes Windows mit einer Batch-Datei im Autostart erledigen:

cmd.exe /c curl ifconfig.me >%userprofile%\dropbox\ ip.txt  

Vom lokalen Sync-Ordner geht die Textdatei mit der IP dann nach kurzer Zeit automatisch in die Cloud. Das für den Befehl notwendige Tool Curl sollte auf keinem System fehlen. Aber auch hier gilt, dass diesen Job am besten der ständig laufende Server erledigen sollte. Die meisten NAS-Geräte müssen hier passen. Auf Raspberry Pi und sonstigen Platinen ist es hingegen kein Problem, per Cron-Job (siehe oben) täglich einen Curl-Befehl abzuschicken oder die öffentliche IP anders zu erfragen. Erste Wahl unter Linux-Systemen ist das Info-Tool Inxi, das mit der gezielten Abfrage

inxi -i -c0 > /home/ha/ Dropbox/ip.txt  

die IP schneller liefert als viele andere Services. Inxi ist auf Linux-Systemen nicht Standard, aber mit

sudo apt-get install inxi  

sofort nachinstalliert.

Inxi ist von Google gesponsert, das theoretisch auf diesem Weg neben den sonstigen Big Data eben auch öffentliche IPs einsammeln kann. Das Tool ist top, aber Google-Hasser sollten sich anders behelfen. Internetseiten, welche mit Curl die Abfrage der IP auf der Kommandozeile erlauben, sind unter anderen ifconfig.me , checkip.dyndns.org , whatismyip.akamai.com oder icanhazip.com .

Wichtige Voraussetzung für die Cloud-Lösung: Der Cloud-Speicher muss im lokalen Dateisystem eingebunden sein, damit Sie die mit Curl oder Inxi ermittelte IP-Adresse dort ablegen können. Cloud-Anbieter wie Strato Hidrive , Microsoft Onedrive , Dropbox und weitere bieten solche Sync-Ordner am lokalen Rechner. Typischerweise liegen die Sync-Ordner im Benutzerprofil, also unter „/home“ auf Linux-Servern. Für Linux-basierte Server ist Dropbox erste Wahl. Das technisch noch bessere Strato Hidrive ist nicht mehr kostenlos (ab 1,49 Euro pro Monat). Beachten Sie bei Dropbox, dass nicht jedes Linux-System einen Dropbox-Client anbietet. Wenn Sie eine Cloud-Lösung mit Dropbox anstreben, sollten Sie für Ihren Daten-Server ein Ubuntu-basiertes Linux-System auswählen.

Tipp: So optimieren Sie den NAS-Zugriff

Nach den beschriebenen Maßnahmen liegt die öffentliche IP Ihres Heimnetzwerks auf einem global zugänglichen Speicherort im Internet – entweder auf der eigenen Homepage oder auf einem Cloud-Speicher. Für den Zugriff auf den Daten-Server müssen Sie lediglich die IP von dort aus der Textdatei kopieren und dann in Ihren SSH- oder FTP-Client als Server-Adresse einfügen.

Ob alles wie gewünscht funktioniert, sollten Sie einmal von außen unter realen Bedingungen überprüfen – also von einem Gerät, das nicht im eigenen Netzwerk hängt. Eine hierfür oft übersehene Option ist ein Android-Smartphone, an dem Sie das heimische WLAN abschalten und sich über 3G verbinden („Mobile Daten“). Eine kostenlose Android-App für den SSH-Zugang ist der Serverauditor SSH/SFTP Client, der dauerhaft einen Platz auf dem Smartphone verdient. Für den FTP-Zugang verwenden Sie am besten die Android-Version des Total Commander mit dem FTP-Plug-in.

Verbindungstest von außen und doch zu Hause: Ein Smartphone mit abgeschaltetem WLAN kann prüfen, ob der Server-Zugriff via Internet erfolgreich eingerichtet ist.
Vergrößern Verbindungstest von außen und doch zu Hause: Ein Smartphone mit abgeschaltetem WLAN kann prüfen, ob der Server-Zugriff via Internet erfolgreich eingerichtet ist.

Sobald der Zugriff reibungslos funktioniert, können sich Script-Kundige die Sache noch bequemer machen: Der Filezilla-FTP-Client speichert die Server-Daten im Klartext in der Datei „sitemanager.xml“. Der SSH-Client Kitty (Putty schreibt in die Windows-Registry) legt im Unterverzeichnis „Sessions“ ebenfalls für jeden konfigurierten Server eine Klartextdatei ab. Insofern ist es auf Windows- und Linux-PCs keine große Herausforderung, diese Dateien vor dem Start des Client automatisch mit der aktuellen Server-IPAdresse zu füllen. Vorausgehen müsste der Download der abgelegten Textdatei, ihm folgt das Auslesen der enthaltenen IP, dann das Eintragen dieser IP an der richtigen Stelle der Konfigurationsdateien. Zum Abschluss des Scripts wird dann das Client-Programm gestartet.

Eine interessante Alternative für NAS-Nutzer stellt übrigens Owncloud dar . Für den Zugriff auf Ihre Daten unterwegs steht sogar eine eigene Smartphone-App parat.

0 Kommentare zu diesem Artikel
2080638