On 20/08/2009, at 9:41 PM, Richard Toohey wrote:

Hi, all.  Hopefully this is the right list; apologies if not.

Wondering if anyone else has seen this or if something peculiar to my set-up.

Server is i386 FreeBSD 7.2, ports upgraded with portmaster.

vsftpd upgraded from 2.0.5 (or .6) to 2.1.0 no problems.

Upgraded to 2.2.0 and ftp clients have started to fail - first noticed on Windows/Internet Explorer, but also OpenBSD/Firefox 3.0.x.

If I try a command line line, no such issues (from the logs, the command line clients are using EPSV.)

Firefox 3.5 on Mac gives me 500 OOPS: priv_sock_get_cmd

Google gave me this: http://www.mail-archive.com/debian-bugs- d...@lists.debian.org/msg673507.html

I crank up the logging with log_ftp_protocol=YES and I see the same behaviour as reported to the Debian list:

Thu Aug 20 21:10:04 2009 [pid 73929] FTP command: Client "XXX. 72.27.XXX", "USER xxxxxxx" Thu Aug 20 21:10:04 2009 [pid 73929] [xxxxxxx] FTP response: Client "XXX.72.27.XXX", "331 Please specify the password." Thu Aug 20 21:10:04 2009 [pid 73929] [xxxxxxx] FTP command: Client "XXX.72.27.XXX", "PASS <password>" Thu Aug 20 21:10:04 2009 [pid 73928] [xxxxxxx] OK LOGIN: Client "XXX.72.27.XXX" Thu Aug 20 21:10:04 2009 [pid 73933] [xxxxxxx] FTP response: Client "XXX.72.27.XXX", "230 Login successful." Thu Aug 20 21:10:04 2009 [pid 73933] [xxxxxxx] FTP command: Client "XXX.72.27.XXX", "SYST" Thu Aug 20 21:10:04 2009 [pid 73933] [xxxxxxx] FTP response: Client "XXX.72.27.XXX", "215 UNIX Type: L8" Thu Aug 20 21:10:04 2009 [pid 73933] [xxxxxxx] FTP command: Client "XXX.72.27.XXX", "PWD" Thu Aug 20 21:10:04 2009 [pid 73933] [xxxxxxx] FTP response: Client "XXX.72.27.XXX", "257 "/usr/home/xxxxxxx"" Thu Aug 20 21:10:04 2009 [pid 73933] [xxxxxxx] FTP command: Client "XXX.72.27.XXX", "TYPE I" Thu Aug 20 21:10:04 2009 [pid 73933] [xxxxxxx] FTP response: Client "XXX.72.27.XXX", "200 Switching to Binary mode." Thu Aug 20 21:10:04 2009 [pid 73933] [xxxxxxx] FTP command: Client "XXX.72.27.XXX", "PASV"

... and the log ends there (if I use an FTP command line client, there's an EPSV rather than a PASV, and things continue.)

I've gone back to 2.1.0 in the meantime.

Any advice, cluesticks, etc., welcomed. I appreciate there may be a lot more information required, but a "yes, seen this" or a "no, all good here, it's something else in your configuration" will help a lot at this point.

Thanks.

If anyone follows this trail, here's where I've got to:

I *am* seeing the same problem as the Debian report above - the real issue is pasv_address not just PASV.

The following work I did against the 2.2.0 source downloaded from the vsftpd site (seems identical to the FreeBSD port for the chunk I'm looking at, but obviously worth mentioning.)

My /usr/local/etc/vsftpd.conf (*not* all the settings from there, just a selection that might be different from defaults)

anonymous_enable=NO
local_enable=YES
background=YES
listen=YES
pasv_min_port=17000
pasv_max_port=18000
pasv_address=22.33.44.55
use_localtime=YES
log_ftp_protocol=YES

If I take out pasv_address, it will work (but clients that check the server response will not work because the returned IP does not match the one they connected to, which I think is the point of pasv_address.)

I tried using a domain name, and the pasv_addr_resolve option, no difference.

The following fudge makes things go (I am *not* suggesting this is a good idea, just hoping that it might give someone a clue!)

postlogin.c
========

 584   if (tunable_pasv_address != 0)
 585   {
! 586 //    /* Report passive address as specified in configuration */
! 587 // if (vsf_sysutil_inet_aton(tunable_pasv_address, s_p_sockaddr) == 0)
! 588 //    {
! 589 //      die("invalid pasv_address");
! 590 //    }
 591   }
 592   else
 593   {
594 vsf_sysutil_sockaddr_clone(&s_p_sockaddr, p_sess- >p_local_addr);
 595   }
 596   str_alloc_text(&s_pasv_res_str, "Entering Passive Mode (");
 597   if (!is_ipv6)
 598   {
! 599 //str_append_text(&s_pasv_res_str, vsf_sysutil_inet_ntop (s_p_sockaddr));
! 600     str_append_text(&s_pasv_res_str, tunable_pasv_address);
 601   }
 602   else

So I commented out lines 586-590 and line 599 and added line 600 to force the IP I want to go out in the server response.

make
./vsftpd /usr/local/etc/vsftpd.conf

And try the client again (FireFox 3.5 on Mac) - all good, and the logs say ...

Sat Aug 22 22:05:54 2009 [pid 65324] [xxxxxxx] FTP response: Client "121.72.0.211", "200 Switching to Binary mode." Sat Aug 22 22:05:54 2009 [pid 65324] [xxxxxxx] FTP command: Client "121.72.0.211", "PASV" [before my change, the server would respond with 500 OOPS: priv_sock_get_cmd here, with my change, we get the expected line] Sat Aug 22 22:05:54 2009 [pid 65324] [xxxxxxx] FTP response: Client "121.72.0.211", "227 Entering Passive Mode (22,33,44,55,68,65)."

So I now get the required PASV response - with the pasv_address I specified in the vsftpd.conf file.

Not sure what to do next - just about hit the current limits of my C ability. RTFMing and understanding how to debug a beastie like this ...

I know there are options e.g. don't hack around with NAT/FTP/IP addresses and pasv_address or use proftpd, etc., etc., but I'd like to understand why this worked in 2.0.5/.6 and 2.1.0 and doesn't any more. And a learning experience as well.

If no bright ideas forthcoming, I'll try the vsftpd author.

Thanks.
_______________________________________________
freebsd-ports@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-ports
To unsubscribe, send any mail to "freebsd-ports-unsubscr...@freebsd.org"

Reply via email to