I just spent several hours getting port forwarding working with my D-Link DI-624 (confirmed with the port forwarding tool OrleansKnight posted) and I thought I'd share what I've learned. Note that I haven't seen much in-game benefit: it seems like people can connect to me better, but my Pantheon/Skirmish games still have the one obligatory guy who can't connect to *anyone*, or we get a full set of people who can all connect and the game doesn't start.
But at least I can't blame my router any more
. Also, this discussion assumes the 20 ports that Impulse Reactor recommends is correct. I've seen suggestions that we actually need 200 ... good luck with that, since you can't forward ranges and the router stopped letting me forward ports once I had forwarded about 30.
First: the right thing to do is to use the "virtual server" section of the "advanced" tab. Each entry here will forward a single port, so you'll need 20 entries. I used "Demigod 6002", "Demigod 6003", etc, through "Demigod 6022". Select UDP as the protocol type and enter the same port number as the public and private port, enter the IP address as usual, etc.
That's the easy stuff. Here's what it took me an hour to figure out:
If you still can't get your ports forwarded, look at the Firewall tab. Virtual Server will automatically create firewall rules to allow packets on the ports you just selected, which is fine, but I had some of the same ports listed in a firewall ALLOW rule from an earlier attempt at configuring the router, and I had them set to go to a different IP address than the one I run Demigod on. Unlike every other ACL I've ever used, "ALLOW" in this case apparently means "Disallow packets that don't match this rule", so I couldn't forward any Demigod-related ports until I removed that extra rule. Do not mess around with the Firewall tab -- or if you do, clean up your mess before you try to get port forwarding working!