Wake-on-LAN ist eine praktische Funktion, mit der viele Mainboards das Starten eines Computers übers Netzwerk ermöglichen. Dies finde ich sehr sinnvoll für Testserver: So müssen diese nicht 24/7 laufen und Strom verschwenden, obwohl sie nicht ständig benötigt werden. Auf der anderen Seite ist es nicht notwendig, das Gerät physisch vor Ort einzuschalten.
Folgender Artikel beschreibt, wie man eine Ubuntu-Maschine von einem Ubuntu-PC aus übers Netzwerk startet.
Server, der ferngesteuert werden soll
Alle folgenden Schritte in diesem Punkt beziehen sich auf den Zielserver. Diese Maschine soll aus der Ferne über das Netzwerk ohne physischen Zugriff gestartet werden.
Wake-on-LAN im Bios aktivieren
Damit der PC via Netzwerk gestartet werden kann, muss diese Funktion im BIOS oder UEFI aktiviert werden. Da die je nach Hersteller variiert, kann der Prozess nicht allgemein beschrieben werden. Meist befindet sich dies in den Energieeinstellungen. Im Folgenden wird dies beispielhaft am America Megatrends CMOS gezeigt. Hier heißt der Hauptpunkt Power Management Setup.

Darin kann man auswählen, bei welchen Ereignissen das Gerät gestartet werden soll. Die PCI-Geräte schließen hier das Netzwerk mit ein und müssen auf Enabled stehen.

Software installieren
Wir brauchen das Kommandozeilenwerkzeug ethtool
sudo apt-get install ethtool
Und können nun prüfen, ob die Schnittstelle Wake-on-LAN unterstützt
$ sudo ethtool enp6s0 | grep -i wake
Supports Wake-on: pumbg
Wake-on: g
enp6s0 ist entsprechend mit dem Name eurer Schnittstelle zu setzen (ip a listet alle auf). Wenn bei Wake-on der Buchstabe g auftaucht, kann das System mit einem sogenannten Magic packet gestartet werden. Supports Wake-on zeigt an, welche Arten des aufwachens unterstützt werden:
p Physische Aktivität
u Unicast-Paketen
m Multicast-Paketen
b Broadcast-Paketen
a ARP-Pakete
g MagicPacket(tm)
s MagicPacket(tm) mit SecureOn(tm), d.H. Passwortgeschützt
d Deaktivieren (= keinerlei aufwachen). Diese Option löscht alle vorherigen Optionen.
Im einfachsten Falle wird MagicPacket mit g genutzt. Dies müssen wir zunächst noch aktivieren, da ethtool nur anzeigt, ob dies von der Schnittstelle unterstützt wird.
sudo ethtool -s enp6s0 wol g
Clients, die den Server starten
Auf einem Client, der den oben konfigurierten Server starten können sollen, müssen wir das Paket etherwake installieren. Anschließend können wir mit dem Befehl wakeonlan ein sogenanntes Magic Packet senden, das den PC zum Starten veranlasst.
sudo aptitude install etherwake
wakeonlan <Zielserver MAC>
Die MAC-Adresse kann man ermitteln, in dem man das System (z.B. server2) pingt und anschließend anhand der ermittelten IP-Adresse im ARP-Cache die MAC ermittelt.
# arp -n | grep $(dig +short server2)
192.168.0.48 ether xx:xx:xx:xx:xx:xx C vmbr0
Wichtig: Dies muss noch zur Laufzeit des Zielsystemes geschehen. Ansonsten ist die Schnittstelle nicht aktiv und die MAC kann nicht aufgelöst werden! Es empfiehlt sich daher, die MAC-Adresse in einer Datei abzuspeichern
arp -n | grep $(dig +short server2) | awk '{print $3 }' > ~/server2-mac
Wurde das System heruntergefahren, kann man die dort gespeicherte MAC nutzen:
wakeonlan $(cat ~/server2-mac)