I have vsftpd version 3.0.2 installed on an up-to-date Arch Linux system. I can access and use the server successfully over my local network, but it does not work over the Internet: After logging in, the server sends its local IP address when responding to the client's request to enter passive mode. This renders the server useless outside of the local network, as the client refuses to send commands to the invalid IP address. (See output from FileZilla below)
I researched the problem and found that I can specify in vsftpd's configuration file which address to send when using passive mode (click here for research). I added the pasv_address
line to my /etc/vsftpd.conf, along with specifying the minimum and maximum passive ports, and configured my router accordingly.
After using systemctl
to restart vsftpd, none of the configuration changes took effect. I then tried rebooting the entire system and got the same result. I tested some of the other settings in /etc/vsftpd.conf
and found that none of them took effect, either. It seems to me that vsftpd is disregarding changes made to /etc/vsftpd.conf
.
I have found numerous websites that state that vsftpd's configuration file is /etc/vsftpd.conf, but that it can use a different one if specified on the command line. I have examined my system to the best of my ability but cannot find a reference to a different config file being used.
Does anybody know how I would be able to make these configuration changes to vsftpd? Assume that I am using the default settings unless I have specified otherwise. Thanks in advance for your help.
Attempted connection to my FTP server over the Internet after modifying /etc/vsftpd.conf:
Status: Connecting to 71.###.###.###:21...
Status: Connection established, waiting for welcome message...
Response: 220 server-name FTP server (GNU inetutils 1.9.2) ready.
Command: USER user
Response: 331 Password required for user.
Command: PASS ******
Response: 230 User user logged in.
Command: SYST
Response: 215 UNIX Type: L8 Version: Linux 3.17.6-1-ARCH
Status: Server does not support non-ASCII characters.
Status: Connected
Status: Retrieving directory listing...
Command: PWD
Response: 257 "/home/user" is current directory.
Command: TYPE I
Response: 200 Type set to I.
Command: PASV
Response: 227 Entering Passive Mode (192,168,0,16,221,70)
Status: Server sent passive reply with unroutable address. Using server address instead.
Command: LIST
Error: Connection timed out
Error: Failed to retrieve directory listing
I have not found a solution to this vsftpd problem, but in the absence of an answer I explored some other FTP daemon options. I am currently using bftpd, which I was able to configure to send the appropriate address to clients. This has fixed my lack of a working FTP server, so for now I will accept this as the answer, though I would still be interested in learning how to fix the vsftpd problem if anybody knows how to do so.
1 March 2015 EDIT: I just reinstalled vsftpd and found that my problem was a rather embarrassing case of user error: Instead of loading the vsftpd service in systemd, I loaded a generic ftpd service, which of course would not respond to changes to vsftpd's config file. Vsftpd is up and running, and sending the appropriate IP address to clients.