Server ferngesteuert mit Wake-on-LAN starten

Server ferngesteuert mit Wake-on-LAN starten

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)

Leave a Reply