Réveiller un ordinateur à distance : WakeOnLAN, WakeOnWAN, Remote Wakeup sous Linux

Introduction

Le WakeOnLAN (WOL) est une fonctionnalité simple mais essentielle des réseaux. Elle permet notamment aux administrateurs d'allumer (réveiller) un ordinateur à distance, à des fins de maintenance par exemple, sans avoir à se déplacer.
Son implémentation est également simple. Elle obéit à une série de normes créées par IBM et AMD.

Si vous n'êtes pas encore familiarisés avec les notations de ce site, jetez un oeil à la page :
Cliquez, puis revenez ici.

Pour visualiser les vignettes, à droite, survolez simplement la vignette avec la souris.

Haut

Un peu de théorie

Le WOL agit au niveau de la couche 2 du modèle OSI. Il est basé sur un "Paquet Magique" (Magic Packet) qui, contrairement à son nom, n'est pas à proprement parler un paquet et n'a rien de magique. C'est une séquence normée et formatée selon des règles fixes.
L'ordinateur client (à réveiller) ne nécessite, en général, pas de logiciel spécifique.
Pour réveiller un ordinateur précis, il faut l'identifier. S'il est éteint, il n'a normalement pas d'adresse IP. On utilise alors son adresse MAC. Il s'agit d'une adresse "hard", programmée dans la carte réseau. C'est ici qu'intervient le "Paquet Magique", il contient une séquence fixe reconnue par la carte réseau; il peut être encapsulé dans n'importe quel paquet IPX, IP...

Haut

Prérequis pour l'ordinateur à réveiller

Il doit avoir :

  • Une alimentation ATX, qui délivre l'alimentation 'standby' pour la carte réseau,
  • Une carte mère compatible ACPI car le WakeOnLAN est une fonction de l'ACPI qui permet de réveiller la machine, (il y en a d'autres : WakeOnRing, démarrage à une certaine heure...),
  • Une carte réseau compatible WakeOnLAN,
  • Sur certaines cartes-mères, la carte réseau doit se trouver dans un connecteur PCI bien précis,
  • Les drivers du système d'exploitation (qui propose d'activer ou non le WakeOnLAN).

Remarques :

  • Les cartes réseau compatibles PCI 2.1 ont un connecteur 3 broches pour l'alimentation de la carte. Il faut le relier au connecteur "WOL" qui doit exister sur la carte-mère.
  • Avec PCI 2.2, l'alimentation se fait directement par le connecteur PCI. Il n'y a plus ni câble ni connecteurs.
  • Certaines cartes ont un chip compatible, mais ne le sont pas elles-mêmes. Ex. Planet ENW9504 V.4 (chip RTL8139C). Par contre, la version V.6 de cette même carte est compatible PCI 2.2.
Haut

Prérequis pour la carte réseau de l'ordinateur à réveiller

Si la carte réseau comprend un connecteur nommé WOL, elle répond à la version PCI 2.1. Il faut alors que la carte mère ait également ce connecteur WOL. (Beaucoup de cartes mères correspondant à la norme PCI 2.2 ont également ce connecteur, pour des raisons de compatibilité).
Si la carte réseau supporte le WOL mais n'a pas de connecteur WOL, c'est qu'elle correspond à la norme PCI 2.2. Il faut alors que la carte mère supporte également PCI version 2.2.
Comme déjà indiqué, le fait que le chip de la carte réseau supporte le WOL est une condition nécessaire, mais elle n'est pas forcément suffisante. Comme exemple : de très nombreuses cartes utilisent le chip RTL8139. Celui-ci existe lui-même en différentes versions (A, B, C, C+, D) et peut-être encore d'autres. Certaines cartes basées sur ce chip supportent la fonction WOL, d'autres ne la supportent pas.

Voici un tableau qui vous donne quelques exemples de cartes testées par mes soins :
 

ConstructeurModèle ChipWOL
NalconEtherPrime EP3200r RTL8029ASNon
AcctonCheetahEN1207D-TX MPX5038Non
PlanetENW9503A RTL8139?Oui (2.1)
PlanetENW9504 V.4 RTL8139CNon
PlanetENW9504 V.6 RTL8139DOui (2.2)
WinbondVCI RTL8139BNon
TrendNetTE10-PCIWN RTL8139DOui (2.2)
?Rhine III 10/100 VT6105Oui (2.2)
IntelEtherjet intel 82559Oui (2,1 et 2,2)
IntelEtherExpress Pro/100+ intel 82559Oui (2,1 et 2,2)
Haut

Préparation

Vous devez d'abord préparer l'ordinateur à réveiller.

Dans la suite de la configuration, vous aurez besoin de taper quelques commandes dans une console.
Si vous n'avez pas encore installé l'applet 'Sessions de terminal', c'est le moment,
Cliquez puis revenez ici.

Ouvrez donc une console en tant que superutilisateur (le mot de passe sera demandé).
TableauBord/Sessions de terminal/Shell superutilisateur
Vous en aurez besoin par la suite.

Installation de la carte

  • Si la carte réseau est compatible PCI 2.1, branchez le câble WOL de la carte réseau à la carte mère. Voyez la notice de votre carte mère. Les connecteurs sont en général marqués "WOL".
  • Sur certaines cartes-mères, la carte réseau doit se trouver dans un connecteur PCI bien précis.
Haut

Réglages du BIOS

Vous devez, dans le BIOS, activer la fonction ACPI et les fonctions WOL ou PME, suivant le type de la carte mère installée.
Vous devez réaliser deux choses :

  • Activer l'ACPI dans le BIOS. (Il n'est pas indispensable de l'activer dans Linux, puisque quand WOL intervient l'ordinateur est à l'arrêt. Le système d'exploitation n'entre donc pas encore en ligne de compte.
  • Activer le WakeOnLAN (ou le PME pour les cartes PCI 2.2) dans le BIOS.

La façon de procéder est très différente d'un ordinateur à l'autre, comme l'indiquent les quelques exemples ci-dessous.
Vous y trouverez également certains réglages facultatifs du BIOS, concernantl'économie d'énergie.
Popup montrant, les réglages du BIOS pour quelques cartes mères
Cliquez

Premiers contrôles

Vous pouvez faire un premier contrôle, si la machine est connectée à un Hub ou à un Switch.
Vérifiez, sur le switch, que la LED correspondant à la machine reste bien allumée, même lorsque vous avez éteint la machine. Cela veut dire que la carte reste sous tension, qu'elle est connectée au réseau et qu'elle peut donc recevoir les paquets qui y passent.
Sur la carte réseau, une diode reste éventuellement allumée, mais tous les constructeurs ne le prévoient pas.

Haut

Configuration du pilote de la carte réseau

Pour que la carte réseau accepte le réveil à distance, il faut que, au moment où vous éteignez la machine, la carte réseau soit configurée en conséquence.
Ce réglage dépend du pilote de cette carte et il reste mémorisé dans la carte lorsque vous avez arrêté l'ordinateur.
Sous Linux, le pilote de la carte réseau se présente généralement sous la forme d'un module du noyau et ce module comprend une option relative à l'activation ou non de la fonction Wake on LAN. En général, sous Linux, elle n'est pas activée.
Vous devez donc configurer le module de telle sorte qu'il active cette fonction lors du déchargement du module, c'est-à-dire lors de l'arrêt de l'ordinateur. Là également, les réglages à faire dépendent beaucoup du module. Dans un premier temps, il importe de connaitre le nom de ce module.

Haut

Recherche du module et configuration de wol, lorsque cela est possible avec les options

Dans un premier temps, vous devez déjà savoir quel est le pilote (module) utilisé avec votre carte réseau. Certains modules peuvent même être configurés dans la foulée.
Comme souvent, vous pouvez faire cette recherche en mode graphique ou en mode console.

Recherche en mode graphique

Haut

Recherche avec une console

Configuration du pilote e100 ou eepro100

Avec Mandriva 2007 et 2008.0, les deux pilotes permettent le Wake On LAN, sans modifier la configuration.
Vous pouvez passer directement au paragraphe Détermination de l'adresse physique de la carte réseau.

Des anciens pilotes eepro100 ne prenaient pas du tout en compte le Wake On LAN.
Il faut alors utiliser le pilote e100.
 

Configuration avec ethtool.

Vous pouvez configurer de nombreux pilotes de cartes réseau à l'aide de l'outil ethtool (8139too, 8139cp, natsemi, tg3 ..)

Le paquetage ethtool

Normalement, avec Mandriva 2008.0, le paquetage ethtool est déjà installé.

L'interface réseau

La carte est-elle compatible ethtool ?

Activer wol (principe)

Activer automatiquement wol

Une solution consiste à définir des options ethtool dans le fichier /etc/sysconfig/network-scripts/ifcfg-ethx

Haut

Détermination de l'adresse physique de la carte réseau

Chaque carte réseau possède une adresse matérielle aussi appelée adresse physique. C'est une adresse unique.
Pour avoir l'adresse physique, dans la console, lancez la commande
ifconfigDans le résultat de la commande, vous trouverez une information du genre
HWaddr 00:04:AC:93:F3:72

Haut

Démarrer la machine.

Depuis le réseau interne, avec des hubs ou des switchs

Depuis un poste, en tant que root, lancez la commande :
ether-wake xx:xx:xx:xx:xx:xxavec xx:xx:xx:xx:xx:xx = adresse MAC de la carte de l'ordinateur à allumer.
Attention ! Si l'interface que vous utilisez n'est pas eth0, la commande est un peu plus complète. C'est par exemple le cas lorsque vous utilisez une Xbox avec liaison USB.
ether-wake -i ethx xx:xx:xx:xx:xx:xx

Attention ! Si votre réseau local utilise un routeur (par exemple une Freebox configurée en routeur), il faut peut-être activer une fonction pour autoriser la transmission des "paquets magiques" en "broadcast"
Dans le cas de la Freebox, il faut configurer :
Proxy WOL (Wake On Lan) activé

Depuis Internet

Jusqu'à présent nous avions considéré la configuration suivante : une machine cible à allumer, le réseau local et une machine "allumeuse".
Avec Internet, nous avons de nombreuses possibilités de configuration, quelques unes figurant dans le tableau ci-dessous.
Toutes combinaisons "Allumeur" et "Cible" sont possibles dans le tableau ci-dessous..

Côté allumeur InternetCôté cible
Site Internet spécifiquemodem ou xBox + cible
PC + modem ou xBoxmodem ou xBox + routeur + LAN + cible
PC + LAN + routeur + modem ou xBoxxBox/routeur + LAN + cible
PC + LAN + xBox avec fonction routeurmodem ou xBox + pare-feu/routeur + LAN + cible
PC + LAN + pare-feu/routeur + modem ou xBox
Haut

Un peu de théorie.

Internet, qui est un réseau de niveau 3, ne peut véhiculer directement le magic packet qui est une trame ethernet, de niveau 2.
On doit passer par un protocole de niveau 4 qui est bien géré par les routeurs, même basiques.
On peut utiliser TCP ou UDP qui sont eux-mêmes transporté par IP qui est de niveau 3.
Le plus simple est d'utiliser UDP, parce que le contenu d'un paquet UDP est arbitraire alors que le contenu d'un paquet TCP de demande de connexion (SYN) est réglementé.

Haut

Préparation des paquets.

Des utilitaires de WOL permettent d'encapsuler un magic packet dans un datagramme UDP. On peut soit utiliser un tel utilitaire sur le poste "allumeur", soit utiliser les services de sites Internet spécifiques qui permettent de le faire. Exemples :
http://wakeonwan.free.fr/
http://stephan.mestrona.net/wol/
http://www.dslreports.com/wakeup

Haut

Configuration du routeur.

Il faut créer sur le routeur une redirection du port UDP choisi vers l'adresse IP de l'ordinateur à réveiller.
Vers quelle adresse IP en fait ? C'est là le noeud du problème.
À ce stade la machine cible est éteinte. Même si vous lui attribuez une adresse fixe, cette adresse n'est pas encore effective.
Si vous créez une redirection vers l'adresse IP qu'elle est censée avoir, il va se passer les choses suivantes :

  • le routeur reçoit sur son interface WAN le datagramme UDP contenant le magic paquet.
  • il modifie l'adresse IP de destination du datagramme et se prépare à le ré-émettre via son interface LAN.
  • avant cela, il doit déterminer l'adresse MAC ethernet correspondant à l'adresse IP de destination afin de construire la trame ethernet qui contiendra le datagramme.
    À cet effet il émet une requête ARP sur le LAN.
  • comme la machine cible est éteinte, le routeur n'aura jamais de réponse à sa requête. Par conséquent le routeur ne peut retransmettre le paquet UDP
    il devrait renvoyer un message d'erreur ICMP "host unreachable" à l'émetteur du paquet original.

Comment contourner le problème de la résolution ARP ? Deux voies sont envisageables :

  • soit configurer la table ARP du routeur
  • soit réémettre sur l'adresse broadcast.
Haut

Configuration d'une xBox qui fait fonction de routeur.

Si le PC cible est directement raccordé à une Freebox et que celle-ci assure la fonction de routeur, il faut reconfigurer celle-ci pour qu'elle transmette le magic packet.

Si la xBox est un modèle autre que Freebox, il convient de vérifier si une telle fonction est possible et comment.

Haut

Configuration d'un autre routeur

Le mode opératoire dépend du routeur et l'une des deux solutions ci-dessous peut être utilisée :

  1. Écrire "en dur" dans la table ARP du routeur une correspondance statique entre l'adresse IP de la machine et l'adresse MAC de son interface ethernet, si le routeur le permet.
    Cela aura pour résultat d'éviter l'émission d'une requête ARP.
    C'est l'équivalent de la commande "arp -s" de systèmes d'exploitation tels que Windows ou Linux.
  2. Créer sur le routeur une redirection UDP vers l'adresse IP de broadcast du réseau local (soit 192.168.0.255 si le réseau est 192.168.0.0/24), toujours à condition que le routeur le permette.
    Ainsi le paquet sera réémis sur le réseau local avec l'adresse ethernet de broadcast, FF:FF:FF:FF:FF:FF, sans avoir besoin de connaître l'adresse MAC de la cible.
    *Toutefois* je n'ai pas la certitude que la fonction WOL de la carte fonctionne avec une trame ethernet dont l'adresse destination est l'adresse de broadcast, mais c'est à essayer si le routeur ne supporte pas la première solution.
Haut

Configuration du pare-feu.

Si vous avez un pare-feu entre votre réseau et l'internet, il faudra également autoriser l'accès au port 9/udp
Par contre, si l'ordinateur à réveiller intègre un pare-feu, il est inutile d'autoriser l'accès à ce port, vu que l'ordinateur est éteint et que le pare-feu n'est donc pas encore actif.

Haut
 

Les pages relatives aux tutoriels :

Installation : avant, pendant, après Installation, pas à pas, de 2008.0 Installation, depuis internet Installation en réseau
Comment MDV sélectionne les paquetages Créer sa liste de paquetages
Configuration du système Configuration d'un utilisateur KDE Serveur de fichiers avec ProFTPD Partage de fichiers avec NFS
Réveiller un ordinateur à distance Commander un ordinateur à distance avec ssh
Le son et la gestion du son La video et la gestion des images Découvrir la puissance de Gstreamer
Faire des sauvegardes générales Nettoyer le répertoire /home Changer de client de messagerie Synchroniser fichiers et répertoires
Créer sa distribution personnelle Autopsie d'une distribution Mandriva

Les différentes rubriques :

Accueil Ordinateur Mandriva Tutoriels Initiation à la programmation Maison bioclimatique
On se lasse de tout, sauf de comprendre.
Attribué à Virgile.