Wake-on-Lan

Updated 10 Août 2019

Wake-On-Lan est une technologie qui permet de démarrer ou de réveiller un ordinateur par un message réseau.

Caractéristiques de l'ordinateur esclave

  • Alimentation ATX, carte mère compatible Wake-On-Lan
  • Adaptateur réseau compatible Wake-On-Lan
  • adresse MAC connue de l'adaptateur réseau

Configuration requise pour l'ordinateur hôte

  • logiciel dédié capable d'envoyer des Magic Packet

Comment cela fonctionne

L'ordinateur esclave est en attente et alimente l'adaptateur réseau. L'adaptateur CA est en mode basse consommation, parcourant tous les paquets arrivant à son adresse MAC sans y répondre. Si l'un d'entre eux s'avère être un Magic Packet, l'adaptateur réseau émet un signal qui met l'ordinateur sous tension.

Comment le faire fonctionner

Activez d'abord la prise en charge de WoL dans le BIOS de l'ordinateur esclave. Il peut s'agir d'un point du même nom comme Wake On Lan Enable, ou Power On By PCIE. Il est également possible que ce mode reste inchangé dans le BIOS, alors que la carte mère le prend en charge par défaut.

Pour savoir si une carte réseau WoL est compatible, démarrez l'ordinateur esclave et tapez :

ethtool eth0
Settings for eth0:
        Supported ports: [ MII ]
        Supported link modes:   10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Full
        Supports auto-negotiation: Yes
        Advertised link modes:  10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Full
        Advertised auto-negotiation: Yes
        Speed: 1000Mb/s
        Duplex: Full
        Port: MII
        PHYAD: 1
        Transceiver: external
        Auto-negotiation: on
        Supports Wake-on: g
        Wake-on: d
        Link detected: yes

Cherchez les lignes Supports Wake-on et Wake-on. Les premières affichent les modes de réveil disponibles de l'adaptateur réseau (+g signifie réveil via Magic Pocket), et les secondes le mode effectif (d+ pour WoL désactivé).

Pour mettre le NIC en mode WoL, composez :

ethtool -s eth0 wol g

Activez WoL :

ethtool -s eth0 wol d

La carte réseau peut prendre en charge la sauvegarde de son statut, mais elle peut également se réinitialisée (généralement à d+). Par conséquent, vous devez définir le mode nécessaire à chaque fois que vous démarrez le WoL.

Ajoutez l'activation WoL à tous les adaptateurs réseau qui prennent en charge cette technologie :

/etc/conf.d/net
preup() {
   if ethtool $1 | grep "Supports Wake-on:" | grep g >/dev/null;
     then
       ethtool -s $1 wol g
     fi
}

Pour obtenir le MAC de l'adaptateur réseau sur l'esclave, exécutez la commande suivante :

ifconfig -a
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.0.0.1  netmask 255.255.225.0  broadcast 10.0.0.255
        inet6 fde1:92f6:649a:0:724d:7bff:feb7:406e  prefixlen 64  scopeid 0x0<global>
        inet6 fe80::724d:7bff:feb7:406e  prefixlen 64  scopeid 0x20<link>
        ether 00:01:02:03:04:05  txqueuelen 1000  (Ethernet)
        RX packets 4129968  bytes 1885750720 (1.7 GiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 2068548  bytes 985677562 (940.0 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device interrupt 16  memory 0xf7000000-f7020000

ou alors, pour afficher le cache ARP sur l'hôte :

arp
Address                  HWtype  HWaddress           Flags Mask            Iface
10.0.0.1                 ether   00:01:02:03:04:05   C                     eth0
10.0.0.2                 ether   06:07:08:09:0a:0b   C                     eth0
10.0.0.3                 ether   0c:0d:0e:0f:10:11   C                     eth0

Pour s'assurer que tous les ordinateurs du réseau sont mis en cache, vous pouvez utiliser l'outil nmap, qui envoie un ping aux ordinateurs du réseau et dont les adresses MAC sont mises en cache :

nmap -v -Sp 10.0.0.0/24

Pour réveiller un ordinateur, lancez wol sur l'hôte :

wol MAC

Si vous utilisez une application, pensez que tous les ordinateurs ne sont pas activés immédiatement après avoir été branchés sur le secteur. C'est parce qu'au premier démarrage, il n'y a pas de init lorsque la carte réseau est alimentée. Un pré-démarrage manuel est donc nécessaire. Si vous souhaitez l'éviter (par exemple, si le serveur est verrouillé ou s'il se trouve à une grande distance), pensez à ajuster le paramètre Wake After Power Failure+ (réveil après coupure de courant), le mettant à ON dans le BIOS.