My problem was that my modem also functions as a router. None of these guides here worked for me because they all assume that a person is using a regular modem with no settings to configure.
If your modem has these settings (Ones that you can access with your web browser) try connecting your server pc directly to the modem and open the ports.
My hosts file only contains 4 lines....
127.0.0.1 localhost
servers lan ip mydns
modem ip mydns
internet ip mydns
... and has worked this way for 3 months.
It took me a while to figure out what the problem was. I was running a double NAT so I had to do a couple things...
1 I set my modem to assign DHCP and then set my router to NOT assign DHCP.
2 I had to make sure my router was on the same internal ip range as my modem for example my modems ip is 192.168.1.1 so I set my routers ip to 192.168.1.2 and NOT 192.168.0.2
... not sure if your setup is like mine but maybe this will help.