FTP has 2 settings.
Standard requires a return port opening. 1 for commands, 1 for data. So you already started your outbound command session. Now it need to send data (such as directory listings back), and that involved the server opening up a new conneciton to the client.
In the case of NAT, there is supposed to be a transparent proxy in the firewall that recognizes the return channel open attempt, maps it as needed to the correct session.
But if you are using a non-standard port to start off with, I doubt the proxy recognizes it needs to be invoked.
Try the PASV setting, (ie: "passive"). This tells the server to not try to open a return channel, but to send the data in the current session. It loses a bit of control functionality, but most people (99.9999%) will never need it.