I'm having a similar issue. If I set my FTP client host value to be the internal IP, it all works perfectly. When I attempt to connect from outside, I get as far as authenticating, the FTP client reports server settings (number of allowed users, timeout, etc) but then issues command MLSD and times out reporting that file listing could not be retrieved.
Any ideas?