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

routerwake-on-lan

I have a perfectly running TP-WR741ND router with its native firmware (probably not so important, but here it is: 3.12.4 Build 100910 Rel.57694n).

The router is connected directly to LAN PCs (192.168.0.0/24 network). I can manage the router from my office (i.e. from the Internet). I want to be able to wake up my home PC from the office.

I'm able to send a WoL packet ("magic packet", UDP port 9) from my office's PC to my router. I can set my router to resend it to a LAN address (Forwarding > Virtual Servers) and on a running target PC I can see that the "magic packet" arrives to it (I've inspected network traffic to be sure). The problem is that I cannot provide a 192.168.0.255 address when forwarding. I get:

Error code: 26106 The IP address is not in the same subnet with LAN IP address.

Is it possible to make the router send normally the magic packet to the network broadcast address *.255 ? If yes, how it could be done?

Best Answer

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.

Related Question