If you have a computer on your local network you want to wake from the Internet and you have a TP-Link router (in this case a TL-WDR4300) you are in luck.

First, create a virtual server (or port forwarding) in which we forward an arbitrary port to port 9 at the IP address of the machine you wish to turn on (Go to Forwarding → Add New):

Add virtual server

If you test as this point, it will work. But at a later point it will not. This is because the MAC address of the machine you wish wake will be flushed from the router’s ARP table.

The way to fix this is a bit illogical but it works. With the machine in questioned turned on, go to IP & MAC binding → ARP List, find the entry you need and click “Load”

Add ARP bind

Now, go to IP & MAC binding → Binding settings and tick of “Bind” for the entry of your machine (also make sure ARP binding is enabled) and then press save.

Create binding

You should now be able to wake your machine from anywhere in the world, using an online service or a client on your smartphone.

Wake on LAN from phone

I am aware of the potential problems of allowing this kind of traffic into my local network but since a malicious person would need to know both the external port and MAC address of the internal machine and is only able to start up my machine, I’m not too worried. If you worry, add a password to your wake on lan configuration.