web-dev-qa-db-fra.com

wakeonlan de l'hôte distant

J'ai configuré wake on lan service sur mon serveur. Tout fonctionne bien sur le réseau local:

root@server$: poweroff
user@local$ wakeonlan AA:BB:CC:DD:EE:FF

et le serveur se réveille.

AA:BB:CC:DD:EE:FF est une adresse MAC de mon server, qui a l'IP 192.168.1.2 et nom d'hôte: example.com. Il est connecté au routeur, qui a l'IP 192.168.1.1 (public: xxx.xxx.xxx.xxx)

Lorsque le serveur est en place, je peux cingler:

ping example.com

ou connectez-vous via ssh:

ssh [email protected]

Jusqu'ici tout va bien. Maintenant, je peux réveiller le serveur de la zone locale, mais comment réveiller le serveur de l'emplacement distant?

J'ai essayé: user@local$ wakeonlan -i xxx.xxx.xxx.xxx AA:BB:CC:DD:EE:FF, mais ça ne marche pas (rien ne se passe;).

Dois-je configurer mon routeur d'une manière ou d'une autre pour transférer des paquets magiques? Comment?

La solution

Après réponse de Ragnar la solution semblait très facile.

Mais en fait, c'était un peu délicat.

Mon routeur est Linksys WAG200g, qui ne prend pas en charge Wake on LAN par défaut. De plus, il ne permet pas de transmettre aux triplets au-dessus de 254 (mon adresse de diffusion était 192.168.1.255).

La solution était de transférer le port UDP 7 à l'adresse du serveur, qui était 192.169.1.2, puis appelez:

wakeonlan -i example.com -p 7 AA:BB:CC:DD:EE:FF

J'ai également installé un nouveau firmware:

ce qui est une excellente mise à niveau des options de routeur (par exemple, ajoute l'option Wake on LAN).

J'ai également changé mon masque de réseau de 255.255.255.0 à 255.255.255.128, donc ma diffusion est maintenant 192.168.1.127 et passe les règles de validation du routeur.

Voici le script que j'utilise pour me connecter à la machine et le réveiller si nécessaire:

#!/bin/bash
## This sends magic packets to Wake on Lan
## please note, you must formard port 7 to the target machine on your router

## Host to wake up
Host="example.com"
## mac address of the machive to wake up
mac="AA:BB:CC:DD:EE:FF"
## user to login
user="administrator"

echo "Looking for $Host..."
wget -q --tries=2 --wait=1 --waitretry=5 http://$Host/
if [ $? -ne 0 ];
then
    echo "$Host is not available."
    echo "Waking up $Host."
    wakeonlan -p 7 -i $Host $mac
    echo "$Host is booting up.  Please wait..."
    sleep 30
    wget -q --waitretry=5 --wait=5 http://$Host/
    echo ^G
    echo $Host is up! Lucky you!
fi
ssh "$user@$Host"

N'oubliez pas d'installer: wakeonlan

2
takeshin

Vous devez transmettre le port UDP 9 à l'adresse de diffusion de votre réseau (192.168.1.255, ou similaire).

2
Ragnar123