|
|
Zeile 1: |
Zeile 1: |
− | Unter Wake on LAN (Abgekürzt: WOL) versteht man einen Rechner per Netzwerk einzuschalten.
| |
− | Dies ist z. B. sehr schön wenn man einen Linux-Router hat - sich per Internet zu diesem verbindet - und dann seinen VDR einschalten kann (um z. B. neue Timer zu speichern).
| |
| | | |
− | Das Einschalten erfolgt meistens durch das sogenante "MagicPacket(TM)".
| |
− |
| |
− | == Programme ==
| |
− | Die Programme müssen das "MagicPacket(TM)" erzeugen und an die MAC-Adresse der Netzwerkkarte des aufzuweckenden Rechners schicken.
| |
− |
| |
− | === Browser ===
| |
− | Bequem per Browser läßt sich über diesen [http://stephan.mestrona.net/wol/ Wake-On-Lan über Router-Dienst] das MagicPacket(TM) aus Web-Formular senden. Das funktioniert teilweise sogar durch (DSL-) Router hindurch.
| |
− |
| |
− | === Linux ===
| |
− | Ein passendes Linux-Programm ist [http://www.scyld.com/wakeonlan.html ether-wake].
| |
− |
| |
− | Compiliert wird der source-code mit
| |
− | <pre>
| |
− | wget ftp://ftp.scyld.com/pub/diag/ether-wake.c
| |
− | gcc -O -Wall -o ether-wake ether-wake.c
| |
− | cp ./ether-wake /usr/local/bin
| |
− | </pre>
| |
− | Der Aufruf erfolgt so:
| |
− | <pre>
| |
− | ether-wake 00:11:22:33:44:55
| |
− | </pre>
| |
− | wobei man für die Zahlenfolge einfach die MAC-Adresse des aufzuweckenden Rechners eingeben muss. Wenn man die nicht hat, kann man sich diese mit
| |
− | <pre>ifconfig eth0
| |
− | </pre>
| |
− | anzeigen lassen (natürlich auf dem Rechner den man später wecken will!).
| |
− | * als Alternative dazu gibt es z.B. noch [http://ahh.sourceforge.net/wol/ wol]
| |
− |
| |
− | ====Probleme====
| |
− | *seit dem 2.6er Kernel gibt es Probleme dass WOL nicht funktioniert Das Problem liegt darin, dass die meisten Netzwerkkarten-Treiber das WOL deaktivieren.
| |
− | *3Com Karten die den Treiber 3c59x verwenden, müssen den Parameter "enable_wol=1" angeben, um WOL zu aktivieren. Dies geht allerdings nur wenn der Treiber als Modul eingebunden wird.
| |
− |
| |
− | '''Lösung des Problems:'''
| |
− | Es gibt ein Programm namens [http://www.sourceforge.net/projects/gkernel/ "ethtool"]. Hiermit kann man - nachdem der Netzwerktreiber geladen ist - die Netzwerkkartenparameter auslesen und ändern.
| |
− | So bekommt man angezeigt, wie die Parameter derzeit sind:
| |
− | <pre>ethtool eth0</pre>
| |
− | Beispiel:
| |
− | <pre>
| |
− | ethtool eth0
| |
− | Settings for eth0:
| |
− | Supported ports: [ TP MII ]
| |
− | Supported link modes: 10baseT/Half 10baseT/Full
| |
− | 100baseT/Half 100baseT/Full
| |
− | Supports auto-negotiation: Yes
| |
− | Advertised link modes: 10baseT/Half 10baseT/Full
| |
− | 100baseT/Half 100baseT/Full
| |
− | Advertised auto-negotiation: Yes
| |
− | Speed: 100Mb/s
| |
− | Duplex: Full
| |
− | Port: MII
| |
− | PHYAD: 1
| |
− | Transceiver: internal
| |
− | Auto-negotiation: on
| |
− | Supports Wake-on: pumbg
| |
− | Wake-on: g
| |
− | Current message level: 0x00000001 (1)
| |
− | Link detected: yes
| |
− | </pre>
| |
− | Besonders die Zeilen "Supports Wake-on:" und "Wake-on:" sollte man hier im Auge behalten.
| |
− | Die Buchstaben bedeuten:
| |
− | <pre>
| |
− | wol p|u|m|b|a|g|s|d...
| |
− | Set Wake-on-LAN options. Not all devices support this. The
| |
− | argument to this option is a string of characters specifying
| |
− | which options to enable.
| |
− | p Wake on phy activity
| |
− | u Wake on unicast messages
| |
− | m Wake on multicast messages
| |
− | b Wake on broadcast messages
| |
− | a Wake on ARP
| |
− | g Wake on MagicPacket(tm)
| |
− | s Enable SecureOn(tm) password for MagicPacket(tm)
| |
− | d Disable (wake on nothing). This option clears all previous
| |
− | options.
| |
− | </pre>
| |
− | So aktiviert man das Wake-On-Lan beim Eintreffen eines "MagicPacket(TM)":
| |
− | <pre>
| |
− | ethtool -s eth0 wol g
| |
− | </pre>
| |
− | Ich habe diese Zeile einfach in meine /etc/init.d/networking an entsprechender Stelle nach dem Aktivieren des Netzwerks gesetzt.
| |
− |
| |
− | Falls es noch Fragen gibt könnt Ihr mich auch direkt anmailen: Thorsten at Gehrig.de
| |
− |
| |
− | === Windows ===
| |
− | Für Windows gibt es die Freeware [http://www.spettel.de/lanstart/ LANStart].
| |
− |
| |
− | === Wakeup per CGI ===
| |
− | Einen eigenen Wakeupdienst mit MagicPacket(TM) und Web-Formular ist aber ansich auch keine größere Schwierigkeit.
| |
− | Also wenn man sich z.B. die eigene MAC Adresse nicht permanent nicht merken möchte, und wenn ein eigener Webserver, der CGI+Perl unterstützt, zur Verfügung steht, kann mit folgendem HTML-Wrapper und CGI-Script ein eigener Wakeupdienst aufgesetzt werden.
| |
− |
| |
− | Dieser HTML-Teil in die Webseite einbetten.
| |
− | <pre>
| |
− | <form action="/cgi/wakeup.pl" method="post">
| |
− | <table>
| |
− | <tr><td>HWaddress:</td><td><input size="40" maxlength="40" name="HWaddress" value="00:11:22:33:44:55"></td></tr>
| |
− | <tr><td>IPaddress:</td><td><input size="40" maxlength="40" name="IPaddress" value="1.2.3.4"></td></tr>
| |
− | <tr><td>Port:</td><td><input size="40" maxlength="40" name="Port" value="9"></td></tr>
| |
− | <tr><td> </td><td><input type="submit" value="Absenden"></td></tr>
| |
− | </table>
| |
− | </form>
| |
− | </pre>
| |
− |
| |
− | und diesen CGI-Teil als "/cgi/wakeup.pl" auf dem Webserver speichern.
| |
− | <pre>
| |
− | #!/usr/bin/perl -w
| |
− |
| |
− | use strict;
| |
− | use Socket;
| |
− | use CGI;
| |
− | my $cgi = new CGI;
| |
− | use CGI::Carp qw(fatalsToBrowser);
| |
− |
| |
− | $cgi->default_dtd('-//W3C//DTD HTML 4.01 Transitional//EN');
| |
− |
| |
− | print $cgi->header(-type =>'text/html'),
| |
− | $cgi->start_html('Wakeup'),
| |
− | $cgi->h1('Wakeup'),
| |
− | wake($cgi->param('HWaddress'),$cgi->param('IPaddress'),$cgi->param('Port')),
| |
− | $cgi->end_html();
| |
− |
| |
− | sub wake
| |
− | {
| |
− | my $hwaddr = shift;
| |
− | my $ipaddr = shift || '255.255.255.255';
| |
− | my $port = shift || getservbyname('discard', 'udp');
| |
− |
| |
− | my ($raddr, $them, $proto);
| |
− | my ($hwaddr_re, $pkt);
| |
− |
| |
− | # Validate hardware address (ethernet address)
| |
− |
| |
− | $hwaddr_re = join(':', ('[0-9A-Fa-f]{1,2}') x 6);
| |
− | if ($hwaddr !~ m/^$hwaddr_re$/) {
| |
− | return $cgi->p({-style => 'color:red'}, "Invalid hardware address: $hwaddr" );
| |
− | }
| |
− |
| |
− | # Generate magic sequence
| |
− |
| |
− | foreach (split /:/, $hwaddr) {
| |
− | $pkt .= chr(hex($_));
| |
− | }
| |
− | $pkt = chr(0xFF) x 6 . $pkt x 16;
| |
− |
| |
− | # Allocate socket and send packet
| |
− |
| |
− | $raddr = gethostbyname($ipaddr);
| |
− | $them = pack_sockaddr_in($port, $raddr);
| |
− | $proto = getprotobyname('udp');
| |
− |
| |
− | if(!socket(S, AF_INET, SOCK_DGRAM, $proto)) {
| |
− | return $cgi->p({-style => 'color:red'}, "socket : $!");
| |
− | }
| |
− | if(!setsockopt(S, SOL_SOCKET, SO_BROADCAST, 1)) {
| |
− | return $cgi->p({-style => 'color:red'}, "setsockopt : $!" );
| |
− | }
| |
− |
| |
− | if(!send(S, $pkt, 0, $them)) {
| |
− | return $cgi->p({-style => 'color:red'}, "send : $!");
| |
− | }
| |
− |
| |
− | close S;
| |
− | return $cgi->p("Sending magic packet to $ipaddr:$port with $hwaddr");
| |
− | }
| |
− | </pre>
| |
− |
| |
− | ==Sonstiges==
| |
− | Das ganze ist im BIOS zu aktivieren: '''Power On by Ring''' bzw. '''Wake on LAN'''
| |
− |
| |
− | [[Bild:Wake On Lan 01.png|thumb|none|400px|''Einstellung im BIOS'']]
| |
− |
| |
− | Vor allem bei älteren Netzwerkkarten, bzw. Mainboards muss außerdem ein Kabel zwischen Mainboard und Netzwerkkarte gesteckt werden: (Ausnahme sind Mainboards mit Onboard-Netzwerkkarte). Abhängig ist dies von der verwendeten PCI-Spezifikation.
| |
− |
| |
− | Eine genauere Erläuterung dazu ist auf den [http://www.heise.de/ct/04/24/232/default.shtml c't Hotline Seiten zur Ausgabe 24/2004] unter ''Komplizierter Netzverkehr'' zu finden
| |
− |
| |
− | [[Bild:Wake On Lan 02.png|thumb|none|400px|''WOL Kabel'']]
| |
− |
| |
− | == Links ==
| |
− | {|
| |
− | |[1]
| |
− | |[http://www.ip-phone-forum.de/forum/viewtopic.php?p=94622 Thread zu "Wake-On-Lan aus Internet durch DSL-Router (hier FritzBox)"]
| |
− | |--
| |
− | |[2]
| |
− | |[http://stephan.mestrona.net/wol/ Wake-On-Lan über Router-Dienst: MagicPacket(TM) aus Web-Formular senden]
| |
− | |}
| |