LINUX:Allumage à distance

De WIKI sur Linux (ADB)
Révision datée du 13 février 2022 à 18:02 par Adebast (discussion | contributions)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Aller à la navigation Aller à la recherche

retour au menu de Linux


But

Une fonctionnalité intéressante des machines est la possibilité de les allumer à distance via le réseau. Mais au préalable, elles doivent être configurées. Nous ne traiterons que le cas où nous effectuons cette manipulation dans un réseau local. Cette fonctionnalité est connue sous le nom de "WAKEONLAN". Cette fonctionnalité est largement décrite sur le WEB. Nous ne passerons en revue que ce qui m'a été nécessaire.


Prérequis

La machine doit avoir au moins une carte réseau. Celle-ci doit posséder cette fonctionnalité. Si la carte réseau est intégrée à la carte mère, la consultation du BIOS vous y aidera. Si cette carte est ajoutée dans un slot, il faut consulter sa documentation et utiliser souvent un utilitaire particulier; il arrive qu'il faille connecter cette carte par un câble à la carte mère.


Vérification de sa présence

Sous Linux, il est possible de vérifier la présence de cette fonction et quels options sont activées.

Sous Fedora, il faut installer un paquet avec la commande suivante:

dnf install net-tools

Avec celui-ci vient un utilitaire qui le permet. A la commande, on doit ajouter comme paramètre le nom de l'interface. Si cet interface se nomme "enp0s25", nous utilisons la commande suivante que l'on filtre pour n'afficher que ce qui nous concerne:

ethtool enp0s25 | grep Wake-on

Nous obtenons le résultat de ce style:

Supports Wake-on: pumbg
Wake-on: g

On remarque ici que ce support est large comme on le constate à la première ligne ("pumbg"); on peut consulter dans les "man pages" leurs significations. Celui qui nous intéresse est le "g" qui concerne l'éveil par l'envoi de "WOL Magic Packets" (seconde ligne). Si cette seconde ligne contenait comme valeur "d", cette fonction est désactivée.

On peut également le vérifier en consultant le fichier "/sys/class/net/enp0s25/device/power/wakeup", ici pour l'interface "enp0s25". Il contient le mot "enabled" sinon il présenterait le mot "disable".


Activation

Si la fonction "magic packet" ou "g" n'est pas activée, on peut le faire par logiciel. Elle sera active pour le démarrage suivant. Il existe divers moyens.


BIOS

Une première méthode consiste à l'activer dans le BIOS ou au niveau des cartes réseaux ajoutées par un utilitaire fourni par le constructeur.


Commande "ethtool"

Sous Linux, pour l'activer, on peut utiliser la commande utilisée ci-dessus, de nouveau pour l'interface "enp0s25" en exemple:

ethtool -s  enp0s25 wol g

Pour la désactiver:

ethtool -s  enp0s25 wol d

Il faudra la ré-exécuter à chaque redémarrage. On peut utiliser le système des services qui se lancent au démarrage de la machine. Sous Fedora 35, c'est "systemd" qui est actif par défaut et recommandé. Voici un fichier d'exemple de configuration de ce service pour l'interface utilisé ci-dessus. On le nommera par exemple "wakeonlan.service"; il est à placer dans le répertoire "/lib/systemd/system/":


[Unit]
Description=Configure Wake On LAN
[Service]
Type=oneshot
ExecStart=/sbin/ethtool -s enp0s25 wol g
[Install]
WantedBy=basic.target

Il suffit ensuite de recharger "systemd" pour tenir compte de cet ajout et d'activer ce service:

systemctl daemon-reload
systemctl enable wakeonlan.service


Configurer l'interface réseau

De nouveau sous Linux, on peut aussi ajouter cette fonctionnalité dans le fichier de configuration de l'interface réseau.

Anciennement sous Fedora, ces fichiers de configuration se retrouvaient dans le répertoire "/etc/sysconfig/network-scripts/"; chaque interface avait son fichier préfixé par "ifcfg-" suivi du nom de l'interface. Par exemple pour l'interface "enps0s25" ce fichier se nommait "ifcfg-enp0s25".

Dans ce fichier, on ajoute la ligne:


 ETHTOOL_OPTS="wol g"


Actuellement, c'est le système NetworkManager qui est préféré. Dans le répertoire "/etc/NetworkManager/system-connections", on y trouve par interface réseau un fichier de configuration dont l'extension est ".nmconnection", ce qui donne dans notre cas "enp0s25.nmconnection".

Dans ce fichier, sous la rubrique "[ethernet]", on ajoute la ligne:


[ethernet]
wake-on-lan=64

Après activation, on peut également vérifier que cette option est prise en compte avec la commande:

nmcli connection show enp0s25 | grep "wake-on-lan:"

qui donne:

802-3-ethernet.wake-on-lan:             default

ou

802-3-ethernet.wake-on-lan:             magic


Remarque

Dans les OS actuels, cette activation est faite d'office, ce qui n'était pas le cas anciennement.


Réveil

Maintenant lorsque la machine est éteinte mais sous tension et connectée au réseau local par l'interface configurée comme ci-dessus, on peut la rallumer à distance à partir d'une autre machine située sur le même réseau. Attention un pont (bridge) peut bloquer le message de réveil envoyé. La machine émettrice envoie un "Magic Packet" sur le réseau. Ce message utilise le protocole UDP via le port 7 ou 9 selon l'utilitaire employé à une machine cible en précisant son adresse MAC. Sous Windows, il existe de nombreux FreeWare. Sous Linux nous utiliserons la commande de ligne "ether-wake".

Exemple de commande:

/sbin/ether-wake -i enp4s0 00:1b:21:3b:b6:ea

  • enp4s0 est le nom de l'interface réseau de la machine émettrice par lequel part le paquet
  • 00:1b:21:3b:b6:ea est l'adresse MAC de la machine que l'on veut réveiller

Si on fait un script, on peut faire une pause de quelques dizaines de secondes (commande "sleep") et refaire cet envoi par sécurité. Une commande "ping" permet de constater que la machine qu'on désire allumer, l'est bien.

Pour connaitre l'adresse MAC, soit on affiche la configuration du réseau sur la machine à allumer avec la commande:

ifconfig

soit à partir d'une machine distante, on utilise la commande:

arp -a

qui affiche les adresses MAC de toutes les machines avec lesquelles on a déjà effectué une connexion; une commande "ping" vers cette machine dont on désire connaitre l'adresse MAC, peut faire l'affaire.




retour au menu de Linux