Hallo Leute
Habe seit ein paar Tagen eine TS-209 und bin grundsätzlich sehr überzeugt von dem Teil!
Nun, da ich meinen PC nicht mehr die ganze Zeit laufen haben muss, möchte ich ihn wenn immer möglich in den Standby versetzen um so Strom zu sparen. Um ihn bei Bedarf wieder aufzurütteln, habe ich Wake On Lan im BIOS etc. aktiviert; so funktioniert es nun auch, dass ich den PC von einem anderen aus mit einem Tool, bei dem ich nur die MAC-Adresse eingeben muss, aus dem Schlaff holen kann.
Da ich das ganze aber über das Internet ausführen kann und mein Router nicht in der Lage ist, ein Port-Forwarding auf eine Broadcast-Adresse durchzuführen, habe ich mir überlegt, dass ich ein PHP auf dem Webserver des NAS aufrufen könnte, und das dieses dann aus dem internen Netz den PC aufwecken kann.
Dazu verwende ich folgendes Skript:
<?php
$mac = '00:1D:60:80:7F:60'; //MAC Adresse
$ip = 'udp://10.0.0.2'; //oder mit IP z.B.: udp://192.168.0.1
function wakeup($mac_addr,$router_addr) {
if ($fp = fsockopen($router_addr, 9, $errno, $errstr, 4)) {
//erlaubte Zeichen:
$hexchars = array("0","1","2","3","4","5","6","7","8","9",
"A","B","C","D","E","F",
"a","b","c","d","e","f"
);
// 6 "volle" bytes (Also mit Wert 255 bzw. FF in hexadezimal)
$data = "\xFF\xFF\xFF\xFF\xFF\xFF";
$hexmac = "";
// Jetzt werden unntige zeichen in der mac-adresse
// entfern (also z.B. die bindestriche usw.)
for ($i = 0; $i < strlen($mac_addr); $i++) {
if (!in_array(substr($mac_addr, $i, 1), $hexchars)) {
$mac_addr = str_replace(substr($mac_addr, $i, 1), "",
$mac_addr);
}
}
for ($i = 0; $i < 12; $i += 2) {
$hexmac .= chr(hexdec(substr($mac_addr, $i, 2)));
}
// Hexadresse wird 16mal hintereinandergeschrieben
for ($i = 0; $i < 16; $i++) {
$data .= $hexmac;
}
fputs($fp, $data);
fclose($fp);
echo 'MagicPaket wurde verschickt';
return true;
}
Else {
echo "<b>Warnung: $errno</b> $errstr<br>";
return false;
}
}
wakeup($mac, $ip);
?>
Alles anzeigen
Das Skript funktioniert so lange, wie das NAS die Zuordnung von IP- zur MAC-Adresse kennt (und das ist nur ein paar Sekunden nach dem Standby). Will ich das Skript mit der Broadcast-Adresse (also 10.0.0.255) aufrufen, bekomme ich folgende Fehlermeldung:
Zitat
Warning: fsockopen() [function.fsockopen]: unable to connect to udp://10.0.0.255:9 (Permission denied) in /share/MD0_DATA/Qweb/wakeup.php on line 7
Warnung: 13 Permission denied
Ich habe nun also zwei Lösungsansätze:
1. Ich mache dem NAS mit einer fixen Zuordnung von IP- zu MAC-Adresse klar, an welche Adresse es das Packet senden muss.
2. Ich kann das Problem mit der Berechtigung lösen.
Frage:
1. Gibt es in diesen NAS die Möglichkeit, die ARP-Tabelle zu bearbeiten? Den Befehl "arp" kennt das System nicht.
2. Kennt jemand eine andere Lösung des Problems?
Vielen Dank schonmal für eure Hilfe!
Grüsse
BugsDanny