Table of Contents
Wake on LAN con Linux
Sulla macchina da svegliare
- Se si tratta di scheda LAN aggiuntiva, collegarla con il cavetto apposito alla scheda madre.
- Attivare da BIOS la funzione Wake on PCI device o simile.
- Avviare la macchina, eseguire
ethtool -s eth0 wol g
, questo abilita il wake alla ricezione del MagicPacket. - Prendere nota del MAC address e fare shutdown della macchina.
Su un'altra macchina
- Eseguire
etherwake 00:0D:87:44:B2:0A
.
ethtool automatico al boot
Con Debian vi sono almeno due modi per eseguire ethtool al bootstrap della macchina. Il sistema più tradizionale è utilizzare l'opzione up di /etc/network/interfaces, che esegue automaticamente un comando quando l'interfaccia viene abilitata:
iface eth0 inet static address 192.168.1..39 netmask 255.255.255.0 up /sbin/ethtool -s eth0 wol g || true
Con versioni recenti del pacchetto ethtool vi è uno script che gestisce in automatico l'opzione, semplicemnte aggiungendo ethernet-wol nelle opzioni dell'interfaccia:
iface eth0 inet dhcp ethernet-wol g
XBMC Remote
XBMC Remote for Android è un applicativo per Android che consente di controllare da remoto un host su cui gira XBMC Media Center.
Integra una funzione di Wake-on-LAN, tuttavia il pacchetto UDP viene inviato all'indirizzo broadcast 255.255.255.255, quindi non è possibile instradarlo ad una sottorete diversa, ad esempio nel caso in cui il terminale Android sia su una rete WiFi 192.168.10.x e XBMC sia invece su 192.168.3.x.
Vedere il bug 387.
Wake-on-LAN proxy
Problema: Il pacchetto Wake-on-LAN viene inviato da un terminale Android che sta su un segmento di rete WiFi 192.168.10.0/24, mentre il destinatario sta su un segmento di rete cablata 192.168.3.0/24. Se il magick packet W-o-L viene inviato come pacchetto di broadcast (192.168.10.255 oppure 255.255.255.255), non oltrepassa il segmento di rete WiFi e quindi non raggiunge la destinazione.
Soluzione: Occorre un programma Wake-on-LAN che consenta di specificare un indirizzo di destinazione unicast. Ad esempio Wake On Lan per Android, oppure wakeonlan
per GNU/Linux. Quindi bisogna configurare un W-o-L proxy sullo stesso segmento di rete del ricevente, che riceva il pacchetto e lo inoltri all'indirizzo broadcast.
Supponiamo di avere una GNU/Linux box all'indirizzo 192.168.3.1, per trasformarla in W-o-L proxy è sufficiente eseguire le istruzioni:
ip neigh change 192.168.3.254 lladdr ff:ff:ff:ff:ff:ff nud permanent dev eth0 ip neigh add 192.168.3.254 lladdr ff:ff:ff:ff:ff:ff nud permanent dev eth0 iptables -t nat -A PREROUTING --protocol udp --dport 9 -j DNAT --to-destination 192.168.3.254
dove:
- eth0 è la scheda di rete su cui deve essere inoltrato il pacchetto
- 192.168.3.254 è un indirizzo IP libero, che viene usato solo per il broadcast. Infatti viene associato in modo manuale e permanente al MAC address ff:ff:ff:ff:ff:ff.
- La regola
iptables
esegue il forward del magick packet (protocollo UDP, porta 9) dall'indirizzo unicast del proxy al broadcast della rete.
In questo modo sarà sufficiente indirizzare il magick packet verso il proxy (192.168.3.1) indicando però il MAC address effettivo dell'host da risvegliare.
Vedere la pagina Wake On Lan Center.