L'arme ultime pour l'administration à distance sur un lan

Apprenez à configurer le Wake-on-Lan sur Linux pour démarrer votre NAS à distance et préserver vos disques, votre énergie et la température ambiante.
Hier je vous parlais de mon NAS personnalisé et de comment je l'ai configuré avec OpenMediaVault, Portainer, Nextcloud et Jellyfin pour en faire un serveur de streaming.
Mais la tech m'a appris une chose: un disque dur qui est utilisé est un disque qui s'use (encore plus s'il est mécanique).
Lorsque ce dernier tourne, même pour rien, il prend de l'usure. Aussi, je me suis dis qu'il était hors de question qu'il tourne tout le temps.
D'autant plus qu'on est en pleine chaleur estivale, que les températures dans les combles, sous toiture, atteignent des sommets. Je préfère l'allumer quand je m'en sers, plutôt que de monter encore plus la température avec une machine allumée.
Ceci dit, il reste plusieurs solutions pour l'allumer quand on en a envie. Je sais qu'il existe des boîtiers reliés à une carte SIM pour l'allumer même à distance depuis son smartphone. Mais dans mon cas, je vais opter pour quelque chose que n'importe qui peut faire avec un peu de configuration: utiliser le Wake-on-Lan.
Ce qui signifie que je vais démarrer ma machine à distance à partir du moment où je suis sur son réseau.
Comment ? Via son adress MAC !
Et j'aurais d'autres solutions pour y accéder à distance depuis ma box et redéclencher un WoL. Donc, distance où pas, si je le fais fonctionner, je peux tout faire.
Etape 1 - activer le Wake-on-Lan dans le bios
💡 Ce n'est pas une étape que je peux facilement documenter car cette partie est purement spécifique à la machine que vous utilisez.
Comme il s'agit d'une option dans le bios, il peut se situer n'importe où dans votre bios.
Peu importe où elle se trouve, vous devez absolument activer l'option.
Dans mon cas, c'est un peu particulier. Je vous le disais, j'utilise une carte mère chinoise. Très souvent, ces cartes mères recyclent des chipsets provenant de carte mère existantes et se contentent de le souder en y mettant BIOS open source ou qu'ils réécrivent partiellement. Rassurez-vous, cette manoeuvre n'est pas choquante c'est du reconditionnement.
Et une fois sur le bios, je ne vous cache pas que j'ai un peu galéré parce que dans mon cas, l'option était activée par défaut mais n'est pas affichée. Comment savoir si tout est ok pour votre Wake-on-Lan ?
Vérifions cela dans l'étape suivante.
Etape 2 - Vérifier l'état du Wake-on-Lan
Une fois sur votre machine Linux de type Debian/Ubuntu, on va vérifier l'état de notre Wake-on-Lan:
sudo apt install ethtool net-tools
On va vérifier quelle est l'interface (la carte réseau) utilisée pour être connecté sur le lan:
ifconfig
On devrait avoir une liste de carte réseau (lan, wifi, virtuelles, etc...), notez le nom de l'interface que vous utilisez.
Cela ressemble à: eth0 ou enp3s0...
Maintenant qu'on a le nom de notre carte réseau, on va vérifier l'état du wake-on-lan sur cette dernière:
sudo ethtool enp3s0
Vous devriez avoir 2 lignes comme ceci:
Supports Wake-on: g
Wake-on: d
Et si Wake-on = d pour le moment, cela signifie que vous avez bien la fonctionnalité mais qu'elle n'est pas activée.
Etape 3 - Activation du Wake-on-Lan
sudo ethtool -s enp3s0 wol g
De cette manière, si l'on refait:
sudo ethtool enp3s0
On devrait cette fois-ci avoir:
Wake-on: g
💡 Mais attention, cette manoeuvre n'est que temporaire, après un reboot, elle repassera à d. Pour faire en sorte que cela soit permanent, on va devoir créer un fichier service:
sudo nano /etc/systemd/system/wol@.service
Dans lequel on va mettre:
[Unit]
Description=Wake-on-LAN for %i
After=network.target
[Service]
Type=oneshot
ExecStart=/sbin/ethtool -s %i wol g
[Install]
WantedBy=multi-user.target
On va recharger nos services et faire un redémarrage automatique de ce dernier:
sudo systemctl daemon-reload
sudo systemctl enable wol@enp3s0.service
Voilà, de cette manière, même si vous redémarrez votre machine, votre de wol va se relancer tout seul ! 😉
Avant d'aller plus loin, il nous faut notre adresse mac de cette interface réseau:
ip link show enp3s0
Vous devriez obtenir une ligne comme ceci:
link/ether 00:1a:2b:3c:4d:5e brd ff:ff:ff:ff:ff:ff
Ici, 00:1a:2b:3c:4d:5e est votre adresse MAC, notez la soigneusement pour que vous puissiez la retrouver sur la machine qui déclenche le WoL.
Etape 4 - Appeler le service
Enfin, on peut appeler le service de WoL depuis une machine cliente.
Que ce soit une machine sous Linux, ou un téléphone etc, vous aurez besoin l'adresse MAC que vous avez noté plus tôt.
sudo apt install wakeonlan
wakeonlan <MAC>
Pour Android, j'utilise l'application Wake on Lan de Bitklog:
Et je démarre mes machines en un clic.
Conclusion
On peut désormais démarrer ou arrêter la machine (via les interfaces de gestion ou le SSH) de n'importe où sur le réseau. Cela permet de ne pas consommer de l'énergie pour rien, ne pas user vos disques durs pour rien, et réduire la température de mes autres serveurs.
En bref, il n'y a que du positif à faire ce genre d'optimisations.

Alexandre P.
Développeur passionné depuis plus de 20 ans, j'ai une appétence particulière pour les défis techniques et changer de technologie ne me fait pas froid aux yeux.
Poursuivre la lecture dans la rubrique System