How to perform "Wake-on-Lan" from TP-WR741N (or similar) to LAN

A Wake on LAN packet is usually targetted at a specific MAC. The problem with doing this remotely is that you can't target a MAC address from a non-local network.

Normally, when a packet is destined for an IP address, the router on the same network as the device being targetted will say "Who has IP address x.x.x.x", and the device that owns the address replies "It is me, send it to mac address xx:xx:xx:xx:xx:xx". This is an arp request. Once answered, the router will forward the packet to the mac address.

The problem with forwarding a packet to a machine that is off is that it cannot respond to the arp address. However, if you use the ARP binding feature of the router, you can say IP address x.x.x.x is mac address xx:xx:xx:xx:xx:xx and so the router doesn't need to do an ARP request - it already knows the mac address for the IP address, it has it in its ARP binding table.

So you need to do three things:

  1. Issue the PC you want to WOL a static address (this is still best done by dhcp)
  2. Find out the mac address of the PC and set up an ARP Binding entry with the MAC and the static IP you selected
  3. Set up a port forwarding rule for udp/9 to the static IP address

So the WOL packet would be targetted at the public IP address of the router, and natted to the internal address. The router would then see it has a MAC address stored in its ARP binding table, and so forward the packet to the MAC address (even though the machine is off) without attempting an ARP request.

The WOL feature will see the packet arrive on its network card, with the correct MAC and turn on the PC.