This HowTo should be pretty short and sweet. I searched all over trying to figure out how to get PASV FTP to work behind a NAT router like a Linksys or any similar home networking router. It really isn't that hard just a couple of commands to the configuration file and some port forwarding on the router.

Well let's get started first you need to have ProFTPD installed so in a terminal on the server type the following commands.

Code:
sudo apt-get install proftpd
That will install the two packages you need to run ProFTP. Now we need to edit the configuration file so that the FTP server will work behind NAT. So still in the terminal on the server enter the following command.

Code:
sudo nano /etc/proftpd.conf
That will bring up the configuration file, at the end of the file add the following lines.

Code:
PassivePorts 60000 60100

MasqueradeAddress YourSiteName.com
MasqueradeAddress xxx.xxx.xxx.xxx
The PassivePorts command we entered there allows 100 concurrent connection which should be enough for most home users. Those are the ports we are going to have to forward to the FTP server on the router. Replace the xxx.xxx.xxx.xxx with the routers public IP address you can usually find this on the routers status page or you can simply go to http://www.ipchicken.com/ which will tell you your public IP address.

Still in the terminal on the server we have to restart ProFTPD so that the configuration changes will take effect. Enter the following on the command line.

Code:
sudo /etc/rc.d/init.d/proftpd restart
Now we have to forward the PassivePorts on the router. Login to your router click on the advanced tab then the forwarding tab. Enter in the port range we specified in the configuration file then check the TCP box UDP does not need to be enabled then enter the IP address of the FTP server and click enable. Click the "Apply button and your done on the router. Note if you are using a different brand router the process should be similar this is the setup on a Linksys router.

That should do it your FTP server should work behind your NAT router. There is one drawback to this if you have a dynamic IP address from your ISP you will need to update the address in your configuration file whenever it changes.