Buffalo LinkStation Wake-On-LAN



Inhalt:

  1. Einführung
  2. Voraussetzungen
  3. Vorbereitung
  4. Die Raspberry Pi Software
  5. Back-End zum Ein- und Ausschalten
    1. 5.1 MySQL Account Datenbank anlegen
    2. 5.2 WebApp erstellen


1. Einführung

In diesem Tutorial erkläre ich wie man den Buffalo LinkStation NAS-Server mithilfe von Raspberry Pi über das lokale Heimnetzwerk und aus dem Internet ein- und ausschalten kann.

Die Buffalo LinkStation wartet 5 Minuten lang auf eine WOL-Nachricht. Bekommt sie keine, wird das Betriebssystem heruntergefahren. Der Raspberry Pi sorgt dafür, dass diese Nachricht innerhalb dieser Zeit gesendet wird damit der Buffalo wach bleibt, oder es wird eben keine WOL-Nachricht geschickt wenn ein gewolltes Ausschalten der LinkStation eingeleitet werden soll.

2. Voraussetzungen

Für die Realisierung dieses Projektes sind folgende Voraussetzungen zu erfüllen:

  • Ein Wake-On-LAN-fähiges Gerät, das kontinuierlich WOL-Pakete empfangen muss um wach zu bleiben. Im Projekt wurde der NAS-Server Buffalo LinkStation LS-WXLD24 verwendet.
  • Ein Raspberry Pi mit installiertem Linux-Betriebsystem (hier Raspbian Jessie) und SSH– oder direktem Terminal-Zugriff auf das System.
  • Raspberry Pi USB- oder FTP-Zugriff für die Dateienübertragung.
  • Beide Geräte müssen im Heimnetzwerk verbunden sein. Vorzugsweise per LAN.
  • Auf dem Raspberry Pi sind Webserver (Apache2 oder lighttpd), PHP5, mySQL installiert und aktiv.
  • (optional wenn man das Zielgerät von Aussen schalten möchte) ein Zugriff auf den Raspberry Pi aus dem Internet.
Feste-IP.net
Feste-IP.net

3. Vorbereitung

Der LinkStation Power Schalter muss auf AUTO stehen. In dieser Position fährt der NAS Server nach ca. 5 Minuten herunter wenn keine Wake-On-LAN-Nachricht empfangen wird.

Der Raspberry Pi soll wie die LinkStation in gleichem Heimnetzwerk verbunden sein.

4. Die Raspberry Pi Software

Die Raspberry Pi Software stayalive schickt standardmässig alle 3 Minuten eine Wake-On-LAN-Nachricht zu der LinkStation. Die Datei stay.alive enthält ein Flag 0 oder 1. Steht er auf 1 wird der NAS Server wach gehalten bzw. hochgefahren. Bei 0 wird keine WOL-Nachricht geschickt und der NAS Server fährt nach ca. 5 Minuten herunter.

Die stayalive Software kann hier heruntergeladen werden. Die ZIP-Datei auf den RPi in das Verzeichnis /home/pi/Downloads übertragen und entpacken.

$ cd /home/pi/Downloads
$ unzip stayalive_1.1.2.zip
$ cd stayalive_1.1.2

Die Konfigurationsdatei stayalive.conf anpassen (vor der Installation!).

$ sudo nano stayalive/stayalive.conf

Vor allem die Parameter BCAST_ADDR, BCAST_PORT und TARGET_MAC sind wichtig.
Danach das Install-Skript ausführen.

$ sudo bash install

Nach der Installation den Flag in der Datei /etc/stayalive/stay.alive auf 1 setzen. Die LinkStation sollte nun hochfahren.

Die install.log-Datei befindet sich im /etc/stayalive Verzeichnis. Ausführung-Log-Dateien sind im /var/log/stayalive Verzeichnis zu finden.

5. Back-End zum Ein- und Ausschalten

Als Back-End zu Ein- und Ausschalten der LinkStation eignet sich am besten eine Webanwendung. Mit der ist es dann möglich über den Internet Browser lokal oder aus dem Internet den NAS Server zu schalten. Die Anwendung setzt den Flag in der stay.alive Datei. Damit Unbefügte kein Zugriff auf die Anwendung haben, wird Login Authentifizierung eingesetzt. Berechtigte Benutzer und Passwörter werden in der MySQL-Datenbank gespeichert.

5.1 MySQL Account Datenbank anlegen

Anmerkung: Falls der MySQL-Server und phpMyAdmin noch nicht installiert, siehe diese Anleitung!

Um den Zugriff auf die Webanwendung zum Schalten des NAS-Servers zu schützen wird eine Datenbank mit Accounts für berechtigte Benutzer eingerichtet.

Dafür den phpMyAdmin auf dem Raspberry Pi öffnen (http://{RPi-IP-Adresse}/phpmyadmin). Gegebenfalls das bei der phpMyAdmin-Installation vergebene Passwort eingeben.

Auf dem Reiter Datenbanken den Datenbanknamen „hnc“ eingeben und Koalition utf8mb4_general_ci wählen.

hnc Datenbank anlegen
hnc Datenbank anlegen

Mit „Anlegen“ bestätigen und weiter.

Links im Datenbankbrowser die hnc-Datenbank wählen, und die Tabelle account mit 4 Spalten erzeugen.

account Tabelle erzeugen
account-Tabelle erzeugen

Die Tabellenspalten wie unten definieren.

account Tabellenspalten definieren
account-Tabellenspalten definieren

Zu dem Reiter Einfügen wechseln und neuen Benutzer anlegen. Der Benutzername und Passwort sollen mit MD5 verschlüsselt werden.

account Tabelle- Benutzer anlegen
Wake-On-LAN Webanwendung-Benutzer hinzufügen

Bestätigung eines erfolgreich hinzugefügten Datensatzes:

account Datensatz erfolgreich eingefügt
Datensatz erfolgreich eingefügt in die Tabelle account

Auf dem Reiter Anzeigen ist jetzt der Datensatz mit dem verschlüsseltem Benutzernamen und Passwort sichtbar.

account Tabellendatensatz anzeigen
Der eingefügte account-Tabellendatensatz

Eine Beispiel Datenbank kann hier heruntergeladen werden.

Nach dem entpacken der ZIP-Datei den Raspberry Pi phpMyAdmin öffnen (http://{RPi-IP-Adresse}/phpmyadmin), auf den Home Button klicken (1) und den Reiter Import wählen (2). Die entpackte sql-Datei laden (3) und mit OK (4) die Datenbank importieren.

hnc Datenbankimport
Datenbankimport

Die Beispiel-Datenbank enthält eine Tabelle account mit einem Datensatz für den Benutzer testuser mit dem Passwort testpasswort.

5.2 WebApp erstellen

Die Webanwendung soll über eine grafische Oberfläche den Flag in der Datei /etc/stayalive/stay.alive setzen können. Sinnvoll ist auch eine Benutzer-Authentifizierung wenn man auf diese Anwendung über das Internet zugreifft.

Eine Beispiel-Webanwendung kann hier heruntergeladen werden. Die ZIP-Datei in das RPi /home/pi/Downloads Ordner übertragen und dann in das /var/www bzw. bei Raspbian Jessie /var/www/html Verzeichnis entpacken.

$ cd /home/pi/Downloads
$ sudo unzip hnc.zip -d /var/www

seit Raspbian Jessie (Ende 2015):

$ cd /home/pi/Downloads
$ sudo unzip hnc.zip -d /var/www/html

In der Datei /var/www/{html}/hnc/login.php in der Funktion get_db_pw muss bei dem mysqli_connect()-Aufruf der MySQL Benutzer und das Passwort angegeben werden. Standardmäßig ist Benutzer root ohne Passwort voreingestellt.

function get_db_pw($uname){
$con = mysqli_connect("","USER", "PASSWORD");
mysqli_select_db($con,"hnc");
$sql = "select password from account where username = '$uname'";
$res = mysqli_query($con,$sql);
$data=mysqli_fetch_assoc($res);
mysqli_close($con);
return $data["password"];
}

Nun kann die WebApp mit http://{RPi-IP-Adresse}/hnc/hnc.php geöffnet werden. In der Beispiel-Webanwendung testuser und testpassword für die Anmeldung benutzen.

hnc login
hnc-Anmeldung

Die Domäne im Kopf der Seite kann in der Datei login.php im <body>-Bereich, Zeile 53 geändert werden.

<h2 align="center">exampledomain.feste-ip.net</h2>

Nach dem Einloggen kann man über die dynamische Webseite das Zielgerät ein- und ausschalten.

hnc user interface
stayalive Benutzeroberfläche

Das Einschalten dauert bis zu 3 Minuten, bis das nächste WOL-Paket vom stayalive gesendet wird plus die Zeit, die das Gerät zum Hochfahren braucht. Das Ausschalten kann eine Verzögerung von 5 Minuten haben (gerätabhängig, hier bei Buffalo LinkStation).