Pouvoir démarrer son PC à distance et accéder à toutes ses données personnelles sans passer par le cloud, quoi de mieux ? Ceci est possible grâce à WakeOnLan, un protocole et un programme qui permettent de démarrer un PC à distance, ou de le réveiller quand celui-ci est en mode veille. Bien que l'ordinateur soit arrêté, la carte réseau encore sous tension reçoit un paquet réseau « magique » et à la réception de ce paquet, elle démarrera l'ordinateur. Nous verrons ici plus particulièrement comment réveiller un PC en mode veille (« suspend to RAM ») depuis Internet.
Paquets à installer pour cet article :
- Debian/Ubuntu : ethtool, tcpdump, wakeonlan.
- Fedora/CentOS : ethtool, tcpdump, wol.
1. Préparatifs sur le PC
Tout d'abord, regardons si notre matériel supporte le WakeOnLan. Il faut premièrement regarder dans le BIOS si la fonction WakeOnLan est disponible et l'activer. En général, elle est disponible dans le menu « Power Management Setup ».
Une fois le PC démarré, vérifions que la carte réseau supporte bien le WakeOnLan. Dans un shell root ou avec sudo :
# ethtool eth0 | grep Wake-on
Supports Wake-on: pg
Wake-on: g
Sans « g » dans la ligne Supports Wake-on, inutile d'aller plus loin : votre carte réseau ne supporte pas le WakeOnLan. Activons le support du paquet magique WakeOnLan :
# ethtool -s eth0 wol g
Nous allons maintenant ajouter la carte réseau dans la liste des périphériques aptes à sortir le PC du mode veille. Identifions la carte réseau sur le bus PCI :
lspci | grep Ethernet
05:00.5 Ethernet controller: JMicron Technologies, Inc. JMC260 PCI Express Fast Ethernet (rev 02)
Notre carte réseau est ici le 5ème périphérique sur le bus PCI. La liste des périphériques autorisés à sortir le PC du mode de veille est une entrée dans le système de fichiers virtuel /proc/ :
cat /proc/acpi/wakeup
FRWR S3 disabled pci:0000:03:00.0
ARPT S3 disabled pci:0000:04:00.0
GIGE S3 disabled pci:0000:05:00.0
...
On voit ici que le 5ème périphérique sur le bus PCI correspond à une entrée GIGE, pour Gigabit Ethernet. Dans un shell root ou avec sudo, éditons cette entrée :
# echo -n GIGE > /proc/acpi/wakeup
On automatisera le lancement des réglages précédents au démarrage en les ajoutant à /etc/rc.local :
# cat << ma_fin >> /etc/rc.local
echo Activating WakeOnLAN
ethtool -s eth0 wol g
echo -n GIGE > /proc/acpi/wakeup
ma_fin
2. Test et mise en route
Testons maintenant l'envoi d'un paquet WakeOnLan depuis Internet. Tout d'abord, assurons-nous d'avoir ouvert le port UDP 7 sur notre routeur et d'avoir redirigé ce port vers notre PC avec la translation d'adresse idoine.
Le site depicus.com possède un formulaire permettant l'envoi de paquets WakeOnLan à l'adresse suivante : http://www.depicus.com/wake-on-lan/woli.aspx (ou ce raccourci : ur1.ca/41p8l). Sélectionnez 255.255.255.255 comme masque de sous-réseau et 7 comme port UDP.
Avant de mettre le PC en veille, regardons avec l'analyseur de réseau tcpdump que le paquet WakeOnLan est bien reçu. Dans un shell root ou avec sudo :
rosa:~# tcpdump udp and port 7
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
10:09:29.211117 IP mail.digitalwired.net.4419 > rosa.xen.prgmr.com.echo: UDP, length 102
Si tout fonctionne, c'est maintenant le moment décisif : mettez votre PC en veille et essayez de le redémarrer à distance...
Si le PC ne bouge pas, il faut absolument être sûr que le paquet est bien arrivé jusqu'à votre ordinateur ; pour cela, les diodes de votre carte Ethernet ou de votre switch doivent clignoter lors de la transmission du paquet.
En dehors du site depicus.com, il est bien sûr possible d'installer un programme envoyant les paquets WakeOnLan sur un serveur distant, depuis votre ordinateur portable. Sur une machine Debian/Ubuntu avec le paquet wakeonlan installé, l'envoi du paquet magique prendra ainsi la forme suivante :
wakeonlan -i 173.245.73.65 -p 7 00:22:41:30:c9:04
Sending magic packet to 173.245.73.65:7 with 00:22:41:30:c9:04
Sur une machine Red Hat/Fedora avec le paquet wol installé, l'envoi du paquet magique prendra la forme :
wol --host 173.245.73.65 --port 7 00:22:41:30:c9:04
On peut même envoyer des paquets WakeOnLan depuis son smartphone Symbian/Nokia, iPhone ou Android. Alors bon réveil !