====== 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 =====
**[[http://code.google.com/p/android-xbmcremote/|XBMC Remote for Android]]** è un applicativo per Android che consente di controllare da remoto un host su cui gira [[..:tux:xbmc]].
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 **[[http://code.google.com/p/android-xbmcremote/issues/detail?id=387|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 [[http://www.wolcenter.com/faq.php|Wake On Lan Center]].