User Tools

Site Tools


doc:appunti:linux:sa:wakeonlan

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.

doc/appunti/linux/sa/wakeonlan.txt · Last modified: 2017/12/27 08:26 by niccolo