Wake-on-LAN voor de homeserver

nerd alertMijn homeserver hoeft niet altijd aan te staan, maar alleen als ik hem nodig heb. Moet ik dan eerst naar huis bellen om te vragen of ze de computer aanzetten? Nee, aanzetten kan hij zichzelf: dat heet Wake-on-LAN.

Stap 1: BIOS

De eerste stap is WoL aanzetten in de BIOS van de homeserver. Ik gebruik WoL op de Shuttle PC en hier zie je de instellingen:

BIOS instelling voor Wake-on-LAN
BIOS instelling voor Wake-on-LAN

Stap 2: Magic Packet

De computer zal vanaf nu vanzelf inschakelen, als hij via de netwerkpoort een Magic Packet ontvangt. Dat is een packet waar z’n eigen MAC adres in staat. Uiteindelijk vond ik de gemakkelijkste oplossing om dat Magic Packet te versturen, door het de FRITZ!Box te laten doen. Dat doe je met een instelling die te vinden is in het menu Home Network Overview:

FRITZ!Box verstuurt Magic Packet
FRITZ!Box verstuurt Magic Packet

Dit werkt natuurlijk alleen goed, als de FRITZ!Box het apparaat al een keer gezien heeft en daardoor het MAC adres van het apparaat kent. Met de knop Start Computer kan je controleren of het werkt.

Als het voorgaande goed geconfigureerd is, dan zal de computer netjes uit stand-by komen, als hij benaderd wordt vanaf internet. Via het lokale IP adres van de computer werkt het dus niet, je zult de computer moeten benaderen via je publieke internetadres en dus ook een port-forwarding regel die je daarvoor hebt ingesteld. Gebruik bijvoorbeeld een port-forwarding naar poort 22, zodat je de computer via SSH kunt benaderen.

Stap 3: en weer uit

Als je de computer gebruikt hebt en je bent weer uitgelogd, dan mag de computer weer in de stand-by stand. Het liefst automatisch, maar niet zolang ik nog ingelogd ben. Om dat te bereiken, draai ik op de homeserver het script dat je hieronder ziet. Dit script controleert regelmatig (om de 5 minuten) of er nog iemand ingelogd is en als iedereen uitgelogd is, zet het script de computer in stand-by.

Dit script werkt voor alle oplossingen waarbij je op Unix-niveau moet inloggen op de machine om een applicatie te gebruiken, bijvoorbeeld voor No-machine en voor SSH, maar ook als je SSH gebruikt voor het opzetten van een tunnel, of als je een tmux sessie hebt draaien.

Om het script automatisch te draaien, heb ik deze entry in sudo crontab -e gemaakt:

*/5 * * * * /usr/local/sbin/powercron.sh

En dit is de inhoud van het bestand /usr/local/sbin/powercron.sh :

#!/bin/bash

# Zet de machine op 'suspend' als niemand is ingelogd

logfile=/home/root/$(date +\%C\%y-\%m-\%d).log
suspend=/usr/sbin/pm-suspend

# Koptekst in de logfile
echo >>$logfile
/usr/bin/uptime >>$logfile

# Controleer of iemand is ingelogd
#last -i -F | grep 'still logged in' >>$logfile
who -q | grep 'users=[^0]'
if [ $? -eq 0 ] ; then
 who >>$logfile
 echo Er is nog iemand ingelogd
 exit
fi

# Wacht een minuut voor het geval iemand net bezig is met inloggen
echo Misschien is er iemand bezig met inloggen?
sleep 60

# Controleer de tweede keer
#last -i -F | grep 'still logged in' >>$logfile
who -q | grep 'users=[^0]'
if [ $? -eq 0 ] ; then
 who >>$logfile
 echo Intussen is iemand ingelogd >>$logfile
 exit
fi

echo Iedereen is uitgelogd
echo $suspend >>$logfile
sleep 2
$suspend

NB: als je dit script copy-paste, vervang daarna dan » door >> .

Er zijn 3 commando’s waarmee je kunt opvragen wie er momenteel ingelogd is: w, who en last. Het nadeel van last is, dat deze bij elke maandovergang zijn lijst van ingelogde gebruikers een keer verliest, vandaar dat je ziet dat ik last door who heb vervangen.

Een gedachte over “Wake-on-LAN voor de homeserver

  1. Voor wake-on-LAN moet in de BIOS de instelling “Wake-Up by PCI card” op Enabled staan, ook als je de netwerkaansluiting op het moederbord gebruikt. Om de computer zichzelf in slaap te kunnen laten zetten, moet je (op datzelfde scherm) de instelling S1+S3 sleep activeren.

Vertel jouw mening

Vul je gegevens in of klik op een icoon om in te loggen.

WordPress.com logo

Je reageert onder je WordPress.com account. Log uit / Bijwerken )

Twitter-afbeelding

Je reageert onder je Twitter account. Log uit / Bijwerken )

Facebook foto

Je reageert onder je Facebook account. Log uit / Bijwerken )

Google+ photo

Je reageert onder je Google+ account. Log uit / Bijwerken )

Verbinden met %s