On sait donc quel est le problème. A priori, cela n'a pas de solution facile.
En effet, une machine en attente d'être réveillée par du WoL doit recevoir une trame Ethernet avec un certain nombre de données. Que la trame soit envoyée en générant un paquet IP, IPv6, NetBEUI ou autre n'a aucune d'importance.
Or, cette trame Ethernet est envoyée de deux manières possibles : directement à l'attention de l'adresse Ethernet / MAC de la machine (on parle alors de unicast) ou à l'attention de toutes les machines sur le réseau local en utilisant l'adresse Ethernet / MAC de valeur FF:FF:FF:FF:FF:FF (on parle alors de broadcast). Il existe aussi multicast mais je n'en parlerais pas ici.
Et, quand ton routeur relaie le paquet IP/UDP envoyé par ton téléphone à destination de l'adresse IP de ton PC éteint, il utilise le protocole ARP pour demander à ton PC éteint quelle est son adresse Ethernet / MAC.
Le PC étant éteint, il ne répond pas et le routeur ne peut connaître l'adresse Ethernet à laquelle envoyer le paquet. Le routeur n'envoie donc pas le paquet.
Cela marche brièvement après extinction du PC car le protocole ARP a un cache, d'une durée que l'on peut estimer entre 30 secondes et une minute.
Les solutions possibles :
- ajouter une entrée statique dans la table ARP du routeur pour associer en permanence l'adresse IP de la machine à éteindre et son adresse Ethernet / MAC. Tous les routeurs / les box n'ont pas cette fonction.
- envoyer / relayer le paquet à l'adresse IP de broadcast telle que 192.168.1.255. La freebox propose cette fonction.
- avoir sur ton réseau un mini ordi type raspberry pi qui relaie le paquet de WoL comme ci-dessus.