Bon à savoir: le Wake-On-LAN

Wake on LAN 24 mai 2023

Desfois, on est à l’extérieur… Et d’un coup, il y a une coupure de courant chez nous. Zut, justement il y avait ce serveur de données qu’on héberge afin d’avoir nos services n’importe où…

Et le courant revient. Tout remarche: le routeur, la télé… Excepté notre petit serveur, qui lui refroidit toujours dans un coin.

Il existe heureusement une solution bien pratique, qui s’appelle le Wake on LAN, et…

… Un instant : Wake on LAN?

Oui oui, vous avez bien entendu. La très grande majorité (pour ne pas dire toutes aujourd’hui, c’est un standard) des cartes-mères ont le support du Wake on LAN (que je vais désormais raccourcir en WOL). Cela permet, à travers un paquet très spécifique, de démarrer à distance un ordinateur. Il ne pourra pas l’éteindre ou de le redémarrer. Juste l’allumer!

Et c’est justement parfait, car si notre serveur ne démarre pas de nouveau, on pourra toujours le faire à distance! Bien sur, vous pouvez faire pareil sur un ordinateur fixe (ou ordinateur portable, si connecté en filaire et sur secteur).

Bien entendu, le protocole WOL ne fonctionne qu’en Ethernet. Cependant depuis peu, on a la possibilité de le faire aussi via WiFi! Son nom est d’ailleurs très rigolo: WOWLAN (Wireless on Wake on Lan). Il devrait ne pas y avoir trop de différences dans le tutorial, mais rien de tout ça ne sera pas spécifié dans cet article.

Le paquet en question

Honnêtement, la structure d’un paquet WOL est très simple à comprendre.

Chaque paquet WOL se compose de la sorte:

  • FF FF FF FF FF FF , qui est le header,
  • AA BB CC DD EE FF , (qui est l’adresse MAC de la machine cible) qui sera répété 16 fois (!!!!!),
  • (optionnel) Et s’il est supporté, un mot de passe permettant de le réveiller (entre 4 à 6 bits)

Le port utilisé peut être 0, 7 ou 9 (Pourquoi 3 ports par ailleurs?) et fonctionne à travers le protocole UDP.

Ci-dessous un exemple de paquet de WOL capturé depuis Wireshark:

Configuration du Wake On LAN sur la machine cible

Pour que cela fonctionne, le WOL nécessite 4 conditions:

  • Que la fonctionnalité Wake on LAN soit activée dans le BIOS,
  • Que la fonctionnalité Deep Sleep soit désactivée, toujours dans le BIOS,
  • Que dans l’OS cible, la fonctionnalité Wake on LAN soit activée.
  • Et bien sur, que la machine cible soit dans le réseau où vous vous trouvez.

C’est difficile d’expliquer où se trouve la fonctionnalité Wake on LAN et Deep Sleep sur votre BIOS, car chaque carte-mère fonctionne différemment. Mais une petite recherche et vous la trouverez. Il se peut aussi que le Deep Sleep n’existe pas sur votre carte-mère, cette fonctionnalité étant assez récente.

Dans Windows…

Pour que vous pussiez activer le Wake on LAN, il suffit d’aller dans le gestionnaire de périphériques (WIN + X puis Gestionnaire de périphériques)

A présent, allez dans les propriétés avancées de votre carte réseau (en général vous avez une carte Realtek ou Intel), et cherchez « Wake on LAN » ou « Wake on Magic Packet« . Vérifiez que l’option est bien activée. C’est tout!

Allez aussi dans l’onglet Gestion de l’alimentation. Vérifiez que toutes les cases soient cochées:

Pensez à faire un « ipconfig /all » dans une invite de commande afin d’avoir votre adresse MAC. Vous en aurez besoin dans la suite du tutorial (vous vous en doutiez? 👀).

Sous Linux (Proxmox principalement mais aussi Debian/Ubuntu)

Sous Proxmox, l’étape est un peu différente. Tout d’abord, en root, vérifiez que vous avez le support Wake on LAN. Commençons par installer ethtool :

apt install ethtool

Une fois fait, vérifiez avec la commande ip addr notre interface ethernet:

Ici, nous avons enp2s0 qui est notre port réseau. vmbr0 est un pont, donc lui on s’en fiche. Pensez à récupérer par la même occasion votre adresse MAC!

Avec ethtool, on va donc chercher si l’option Wake on LAN est activé sur notre interface:

ethtool <interface> | grep Wake

S’il est en « g« , c’est nickel! S’il est en « d« , c’est qu’il est désactivé. Et si vous n’avez rien, va falloir acheter un truc un peu plus récent… Bref, on va l’activer pour cette fois:

ethtool -s <interface> wol g

Vous pouvez revérifier avec la commande au dessus pour voir si la valeur « Wake-on » est passé en « g ».

Mais il y a un hic avec cette méthode: au prochain redémarrage, cette valeur repassera en « d ». On va donc aller dans le fichier des interfaces pour qu’il soit activé automatiquement.

nano /etc/network/interfaces

Et on va écrire ceci (attention, il y a 3 <interfaces> à changer par le nom de l’interface concerné!) :

auto <interface>
iface <interface> inet manual
post-up /usr/sbin/ethtool -s <interface> wol g

Vérification si le WOL est bien activé

Pour s’assurer que le WOL est bien présent sur la machine, il vous suffit… D’éteindre votre machine. C’est tout. 👀

Une fois éteint, votre port Ethernet derrière le PC devrait, lui, continuer d’être allumé. Ça veut dire qu’il reçoit encore les paquets de votre réseau!

Si ce n’est pas le cas, vérifiez dans le BIOS vos paramètres (car c’est souvent la, le souci #1…).

Tester le WOL

Pour tester si le protocole WOL fonctionne bel et bien, il va vous falloir un autre appareil connecté au réseau. Que ça soit sur Windows, Linux, ou encore Android, tant qu’il est connecté!

Pour mon cas, je vais utiliser une application sous Android qui est disponible sur le store alternatif F-Droid qui s’appelle BootBoi. Vous pouvez bien entendu utiliser une toute autre application, c’est vous qui voyez:

J’ai crée une entrée avec l’adresse MAC de mon serveur. L’application permet aussi d’utiliser le SSH pour redémarrer ou éteindre le serveur, c’est entièrement optionnel, mais je l’ai ajouté quand même:

Plus qu’à tester: si l’ordinateur s’allume bien après avoir envoyé le paquet magique, ça fonctionne! Sinon, revérifiez que vous êtes bien sur votre réseau.

Imaginez les applications maintenant avec le WOL: avec un VPN directement relié chez vous, ou via votre routeur, vous pourrez donc être capable de démarrer n’importe où, n’importe quand votre serveur. Encore mieux: vous pouvez donc éteindre votre serveur la nuit (via crontab), et avec un script de votre routeur (si vous avez accès au ssh et à l’outil etherwake), vous pourrez donc le rallumer à une heure précise, et faire de petites économies de courant. C’est une bonne chose, vous ne trouvez pas? =)

Mots clés

Ch0wW

🌍 Entrez dans mon monde! Je poste du contenu en rapport avec les jeux retro, l'informatique, le modding et la réparation d'appareils... N'hésitez pas à me contacter pour toute question ou demande!