I can't talk about packets being forwarded through a router as I have a direct connection to the web. Also, I use Gnutella, not FT or MLDonkey so the specifics will be different for those protocols, you'll need to use Google. I can tell you that these Firewall rules work for me
#!/bin/bash
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 17921 -j ACCEPT
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
The main one is "iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT" - this allows anything through that is related to any packet that was sent from this machine. That one rule does most of the work, however, no-one would be able to download from me without the rule "iptables -A INPUT -p tcp --dport 25611 -j ACCEPT" this opens a port that I can set Gtk-Gnutella to listen to. That way people can send requests for the files I share.
A quick look at Google found this which may be more relevent to
MLDonkey through a router