如何configuration我的FTP服务器,以便用户可以使用Safari浏览器连接到它?

我的FTP服务器有问题。 每个浏览器/客户端都可以连接到Safari浏览器。 客户端发出RETR命令后,Safari会话冻结,然后发出“425无法build立连接”错误。

我知道从Safari浏览器连接到FTP是可能的(1和1 FTP服务器可以从Safari浏览器访问),但我不知道我错过了什么,或者为什么这是行不通的。

你有什么主意吗?

谢谢!

Safari会话:

Thu Nov 20 14:42:35 2014 [pid 8558] FTP command: Client "62.2.114.180", "USER proxy" Thu Nov 20 14:42:35 2014 [pid 8558] [proxy] FTP response: Client "62.2.114.180", "331 Please specify the password." Thu Nov 20 14:42:35 2014 [pid 8558] [proxy] FTP command: Client "62.2.114.180", "PASS <password>" Thu Nov 20 14:42:35 2014 [pid 8557] [proxy] OK LOGIN: Client "62.2.114.180" Thu Nov 20 14:42:35 2014 [pid 8559] [proxy] FTP response: Client "62.2.114.180", "230 Login successful." Thu Nov 20 14:42:36 2014 [pid 8559] [proxy] FTP command: Client "62.2.114.180", "SYST" Thu Nov 20 14:42:36 2014 [pid 8559] [proxy] FTP response: Client "62.2.114.180", "215 UNIX Type: L8" Thu Nov 20 14:42:36 2014 [pid 8559] [proxy] FTP command: Client "62.2.114.180", "PWD" Thu Nov 20 14:42:36 2014 [pid 8559] [proxy] FTP response: Client "62.2.114.180", "257 "/"" Thu Nov 20 14:42:36 2014 [pid 8559] [proxy] FTP command: Client "62.2.114.180", "TYPE I" Thu Nov 20 14:42:36 2014 [pid 8559] [proxy] FTP response: Client "62.2.114.180", "200 Switching to Binary mode." Thu Nov 20 14:42:36 2014 [pid 8559] [proxy] FTP command: Client "62.2.114.180", "CWD /" Thu Nov 20 14:42:36 2014 [pid 8559] [proxy] FTP response: Client "62.2.114.180", "250 Directory successfully changed." Thu Nov 20 14:42:36 2014 [pid 8559] [proxy] FTP command: Client "62.2.114.180", "PASV" Thu Nov 20 14:42:36 2014 [pid 8559] [proxy] FTP response: Client "62.2.114.180", "227 Entering Passive Mode (172,30,0,248,228,76)." Thu Nov 20 14:42:36 2014 [pid 8559] [proxy] FTP command: Client "62.2.114.180", "SIZE r.html" Thu Nov 20 14:42:36 2014 [pid 8559] [proxy] FTP response: Client "62.2.114.180", "213 173" Thu Nov 20 14:42:36 2014 [pid 8559] [proxy] FTP command: Client "62.2.114.180", "RETR /r.html" Thu Nov 20 14:43:36 2014 [pid 8559] [proxy] FTP response: Client "62.2.114.180", "425 Failed to establish connection." Thu Nov 20 14:43:36 2014 [pid 8559] [proxy] FAIL DOWNLOAD: Client "62.2.114.180", "/r.html", 0.00Kbyte/sec Thu Nov 20 14:43:36 2014 [pid 8559] [proxy] FTP command: Client "62.2.114.180", "CWD /" Thu Nov 20 14:43:36 2014 [pid 8559] [proxy] FTP response: Client "62.2.114.180", "250 Directory successfully changed." Thu Nov 20 14:43:37 2014 [pid 8559] [proxy] FTP command: Client "62.2.114.180", "PASV" Thu Nov 20 14:43:37 2014 [pid 8559] [proxy] FTP response: Client "62.2.114.180", "227 Entering Passive Mode (172,30,0,248,228,101)." Thu Nov 20 14:43:37 2014 [pid 8559] [proxy] FTP command: Client "62.2.114.180", "SIZE r.html" Thu Nov 20 14:43:37 2014 [pid 8559] [proxy] FTP response: Client "62.2.114.180", "213 173" Thu Nov 20 14:43:37 2014 [pid 8559] [proxy] FTP command: Client "62.2.114.180", "RETR /r.html" Thu Nov 20 14:44:37 2014 [pid 8559] [proxy] FTP response: Client "62.2.114.180", "425 Failed to establish connection." Thu Nov 20 14:44:37 2014 [pid 8559] [proxy] FAIL DOWNLOAD: Client "62.2.114.180", "/r.html", 0.00Kbyte/sec 

正如我之前所说,它在其他浏览器(移动和桌面)和FTP客户端上按预期工作。 例如Chrome:

 Thu Nov 20 14:38:05 2014 [pid 8523] FTP command: Client "62.2.114.180", "USER proxy" Thu Nov 20 14:38:05 2014 [pid 8523] [proxy] FTP response: Client "62.2.114.180", "331 Please specify the password." Thu Nov 20 14:38:05 2014 [pid 8523] [proxy] FTP command: Client "62.2.114.180", "PASS <password>" Thu Nov 20 14:38:05 2014 [pid 8522] [proxy] OK LOGIN: Client "62.2.114.180" Thu Nov 20 14:38:05 2014 [pid 8526] [proxy] FTP response: Client "62.2.114.180", "230 Login successful." Thu Nov 20 14:38:05 2014 [pid 8526] [proxy] FTP command: Client "62.2.114.180", "SYST" Thu Nov 20 14:38:05 2014 [pid 8526] [proxy] FTP response: Client "62.2.114.180", "215 UNIX Type: L8" Thu Nov 20 14:38:05 2014 [pid 8526] [proxy] FTP command: Client "62.2.114.180", "PWD" Thu Nov 20 14:38:05 2014 [pid 8526] [proxy] FTP response: Client "62.2.114.180", "257 "/"" Thu Nov 20 14:38:06 2014 [pid 8526] [proxy] FTP command: Client "62.2.114.180", "TYPE I" Thu Nov 20 14:38:06 2014 [pid 8526] [proxy] FTP response: Client "62.2.114.180", "200 Switching to Binary mode." Thu Nov 20 14:38:06 2014 [pid 8526] [proxy] FTP command: Client "62.2.114.180", "PASV" Thu Nov 20 14:38:06 2014 [pid 8526] [proxy] FTP response: Client "62.2.114.180", "227 Entering Passive Mode (172,30,0,248,227,196)." Thu Nov 20 14:38:06 2014 [pid 8526] [proxy] FTP command: Client "62.2.114.180", "SIZE /s.html" Thu Nov 20 14:38:06 2014 [pid 8526] [proxy] FTP response: Client "62.2.114.180", "213 180" Thu Nov 20 14:38:06 2014 [pid 8526] [proxy] FTP command: Client "62.2.114.180", "CWD /s.html" Thu Nov 20 14:38:06 2014 [pid 8526] [proxy] FTP response: Client "62.2.114.180", "550 Failed to change directory." Thu Nov 20 14:38:06 2014 [pid 8526] [proxy] FTP command: Client "62.2.114.180", "PASV" Thu Nov 20 14:38:06 2014 [pid 8526] [proxy] FTP response: Client "62.2.114.180", "227 Entering Passive Mode (172,30,0,248,228,14)." Thu Nov 20 14:38:06 2014 [pid 8526] [proxy] FTP command: Client "62.2.114.180", "RETR /s.html" Thu Nov 20 14:38:06 2014 [pid 8526] [proxy] FTP response: Client "62.2.114.180", "150 Opening BINARY mode data connection for /s.html (180 bytes)." Thu Nov 20 14:38:07 2014 [pid 8526] [proxy] OK DOWNLOAD: Client "62.2.114.180", "/s.html", 180 bytes, 1.39Kbyte/sec Thu Nov 20 14:38:07 2014 [pid 8526] [proxy] FTP response: Client "62.2.114.180", "226 Transfer complete." Thu Nov 20 14:38:07 2014 [pid 8526] [proxy] FTP command: Client "62.2.114.180", "QUIT" Thu Nov 20 14:38:07 2014 [pid 8526] [proxy] FTP response: Client "62.2.114.180", "221 Goodbye." 

我正在使用vsftpd和我的conf是:

 # Example config file /etc/vsftpd.conf # # The default compiled in settings are fairly paranoid. This sample file # loosens things up a bit, to make the ftp daemon more usable. # Please see vsftpd.conf.5 for all compiled in defaults. # # READ THIS: This example file is NOT an exhaustive list of vsftpd options. # Please read the vsftpd.conf.5 manual page to get a full idea of vsftpd's # capabilities. # # # Run standalone? vsftpd can run either from an inetd or as a standalone # daemon started from an initscript. listen=YES # # Run standalone with IPv6? # Like the listen parameter, except vsftpd will listen on an IPv6 socket # instead of an IPv4 one. This parameter and the listen parameter are mutually # exclusive. #listen_ipv6=YES # # Allow anonymous FTP? (Disabled by default) anonymous_enable=NO # # Uncomment this to allow local users to log in. # local_enable=YES # # Uncomment this to enable any form of FTP write command. # write_enable=YES # # Default umask for local users is 077. You may wish to change this to 022, # if your users expect that (022 is used by most other ftpd's) local_umask=022 # # Uncomment this to allow the anonymous FTP user to upload files. This only # has an effect if the above global write enable is activated. Also, you will # obviously need to create a directory writable by the FTP user. #anon_upload_enable=YES # # Uncomment this if you want the anonymous FTP user to be able to create # new directories. #anon_mkdir_write_enable=YES # # Activate directory messages - messages given to remote users when they # go into a certain directory. dirmessage_enable=NO # # If enabled, vsftpd will display directory listings with the time # in your local time zone. The default is to display GMT. The # times returned by the MDTM FTP command are also affected by this # option. use_localtime=YES # # Activate logging of uploads/downloads. xferlog_enable=YES # # Make sure PORT transfer connections originate from port 20 (ftp-data). connect_from_port_20=YES # # If you want, you can arrange for uploaded anonymous files to be owned by # a different user. Note! Using "root" for uploaded files is not # recommended! #chown_uploads=YES #chown_username=whoever # # You may override where the log file goes if you like. The default is shown # below. #xferlog_file=/var/log/vsftpd.log # # If you want, you can have your log file in standard ftpd xferlog format. # Note that the default log file location is /var/log/xferlog in this case. #xferlog_std_format=YES # # You may change the default value for timing out an idle session. #idle_session_timeout=600 # # You may change the default value for timing out a data connection. #data_connection_timeout=120 # # It is recommended that you define on your system a unique user which the # ftp server can use as a totally isolated and unprivileged user. #nopriv_user=ftpsecure # # Enable this and the server will recognise asynchronous ABOR requests. Not # recommended for security (the code is non-trivial). Not enabling it, # however, may confuse older FTP clients. #async_abor_enable=YES # # By default the server will pretend to allow ASCII mode but in fact ignore # the request. Turn on the below options to have the server actually do ASCII # mangling on files when in ASCII mode. # Beware that on some FTP servers, ASCII support allows a denial of service # attack (DoS) via the command "SIZE /big/file" in ASCII mode. vsftpd # predicted this attack and has always been safe, reporting the size of the # raw file. # ASCII mangling is a horrible feature of the protocol. #ascii_upload_enable=YES #ascii_download_enable=YES # # You may fully customise the login banner string: # ftpd_banner=Welcome! # # You may specify a file of disallowed anonymous e-mail addresses. Apparently # useful for combatting certain DoS attacks. #deny_email_enable=YES # (default follows) #banned_email_file=/etc/vsftpd.banned_emails # # You may restrict local users to their home directories. See the FAQ for # the possible risks in this before using chroot_local_user or # chroot_list_enable below. #chroot_local_user=YES # # You may specify an explicit list of local users to chroot() to their home # directory. If chroot_local_user is YES, then this list becomes a list of # users to NOT chroot(). # (Warning! chroot'ing can be very dangerous. If using chroot, make sure that # the user does not have write access to the top level directory within the # chroot) chroot_local_user=YES #chroot_list_enable=YES # (default follows) #chroot_list_file=/etc/vsftpd.chroot_list # # You may activate the "-R" option to the builtin ls. This is disabled by # default to avoid remote users being able to cause excessive I/O on large # sites. However, some broken FTP clients such as "ncftp" and "mirror" assume # the presence of the "-R" option, so there is a strong case for enabling it. #ls_recurse_enable=YES # # Customization # # Some of vsftpd's settings don't fit the filesystem layout by # default. # # This option should be the name of a directory which is empty. Also, the # directory should not be writable by the ftp user. This directory is used # as a secure chroot() jail at times vsftpd does not require filesystem # access. secure_chroot_dir=/var/run/vsftpd/empty # # This string is the name of the PAM service vsftpd will use. pam_service_name=vsftpd.virtual # # This option specifies the location of the RSA certificate to use for SSL # encrypted connections. rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem # This option specifies the location of the RSA key to use for SSL # encrypted connections. rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key force_local_data_ssl=NO force_local_logins_ssl=NO ssl_enable=NO check_shell=NO chmod_enable=NO dirlist_enable=YES guest_enable=YES no_anon_password=NO pasv_enable=YES pasv_promiscuous=NO pasv_max_port=58500 pasv_min_port=58300 local_enable=YES virtual_use_local_privs=YES write_enable=NO user_sub_token=$USER chroot_local_user=YES hide_ids=YES guest_username=ftp log_ftp_protocol=YES 

…“62.2.114.180”,“227进入被动模式(172,30,0,248,228,14)”。

它看起来像你的服务器有一个私人IP,但你的客户端公共IP。 从这我假设你的服务器是在一个路由器后面的一些本地networking,将大部分端口转发到服务器,以便FTP数据连接工作(至less58300..58500 ,这是你的configuration中的pasv_min_portpasv_max_port

但是,服务器仍然只知道其内部IP地址172.30.0.248,并期望FTP客户端连接到此地址(在这种情况下,172.30.0.248端口58382)。 如果FTP客户端只实现严格的RFC959,它将尝试连接到这个地址,当然因为无法从他的站点到达而无法连接。 其他FTP客户端可能会忽略对PASV的响应中给出的IP,而是连接到服务器的IP地址。 虽然这是违背标准的,但它可以解决像你这样的情况,也可以更安全。

总之:您希望FTP客户端解决您网站上的configuration问题。 有些是做的,有些则没有。 要正确configuration路由器后面的vsftp,请参阅http://flukylogs.blogspot.de/2012/01/vsftpd-behind-routerfirewall.html (首先使用google)。