I had the same problems as most of us have about getting WOL to work.
I have read loads of topics about this but none seem to work until i ran in to this post that brought me on an idea to try out.
http://forums.dlink.com/index.php?topic=4046.msg22998#msg22998
I have done several things.
For some lame security reason i don't use /24 subnet but just enough to give all my devices (and some more) an IP.
This is what i use(d):
10.0.0.1 255.255.255.240 host range starts at 1 -14 (actually 2-14) broadcast is .15
I did all the things suggested like playing around with java code to get .255 added as broadcast, making subnet smaller so i could use broadcast, adding the real IP of the host i wanted to wake up. None did work.
But after reading that topic i played stupid and added (again) a rule, this time a server rule like this.
name Wake-On-Lan
public port 9
private port 9
and here comes the solution
IP address 0.0.0.0 (it didn't give an error as expected)
I tested it and it seems to work so far here.
I can see the packet arive on the host machine given with a WOL sniffer.
So for me this ****ty problem is solved after a long time.
I would suggest others to try it.
Device i'm using is a DIR-825 Hardware Version: B1 Firmware Version: 2.01EU