Today, I was trying to ftp from Ubuntu on a VirtualBox to the outside world and was failing miserably. After poking around for a while and digging through passive and active ftp, I figured out why my ftp was not working. By default, ftp works in active mode(I have not verified this with the RFC) and my virtual machine is configured to use NAT for networking. NAT is not smart enough to figure out active mode ftp transactions due to ip rewriting. Turning on the passive mode solved the issue.

Some links for better understanding:
1. Nat and port forwarding.
2. Difference between active and passive ftp.