Actually it is possible to have the DG834G perform port redirection. However this is not available through the built in web administration interface. You have to perform this using a telnet session. For the rest of the discussion, I assume your private network is on the range 192.168.0.1 to 192.168.0.255 and the interface from the router to the internet is named ppp0 (more on this later).
First you must enable telnet on your router. In order to do so you must use the following URL in your browser :
http://192.168.0.1/setup.cgi?todo=debug
Next, using a telnet session you connect to your router : telnet 192.168.0.1
You should assert the name of the internet side interface using the command : ifconfig -a
The interface of interest is the one with your public IP address.
Now comes the magic, thanks to iptables allowing for NAT (Network Address Translation). Numerous web pages details iptables. One of my favourite is at :
http://www.linif.org/~joeg/iptables/iptc.html#SESSION_3
First I suggest you create a new rules chain for your redirection. I used the following command : iptables -N MyRules
Next you can add as many rules as you which in your new chain. For example : iptables -A -i ppp0 -p tcp -m tcp --dport 100 -j DNAT --to-destination 192.168.0.87:101
This rule tells that any TCP packet coming from interface ppp0 and targeting port 100 is to be translated so as to be forwarded to port 101 on machine 192.168.0.87
Next you have to trigger this rule. I did so by inserting it in the PREROUTING chain of the translation table, using the command :
iptables -t nat -I PREROUTING 5 -i ppp0 -j MyRules
You will have to consider whether position 5 is accurate for you. In order to do so, you must list all NAT chains using the following command : iptables -t nat -L -v and figure out what each rule performs. Inserting your custom rules in first position would certainly do the case albeit opening breaches in your network defense perimeter. On the other end, appending your custom rule set at end of the PREROUTING chain would almost certainly fail because previous rules may have dropped the packets before they get a chance to reach your translation rule.
May this help