Home - MadWizardDE/ARPergefactor GitHub Wiki
Welcome to the home of the ARPergefactor. This software aims to be the most versatile and easy to use implementation of a Sleep Proxy. Unlike other solutions, this one does not enforce the use of mDNS, having each server you want to be woken up to register itself with the Sleep Proxy, which often requires to install additional software or configure them individually. Instead ARPergefactor offers you, to describe the wake-on-demand behavior in a single configuration file, for your entire network.
For most IT professionals it should be easier and more comprehensible to look at an example configuration, than to read pages of documentation, to get a notion about what the application does. This configuration tries to use as many of the available options, except for some of the less frequently used options:
<?xml version="1.0" encoding="UTF-8"?>
<ExpergefactorConfig version="2" scope="network">
<Network interface="eth0" autoDetect="Router|IPv4|IPv6" autoLatency="1h" pingTimeout="100ms" wakeForward="true">
<Router name="fritz.box" MAC="7D:14:43:08:67:B8" vpnTimeout="250ms"
allowWake="false" allowWakeByProxy="true">
<VPNCLient name="VPN IPsec" IPv4="192.168.178.201" />
<VPNCLient name="VPN WireGuard" IPv4="192.168.178.203" IPv6="fd82:8399:f690::203" />
</Router>
<!-- don't allow your Hue Bridge to wake any device -->
<HostFilterRule name="Hue Bridge" IPv4="192.168.178.33" />
<WatchHost name="morpheus" MAC="7D:14:43:08:67:B8" poseTimeout="5s" > <!-- impersonate FOR 5 seconds -->
<!-- advertise service and wake on SSF/SFTP access-->
<Service name="SSH" serviceName="sftp-ssh" port="22" />
<!-- only wake on file sharing access -->
<ServiceFilterRule name="SMB" port="445" type="Must" />
<!-- use short notation for type="Must" rules, extend filter to UDP traffic -->
<ServiceFilterRule name="RDP" protocol="TCP|UDP" port="3389" must />
<!-- accessing "ghost" via SSH will wake "morpheus" -->
<VirtualHost name="ghost" MAC="00:15:5D:3B:01:00">
<!-- exclude "link" from waking "ghost" on SSH access -->
<HostFilterRule name="link" type="MustNot" />
<ServiceFilterRule name="SSH" protocol="TCP" port="22" must />
</VirtualHost>
<VirtualHost name="gitlab" MAC="00:15:5D:3B:01:05">
<!-- HTTP requests must come from that public IP -->
<HostFilterRule name="example.com" IPv4="3.104.45.104">
<HTTPFilterRule port="8080" type="Must" >
<!-- hopefully additional request filters in later versions -->
</HTTPFilterRule>
</HostFilterRule>
</VirtualHost>
</WatchHost>
<WatchHost name="trinity" MAC="B7:F8:D6:43:95:4E" poseLatency="1min"> <!-- impersonate AFTER 1 minute -->
<ServiceFilterRule name="Sunshine" port="12345" must /> <!-- wake on game streaming access -->
</WatchHost>
<!-- resolve neo's IPs with a different hostname -->
<WatchHost name="neo" hostname="thomas-anderson" MAC="06:A4:3B:23:71:C3">
<HostFilterRule name="trinity" must /> <!-- neo can only woken by trinity, regardless of the accessed service -->
</WatchHost>
<!-- used for reference in filters -->
<Host name="link" IPv4="192.168.178.5" /> <!-- IPv4 is optional, if available via DNS -->
</Network>
</ExpergefactorConfig>
The basic idea is, that you configure all your on-demand devices as WatchHost
in a configuration file. If they suspend, ARPergefactor will notice this and try to wake them up with a Magic Packet on the next access – but only if the accessed service matches the configured filters (if any). ARPergefactor itself can run in network
mode on an always-on device, like a Raspberry PI, or used with host
mode on your client machine, from which you want to access a sleeping host (see Scope).
To get a hold on the requested services, the software applies a variety of temporary address spoofing techniques, which are mostly harmless, but can be irritating to network administrators and routers. If you need it, you can have full IPv6 support, which will usually need the host's IPs to be automatically detectable via DNS or some other address authority in your network.
If you happen to use virtual machines and want these to be woken up on network access, like any physical device, ARPergefactor can be instructed to redirect the WakeOnLAN requests to the physical host instead. If you need a way to start these virtual machines on demand, you can try out my other project, 🌙 Insomnia (only supports HyperV machines at the moment).
This guide will have you set up and running ARPergefactor in no time, so you can see the software in action.
Here you will find a step-by-step guide on how to build a configuration file from scratch, as well as an explanation of the most common options.
If anything does not work as expected, you can find help with common issues here.
Here you can find a full reference of all configuration options.
For ARPergefactor to truly become a one-stop solution for waking up sleeping network devices, several new features will be added in the upcoming versions:
- Implementation of
HTTPFilterRule
s, to inspect HTTP headers, before waking up a web server (experimental) - Implementation of the
_sleep-proxy._udp
protocol, in order to:- advertise services of your servers via mDNS
- have compatibility with Apple's native Bonjour Sleep Proxy clients
- have compatibility with SleepProxyClient
- Support for (mostly proprietary interfaces) of common used routers, to automatically gather further information like MAC addresses and VPN devices
- FRITZ!Box (uses TR-064)