Si vous avez la chance de possédez un routeur basé sur Linux comme le Netgear WNR3500L vous pouvez utiliser le firmware alternatif Tomato USB comme c'est mon cas.
Contexte
Le Wake On Wan consiste à envoyer un paquet magique à travers Internet dans le but d'allumer une machine à distance. C'est du Wake on Lan à travers Internet. Pour cela il faut traverser de nombreux routeurs qui ne laissent pas passer ce type de paquet magique.
La solution consiste à envoyer le paquet magique via UDP sur un routeur disposant de la fonctionnalité NAT (translation de port).
Tomato ne supporte pas le Wake On Wan et ce pour des raisons de sécurité (idem sur dd-wrt). Si vous souhaitez tout de même réveiller votre ordinateur à distance, il existe plusieurs solutions pour Tomato. Voici un tutoriel complet sur ce sujet.
Via l'interface web
L'interface de gestion Tomato permet de réveiller une machine de votre réseau local (LAN) dans Tools > WOL
Si vous avez défini une adresse DHCP statique dans le router pour l'ordinateur à réveiller alors il vous suffira de cliquer dans la liste sur la machine à réveiller. Sinon vous pouvez entrer manuellement l'adresse mac de l'ordinateur à réveiller :
L'inconvénient de cette solution c'est qu'il faut pouvoir se connecter à distance sur l'interface de votre routeur, ce n'est pas toujours facile lorsque l'on utilise un smartphone par exemple... et pas rapide puisqu'il faut s'authentifier puis arriver dans le bon menu WOL (cf. capture ci-dessus).
Via UdpProxy
Sur certains routeurs il était possible de créer une règle NAT pour renvoyer les paquets UDP arrivant sur le port 7/9 vers l'adresse de broadcast. Pour un réseau 192.168.0.0 il suffit de rediriger le port 9 vers l'adresse 192.168.0.255. C'était par exemple le cas sur mon Netgear RP614 v3.
Sur Tomato et dd-wrt c'est impossible, le routeur vous répondra "Invalid Ip address" si vous tentez d'ajouter une telle règle. En effet ces firmwares ne supportent pas le forward UDP sur l'adresse de broadcast. Pour contourner cette restriction il suffit d'utiliser un proxy UDP.
Voici comment procéder pour réveiller un pc à distance, nous utiliserons le port 9 dans notre exemple.
Avant tout, activer la connexion SSH via le menu Administration > Admin Access puis cocher "Enable at startup" dans la partie SSH Daemon.
- Choisir une adresse IP libre sur votre plage IP (idéalement hors de votre plage DHCP, réduisez-là si nécessaire) et gardez cette ip en tête.
Ex: si votre plage dhcp est 192.168.0.10-50 choisissez l'ip 192.168.0.9 - Aller dans Administration > Scripts, onglet Firewall puis coller les lignes suivantes (source) :
ip neigh change 192.168.0.9 lladdr ff:ff:ff:ff:ff:ff nud permanent dev br0 ip neigh add 192.168.0.9 lladdr ff:ff:ff:ff:ff:ff nud permanent dev br0
(remplacer 192.168.0.9 par l'ip choisie à l'étape 1)
- Enregistrer avec le bouton Save
- Aller dans Administration > JFFS. Cocher Enable et cliquer sur le bouton Format (patienter quelque instants). JFFS est un emplacement qui n'est pas effacé au redémarrage du routeur, c'est ici que nous allons déposer le proxy UDP.
- Se connecter en SSH avec PuTTY puis (entrez l'adresse ip du routeur) :
wget https://blogmotion.fr/public/2010/udp-proxy-v0-50_tomato-v1-25
mv udp-proxy-v0-50_tomato-v1-25 /jffs/udp-proxy
- Aller dans Administration > Scripts, onglet Init et coller :
/jffs/udp-proxy 9 192.168.0.255 9 &
Pour info: Usage: udp-proxy port-in ip-address port-out
- Enregistrer avec le bouton Save
- Aller dans Port Forwarding > Basic et ajouter une règle NAT permettant aux requêtes UDP arrivant sur le port 9 d'êtres redirigées vers le port 9 de l'adresse IP 192.168.0.9 (cf. étape 1) :
(cliquer sur Add une fois la ligne ajoutée) - Redémarrer le routeur, c'est fini !
Essayer le réveil à distance
Pour réveiller un ordinateur via Internet plusieurs sites existent, je vous conseille Depicus :
Explications :
1: Entrer l'adresse mac de l'ordinateur à réveiller
2: Entrer l'adresse ip publique de votre routeur ou bien son nom dns (pseudo.dyndns.org par exemple si vous avez un dns dynamique).
3: Toujours utiliser le masque 255.255.255.255, ne jamais changer ce champ
4: Entrer le port que vous avez redirigé vers l'ip 192.168.0.9 dans la partie Forwarding > Basic du routeur
Enfin il suffit de cliquer sur le bouton vert pour démarrer votre PC à partir de n'importe quel point du globe.
Note: si cela ne fonctionne pas je vous conseille d'utiliser un outil de d'écoute de paquet (sniffer) tel que Wireshark pour vérifier que le paquet magique est bien envoyé à toutes les machines de votre réseau (broadcasté). Si oui, alors vérifiez que vous avez activé le Wake On Lan dans le BIOS de votre machine (cf. ce tutoriel) et qu'elle est connectée en réseau filaire. Quelques PC récents proposent une réveil via un réseau sans fil mais je n'ai jamais essayé.
Via le terminal (utilisateurs avancés)
A titre d'info il est également possible d'envoyer un paquet magique en terminal (ssh ou telnet) directement depuis le routeur. Il faut utiliser ether-wake :
root@RTR-Tomato:/tmp/home/root# ether-wake BusyBox v1.17.2 (2010-10-06 01:46:13 EDT) multi-call binary.
Usage: ether-wake [-b] [-i iface] [-p aa:bb:cc:dd[:ee:ff]] MAC Send a magic packet to wake up sleeping machines. MAC must be a station address (00:11:22:33:44:55) or a hostname with a known 'ethers' entry. Options: -b Send wake-up packet to the broadcast address -i iface Interface to use (default eth0) -p pass Append four or six byte password PW to the packet
Conclusion
Nous voilà avec un routeur capable de réveiller un ordinateur à travers internet. Plutôt que d'utiliser Depicus vous pouvez également utiliser l'application Android ou iPhone (en attente de validation par Apple).
Vous pouvez aussi utiliser une des nombreuses solutions proposées chez Depicus : Com Object, dotNet, ligne de commande windows, asp et même via une application facebook. Je publierai prochainement un billet avec le code source PHP pour réveiller un ordinateur à partir d'une simple requête GET.
Merci à Phil Ten d'avoir développé ce proxy UDP sans quoi rien n'aurait été possible.
Auteur : Mr Xhark
Fondateur du blog et passionné par les nouvelles techno, suivez-moi sur twitter
16 commentaires
[...] Article original écrit par Mr Xhark publié sur Blogmotion le 20/10/2010 | Aucun commentaire | Attention : l’intégralité de ce billet est protégée par la licence Creative Commons [...]
[...] poussés tel que Synology pour la fonction NAS ou encore un routeur avec un firmware libre comme Tomato. Elle est en revanche bien moins chère que des équipements qui réaliseraient des [...]
salut,
j'ai esectuter ce tuto avec un
wnr3500 + TOMATO 1.27
= ca fonctionnait tres bien...
maintenant, je suis passe sous TOMATO 1.28 -Toastman-VPN-BT
et la c'est la cata
sa ne fonctionne plus
-quand j'active la JFFS j'ai ce message d'erreur
-et surtout lorsque je me connecte en TELNET
et que je lui donne ca:
mv udp-proxy-v0-50_tomato-v1-25 /jffs/udp-proxy
il me repond ca:
>mv: can't create '/jffs/udp-proxy': read-only file system
que faire SVP?
@shaukos: Je suis en 1.28 et cela fonctionne. Il faut activer l'écriture sur /jffs dans Administration>JFFS: Enable
salut Mr Xhark,
et merci de m'avoir repondu...
Malheureusement pour moi tout est bien activer dans Administration-->JFFS=enable
a chaque fois que j'execute le tuto (à la lettre pres)
je rencontre deux problemes:
1/lors de l'activation de JFFS:
en-dessous apparait ce message:
"Error mounting JFFS. Check the logs to see if they contain more details about this error."
il ne me semble pas avoir vu cela sur la 1.27...
apres lors de la connection avec PUTTY:
"Tomato v1.28.2453 MIPSR2-Toastman K26 USB VPN-BT
root@unknown:/tmp/home/root# wget http://blogmotion.fr/public/2010/udp-proxy-v0
-50_tomato-v1-25
Connecting to blogmotion.fr (178.33.204.24:80)
udp-proxy-v0-50_toma 100% |*******************************| 12037 --:--:-- ETA
root@unknown:/tmp/home/root# mv udp-proxy-v0-50_tomato-v1-25 /jffs/udp-proxy
mv: can't create '/jffs/udp-proxy': Read-only file system
root@unknown:/tmp/home/root# mv udp-proxy-v0-50_tomato-v1-25 /jffs/udp
mv: can't create '/jffs/udp': Read-only file system"
j'ai un wnr3500 U/L avec ce firm:
Tomato v1.28.2453 MIPSR2-Toastman K26 USB VPN-BT
d'apres ce que tu me dit je vais peu-etre le reflashe ce soir ....
sinon avec la 1.27 j'ai rencontre aucun probleme...
sinon, dans script-->firewall
1 ligne est deja presente
je l'ai donc supprimee et remplaceee par:
"ip neigh change 192.168.0.9 lladdr ff:ff:ff:ff:ff:ff nud permanent dev br0
ip neigh add 192.168.0.9 lladdr ff:ff:ff:ff:ff:ff nud permanent dev br0"
en faite je n'ai pas le souvenir d'avoir vue cette ligne dans la v1.27...
encore merci pour ton aide, et surtout pour ce tuto...
@shaukos: You're welcome. Du coup tu es en quelle version ?
lool
merci mais j'ai trouve tout seul:
en faite, dans les version VPN de tomato je crois qu'il n'y a pas de JFFS (comme indiquer ci-dessous)...
seulement dans les autres versions... a moins qu'il existe une technique pour contourner cela (cle USB peu etre, mais ca m'etonerais)...
donc pour l'instant chez moi pas de WOW en version VPN chez la tomate....
version de la tomate:
"The Tomato USB comes in several different editions:
Standard: most basic features; ~300KB JFFS space (5 blocks) available on 4MB flash routers;
Extras: all features of Standard plus built-in NTFS support (starting from build 36), included Linux Ext2/Ext3 and FAT32 filesystem utilities (fdisk, e2fsck, mke2fs, mkswap, mkdosfs), built-in loop device support, some extra Linux commands not included in other builds, and additional color schemes. ~120KB JFFS space (2 blocks) available on 4MB flash. This version is for people who don't really need JFFS space, or have 8+ MB flash routers, and would like to be able to partition/format drives in Linux native Ext2/Ext3 format or in FAT32 format directly on the router without installing any additional tools.
Lite: all features of Standard but no Samba; some very minor features are stripped out of Busybox, about 600KB JFFS space (10 blocks) available on 4MB flash routers;
No CIFS: all features of Standard but no CIFS Network filesystem support, about 420KB JFFS space (7 blocks) available on 4MB flash routers;
VPN: Extras edition merged with SgtPepperKSU' VPN build with Web GUI (no JFFS space left on 4MB flash).
No USB: Initially this was the USB mod… However, it grew up to be an "extended" version of Tomato even without USB support, so starting from build 36 Tomato USB includes non-USB edition (ND only) for routers with no USB ports. This build has about 900KB of JFFS space (15 blocks) available on 4MB flash routers."
du coup je suis en :
Tomato v1.28.2453 MIPSR2-Toastman K26 USB VPN-BT
j'ai laisser le dernier firm installe car j'essaye de savoir si je peu recevoir le signal de mon FAI directement sur la tomate en configurant tout ca...
(car chez moi j'ai le routeur du FAI en bridge et derriere j'ai la tomate)
si c'est possible, je reprendrais peu-etre une deuxieme tomate lool
Bonsoir
J ai un wndr3800. J ai installé tomato, tout c est bien passé.
J ai réussie à me connecter et à changer l ip du routeur en 192.168.1.2 ma livebox s'étant en 192.168.1.1
Au bout de quelques minutes, plus rien, impossible de me reconnecter.
Je voie le routeur avec l ip 192.168.1.2 mais il ne me demande pas de log. La page reste vierge. Vous avez une idée?
J ai fait plusieurs reset.
WHAT is PuTTY SSH ??? I dowloaded this and still DO NOT understand this complicated program.
You might want to edit this page, particulalry
Steps between 4 to 5 PuTTY SSH
Not everyone is a networking GURU and understands the language. I myself and trying to enable remote networking, I am not a programer ira networking IT specialist...and I followed your steps, until you jump to the "login to Putty"
log in to putty? what does that even mean?? So
ok, so I logged into putty, now what? add the IP of the router?? ok...where in putty do I add the IP of the router??
Makes no sense
@mattepps: comme précisé cette manipulation est destinée aux utilisateurs avertis ayant de solides connaissances en informatique
[...] En espérant que cela serve à quelqu'un. Si vous utilisez un firmware libre tel que Tomato voici la procédure pour activer le WoW à travers votre routeur. [...]
voici une solution alternative et simple a mettre en pratique
http://n01getsout.com/blog/2006/11/16/wake-on-lan-on-linux-with-a-linksys-wrt54g
@smirold: effectivement en coupant la plage IP en deux on arrive à contourner la protection, qui est d'ailleurs débile de ne contrôler que le 255, moi qui pensais qu'elle faisait au moins un calcul binaire. Merci pour l'astuce 🙂
[…] Nous avons un petit système sympa qui envoie une notification quand la connexion web revient. Particulièrement pratique si j'ai besoin de prendre le contrôle à distance d'un ordinateur à la maison, même s'il est éteint. […]