Page 1 of 1

Wale on Lan (Wake on Wan) depuis une carte Raspberry Pi

Posted: Fri Jun 24, 2016 5:20 pm
by skrytek
Bonjour,

Je viens de m'acheter une carte Raspberry Pi et je voudrais savoir comment faire pour réveiller mon PC à distance même depuis l’extérieur depuis mon smartphone.

Je m'explique, j'ai installé une application sur mon téléphone (Wake on Lan / Mike Webb) qui me permet avec un simple clique d'allumer mon PC hors cela ne fonctionne pas en Wake on Wan. Du coup je voulais savoir comment ce serais possible d'allumer mon PC en WoW aussi facilement...

- Dois-je coder quelque chose afin d’exécuter une commande qui envoie le paquet magique sur mon PC depuis la RPi ?
- Dois-je envoyer le paquet magique sur ma RPi et trouver un moyen de retourner le paquet pour mon PC (car j'ai cru comprendre que ce qui posait problème pour le WoW c’était la table ARP ou que la box SFR n'acceptais pas le protocole UDP/TCP depuis une connexion externe ou quelque chose du style) ?
- Dois-je trouver comment envoyer ce paquet depuis le serveur web de ma RPi ?
- Ou autre chose ?


Sachant que le WoW fonctionne avec l'application si je viens tout juste d’éteindre mon PC.

Merci d'avance :D

Re: Wale on Lan (Wake on Wan) depuis une carte Raspberry Pi

Posted: Fri Jun 24, 2016 6:35 pm
by epoch1970
Bienvenue.
Wake on Lan est un dispositif où des cartes réseau sous tension qui voient passer une trame ethernet d'un format spécifique, envoient le signal de reveil à l'ordinateur.
Dans la trame, il y a l'adresse MAC de la carte qui doit se reconnaître pour réveiller son ordi. La trame peut être envoyée directement à cette carte (si on connaît son adresse IP), ou sur l'adresse de diffusion du réseau. Dans ce cas, toutes les cartes voient passer le message, mais une seule se reconnaît.

Tu passes par un routeur, il a plusieurs cartes et gère au moins 2 réseaux. Une adresse IP est attachée à une adresse MAC (grâce à ARP), mais normalement l'association n'est pas définitive (statique). Donc ton routeur reçoit le paquet magique, il regarde en mémoire, et ne trouve pas l'adresse MAC de l'IP que tu as spécifié puisque le PC dort depuis plus de 5 minutes. Le routeur lance un appel à tous, mais le PC qui dort ne répond pas.
Le routeur pourrait envoyer la trame sur l'adresse de diffusion (lui ne dormant pas, il ne peut pas oublier celle-là), mais: s'il gère plusieurs réseaux, faut il diffuser sur tous les réseaux? Et surtout, sachant que la demande vient de l'extérieur, n'est pas forcément légitime, est-il bien raisonnable de diffuser à tout le monde? Alors sagement, il ne donne pas suite.

Tout ce que tu constates est donc normal. C'est déjà bien que la box ne bloque pas le réveil à distance. Il y a deux solutions pour faire fonctionner le réveil depuis Internet :
a) Mettre dans le routeur une association adresse IP - adresse MAC définitive (static ARP), pour qu'il ne perde jamais la trace de l'adresse MAC. Mais très probablement, ta box ne propose pas cette fonction
b) Programmer ton client mobile et la box pour envoyer les paquets vers une machine qui ne dort jamais (comme ça le routeur routera), et cette machine les répercutera sur l'adresse de diffusion pour des MAC connues (via une application spécifique, elle prend la responsabilité que le routeur refuse.)
En regardant un peu sur les pages en anglais du forum, je vois qu'il y a une application nommée [url=https://www.green-it-software.com/wake- ... pberry-pi/]wol-proxy[/code] qui fait ça. Ca n'est probablement pas la seule, et j'en ai vu passer d'autres dont l'interface est une page web. Je ne recommande pas ce logiciel en particulier, je ne m(en suis jamais servi.

Au final, il te faut probablement un proxy, et le Pi est une plateforme toute indiquée pour porter le service.

NB: WoW est utilisé soit pour "wake on wan" soit pour "wake on wireless", prudence sur Google :)

Re: Wale on Lan (Wake on Wan) depuis une carte Raspberry Pi

Posted: Fri Jun 24, 2016 7:48 pm
by nikotinux
un simple script en perl

https://github.com/jpoliv/wakeonlan

activé a distance via ssh par exemple

Re: Wale on Lan (Wake on Wan) depuis une carte Raspberry Pi

Posted: Sat Jun 25, 2016 5:45 am
by totoharibo
packages wakeonlan et gwakeonlan sur le RPi.

Cela ne résout pas les problèmes de routage à travers le ternet : charge à toi de "tailler le chemin" pour les magic packets.

Re: Wale on Lan (Wake on Wan) depuis une carte Raspberry Pi

Posted: Sun Jun 26, 2016 9:49 pm
by jelopo
Bonjour,

Je te propose d'allumer ton PC avec une commande WOL installée et à partir du Raspberry PI.
En plus sur le Raspberry PI tu ajoute un API Web qui est en écoute sur le net via ta box.
Quand cette API Est appelée, elle lance la commande de WOL.
Pour plus de sécurité, tu peux configurer un VPN pour que ton smatphone soit vu en local.

Si tu veux plus d'infos, je peux laisser un bout de tuto.

A+

Re: Wale on Lan (Wake on Wan) depuis une carte Raspberry Pi

Posted: Mon Jun 27, 2016 6:40 pm
by skrytek
Bonjour,

Merci beaucoup pour vos réponses, je n'ai pas encore eu le temps de tester tous cela.
Je pense commencer par tester l'application WOL-Proxy donnée par @epoch1970.
L'idée d'une API Web est pas mal aussi, je veux bien voir le tuto dont tu parles @jelopo histoire de voir un peu plus en détail.

PS : Je m'écarte un peu du sujet (et de la RPi) mais j'ai remarqué que lorsque j’éteins mon PC allumé en WoL il se rallume 5 secondes après (1 fois) et ensuite je peux l’éteindre. Y'a-t-il des gens qui connaissent une solution ?

Merci ;)

Re: Wale on Lan (Wake on Wan) depuis une carte Raspberry Pi

Posted: Tue Jun 28, 2016 8:03 pm
by jelopo
Bonjour,

voici donc un mini tuto :
Installation d'une solution de ''WOL over Internet'' en Python.
Prérequis :
* pip: (installateur de paquet Python)

Code: Select all

sudo apt-get install python-pip
* git:

Code: Select all

sudo apt-get install git
* adresse IP du Raspberry PI statique

Installer pywakeonlan:
Source : https://github.com/remcohaszing/pywakeonlankeonlan

Code: Select all

cd /tmp/
git clone https://github.com/remcohaszing/pywakeonlan.git
cd pywakeonlan
sudo python setup.py install
Tester
*Eteindre le PC

Code: Select all

$ wol 00:11:22:33:44:55
Installer bottle sur le rpi (mini framework web Python)
* Site : http://bottlepy.org/docs/dev/index.html
* Installation :

Code: Select all

$ sudo pip install bottle
Ecrire l'API

Code: Select all

$ vi wol_api.py

Code: Select all

from bottle import route, run, template
from wakeonlan import wol

@route('/wakeonlan/<mac>')
def index(mac):
wol.send_magic_packet(str(mac))
return template('<b>sending WOL to {{mac}}</b>', mac=mac)

run(host='xxx.xxx.xxx.xxx', port=8080)
N.B. : Remplacer xxx.xxx.xxx.xxx par l'adresse IP du Raspberry PI

Tester en local
* Eteindre le PC
* Lancer l'API Python

Code: Select all

python wol_api.py
* Saisir cette url dans un navigateur connecté au réseau local :
http://xxx.xxx.xxx.xxx:8080/wakeonlan/00:11:22:33:44:55

Configurer la box reliée à Internet pour faire du NAT ou redirection de port :

* IP de destination : xxx.xxx.xxx.xxx
* Protocole : TCP
* Port source : 8080
* Port de destination : 8080

Tester à partir d'Internet (hors réseau local)
* Eteindre le PC
* Saisir cette url dans un navigateur connecté au réseau local :
http://yyy.yyy.yyy.yyy:8080/wakeonlan/00:11:22:33:44:55
avec yyy.yyy.yyy.yyy adresse IP WAN de la box.

Sécurité
Il serait bon d'ajouter un peu de sécurité à ce fonctionnement basique.
- passer par un réseau VPN configuré sur la box.
- ajouter un mot de passe à l'API
- passer l'API en SSL ...

Re: Wale on Lan (Wake on Wan) depuis une carte Raspberry Pi

Posted: Tue Aug 29, 2017 5:35 pm
by Eni-RPI
Super tuto mais n'a pas fonctionné pour moi, le script retournait des erreurs.
Je poste ma solution si d'autres passent par ici et ont également des problèmes :

Code: Select all

from bottle import route, run, template
from wakeonlan import send_magic_packet
 
@route('/wakeonlan/<mac>')
def index(mac):
    send_magic_packet(str(mac))
    return template('<b>sending WOL to {{mac}}</b>', mac=mac)
 
run(host='xx.xx.xx.xx', port=8080)
;)