I think lord-fu was pointing to your firewall/router being the cause of the problem as you do not experience this on internal network (not going via firewall) but do from outside the network (running via firewall).
There is a detailed description about Active and Passive FTP through Linksys firewalls here:
The FTP protocol uses two channels, a control channel and a data channel. Which port the data channel runs on depends on whether you are using Active or Passive FTP. From what you have said it appears the control channel is working (you get login) but not the data channel (ls command fails). This could be due to:
1. NAT on firewall causing data channel to fail.
2. Data port being blocked or not forwarded on firewall.
3. FTP client set to use Active rather than passive transfers.
how you resolve this depends on what your firewall, FTP server and connecting clients support. The link above explains theory, from there you should be able to decide what is best in your situation.
You may also want to look on the Linksys site to see if there is info on there how to setup FTP access on their routers/firewallls.