Habe neulich mal nach einer Möglichkeit gesucht meinen PC auf der Arbeit von zu Hause aus über VPN einschalten zu können. Aus jungen Jahren war mir noch bekannt dass man PCs auch übers Netzwerk mittels WoL (Wake on LAN) einschalten kann.
Eines vorweg, über einen VPN Tunnel kann man einen PC nicht direkt einschalten, da man ein Paket an eine MAC Adresse anstatt an eine IP-Adresse schicken muss. Das VPN liegt also schon ein paar Schichten zu weit oben.
Um einen PC per VPN aufwecken zu können benötigt man also einen Rechner der im selben Netz hängt wie der zu startende Rechner. Hat man keinen Server im Netz kann man sich auch mit einem Raspberry Pi behelfen. Dieser benötigt nicht so viel Strom.
Nur so am Rande bemerkt: Einen Raspberry Pi kann man nicht per WoL aufwecken, da dessen Netzwerkkarte am USB Bus hängt und im ausgeschaltetem Zustand nicht mit Strom versorgt wird.
Von früher konnte ich mich noch erinnern dass Netzwerkkarten die WoL konnten immer ein 3-adriges Kabel beiliegen hatten, welches man mit dem Mainboard verbinden musste. Bei meiner Recherche habe ich herausgefunden dass dieses Kabel nur bis zum PCI-Standard 2.1 Verwendung findet. Modernere Mainboards mit einem PCI-Standard ab 2.2 benötigen diese Verbindung nicht mehr. Stattdessen wird ein PME (Power Management Event) verwendet.
Damit eine Netzwerkkarte auf die PME Events reagiert müssen zum einen die Events im Bios erlaubt sein und das gewünschte Verhalten in der Netzwerkkarte aktiviert werden. In meinem Bios musste ich nichts einstellen da die PME Events standardmäßig bereits aktiviert waren. Früher musste man das WoL mit dem 3-adrigen Kabel noch explizit einschalten.
Um den Devicenamen der Netzwerkkarte herauszubekommen benutzt man den Befehl ifconfig. Meisstens ist das eth0, auf neueren Ubuntu Systemen kann das Device aber auch ganz anders heißen.
Hat man seine Netzwerkkarte gefunden kann man jetzt dessen Status abfragen.
Unter Supports Wake-on steht eine Liste unterstützter Modi. Diese bedeuten im Einzelnen:
Kürzel
|
Erklärung
|
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.
|
Unter Wake-on steht der aktuell eingstellte Modus.
Soll der PC nun z.B. mit einem MagicPacket aufgeweckt werden so muss man den entsprechenden Modus für die Netzwerkkarte aktivieren:
sudo ethtool -s enp3s0 wol g
Möchte man WoL wieder deaktivieren macht man das mit:
sudo ethtool -s eth0 wol d
Um den PC aufzuwecken, kann man jetzt z.B. das Tool wakeonlan verwenden. Dieses installiert man unter einem debian-basierten Linux mit:
Den PC weckt man dann auf mit:
Wobei XX:XX:XX:XX:XX:XX für die Mac-Adresse der Netzwerkkarte steht. Diese bekommt man auch mittels ifconfig heraus.
Problembehebung - WOL wird ständig deaktiviert
Seltsamerweise deaktiviert sich bei meinem Rechner ständig das Wake On Lan Feature. Deshalb aktiviere ich ihn jetzt jedesmal automatisch wenn der Rechner gestartet wird. Dies erfolgt durch ein systemd script.
Man legt die Datei /etc/systemd/system/wol@.service an. Das @ gehört zum Dateinamen, also nicht löschen, und fügt dann folgenden Inhalt ein:
Als nächstes sucht man sich mit ifconfig sein Netzwerk-Device raus und fügt den systemd-Job so hinzu:
Um zu prüfen ob der Service erfolgreich ausgeführt wurde kann man folgenden Befehl ausführen:
Nach einem Reboot kann man mit dem ethtool wieder prüfen ob Wake on Lan jetzt aktiv ist. Zur Erinnerung es muss so etwas herauskommen:
Wake-on: g