I use the server
pure-ftpd with Linux, and
CesarFTP with Windows.
Adding a user :
pure-pw useradd ftpusername -d /home/ftp/user -u linuxusername pure-pw mkdb
There are two modes in the FTP protocol : active, and passive. In the active mode, the client connect to the server on port 21, and when the client wants to download a file, it gives to the server its IP address and a random port to connect to. But when the client is behind a firewall or NAT, the incoming connection will fail. That's why the passive mode exists : the client still connects to the server on port 21, but it is the server that sends its IP address and a random port so that the client can connect to the server. Now it will work if the client is behind NAT, but will fail if the server is behind NAT. There is not only a problem with the incoming connection port, but also with the address given by the server (its local address which is not reachable for the client).
But there is a solution : you can configure your FTP server to use a limited port range for passive connections, forward this port range to your server in your NAT configuration, and tell the server to use the address of its gateway instead of its.
pure-ftpd, add the configuration parameters :
-p 60000:61000 -P mydns.dyndns.org
And of course forward the 60000:61000 port range to the machine with your server in the NAT configuration.
Samba is also known as “Windows shares”.
With Linux, when you install the samba server, be sure to enable the SWAT interface (eg
swat USE flag with Gentoo). It will allow you to configure your server with a web interface, by connecting to localhost on the port 901.
First create users in the
Password section, and then create your shares in the
Don't forget to change the
available option to
yes, because it is
false by default and it will disable your share !