WOL - Wake On Lan - Rechner über Router wecken   
User:  Pass:
 Forum  0,35 Sekunden 

Allgemeines:

IP oder URL des Routers:
zum Beispiel "217.234.177.58".
Falls der Router sich automatisch bei einem DynDNS-Service anmeldet kann auch diese Adresse (URL) angegeben werden. Also zum Beispiel "meinname.dyndns.org". Vorsicht: Vor der URL darf NICHT "http://" oder sonstiges stehen.

Folgende IPs werden immer wieder fälschlicherweise im IP-Feld angegeben:
10.0.0.0 - 10.255.255.255
172.16.0.0 - 172.31.255.255
192.168.0.0 - 192.168.255.255

Dabei handelt es sich jedoch um private Adressräume, die im Internet nicht vergeben werden. Solche Adressen benutzt man privat im eigenen LAN. Im Formular soll man aber die Internet IP-Adresse angeben, also die IP, die man vom Zugangsanbieter zugewiesen bekommen hat.

MAC-Adresse des PC's:
zum Beispiel 00-E0-28-D3-71-75 oder auch ohne Bindestrichen, also 00E028D37175.
Die MAC-Adresse der Netzwerkkarte ihres PC's finden sie unter Windows 2000 heraus, indem sie in der Kommandozeile (Start -> Ausführen -> "cmd" eingeben -> OK) den Befehl "ipconfig /all" eingeben.
Dort finden sie z.B. die Zeile "Physikalische Adresse . . . . . . : 00-E0-28-D3-71-75". Das ist die MAC-Adresse.

Router Konfiguration:
Beim Router muss man einen Virtual Server einrichten, damit das Paket ins lokale Netzwerk weitergeleitet wird (Beim D-Link DI-614+ würde der Eintrag so lauten):

"Enabled"
Name: WakeOnLan Broadcast
Private IP: 192.168.0.255
Protocol Type: UDP
Private Port: 9
Public Port: 9
Schedule: always

Hintergrund:
192.168.0.255 ist die Broadcast-IP (wegen der 255 hinten, wird das Paket dann an alle Rechner im Subnetz geschickt). Das WakeOnLan Paket läuft über UDP Port 9. Dieses Paket besteht aus 6 Bytes 255 (bzw. FF in Hex) und danach 16mal die MAC-Adresse, also insgesamt 6+6*16=102 Bytes.

Der Router ist damit soweit bereit, ein WakeOnLAN-Paket weiterzureichen. Jetzt muss man nur noch eines schicken ;-). Dazu musst du die IP des Routers und die MAC-Adresse des zu weckenden PC's wissen. Um das Paket nun zu schicken, kann man dieses PHP-Script benutzen. Der Rechner startet dann mit 1-5 Sekunden Verzögerung.

Klappt bei mir wunderbar. Jetzt noch PCAnywhere auf dem Rechner installiert (Ports im Router freigeben), und schon kann man bei Bedarf jederzeit von überall auf seinen Rechner zugreifen :-). Ist echt geil! Noch besser geht's natürlich, wenn sich der Router bei einem DynDNS-Service anmeldet.

PHP-Script

Hier die verwendete Funktion:

Beispielscript gibts hier

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 unnötige 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);
     return true;
     }
Else {
     echo "<b>Warnung: $errno</b> $errstr<br>";
     return false;
     }
}