ethernet WoL boot
Etherwake
Etherwake est un petit logiciel qui permet, à partir d'un poste Linux, d'allumer une machine par le réseau. Cette méthode s'appelle le WOL (Wake-on-LAN), et vise à démarrer une machine par le réseau. La méthode consiste à envoyer un magic packet vers l'adresse MAC du PC que l'on veut allumer.
C'est très simple à mettre en place, il faut :
- vérifier que le PC que l'on veut allumer via le réseau supporte le WoL. On l'active dans le BIOS de la machine, et cela se traduit par la diode de la carte réseau qui reste allumée même machine éteinte. Si on utilise une carte PCI, il faut en plus utiliser un câble à relier sur la carte mère.
- relever l'adresse MAC du PC que l'on veut allumer par le réseau. On l'obtient via la commande
ifconfigsous Linux (ex :HWaddr 00:30:18:a7:ee:36) ouipconfig /allsous Windows. - installer etherwake sur une autre machine :
aptitude install etherwake - on lance, en root, la commande
etherwake <@ MAC>par ex :etherwake 00:30:18:a7:ee:36
Il faut noter l'inconvénient du WOL : son manque de sécurité. En effet, n'importe qui, sur le même réseau que le PC cible, peut lui envoyer un magic packet, et donc l'allumer.
Pour qu'une machine soit allumable à distance, le lien réseau doit être UP = la diode de la carte réseau (ou sur le switch/routeur) doit être allumée. Si ce n'est pas le cas il faut vérifier l'activation du Wake-on-LAN dans le BIOS, et éventuellement désactiver les fonctionnalités d'économie d'énergie telle l'ErP (Energy-related Products).
En dernier recours, vérifier que le système d'exploitation ne coupe pas explicitement l'alimentation de la carte réseau avant l'extinction complète du PC. Sous Linux/Ubuntu cela peut se faire avec l'utilitaire ethtool (identifier au préalable le nom de l'interface réseau avec : ip addr, pour l'exemple nous prendrons eno1).
ethtool eno0 | grep Wake-on Wake-on: d # Il est ''d'' (disabled), il faut le passer à ''g''. sudo ethtool -s eno1 wol g
Avec systemd : c'est une rustine mais c'est plus versatile car cela ne dépend pas du gestionnaire de réseau, qui peux changer en fonction de votre distribution Linux.
Créer le fichier /etc/systemd/system/wol.service :
- /etc/systemd/system/wol.service
# /etc/systemd/system/wol.service # Systemd service to enable Wake-on-LAN at boot # Ensures the NIC accepts magic packets for remote wake [Unit] Description=Enable Wake-on-LAN After=network.target [Service] Type=oneshot # Set WoL to magic packet mode on the specified interface # Change 'eno1' to match your network interface name ExecStart=/usr/sbin/ethtool -s eno1 wol g RemainAfterExit=yes [Install] WantedBy=multi-user.target
NB : vérifier le chemin d’installation de l'utilitaire ethtool avec which ethtool, dans mon cas : /usr/sbin/ethtool.
Activer le service:
sudo systemctl daemon-reload sudo systemctl enable wol.service sudo systemctl start wol.service
Dans mon cas je démarre mes machines depuis mon routeur sous OpenWRT ; il faut installer les paquets suivants sur le routeur et lancer etherwake en précisant l'interface où envoyer le magic packet, ainsi que l'adresse MAC du PC à démarrer:
apk update
apk add etherwake luci-app-wol
etherwake -i br-lan aa:bb:cc:dd:ee:ff