FileZilla FTP 的被动模式不起作用

FileZilla FTP 的被动模式不起作用

我们在 Windows Server 2008 R2 上运行了 FileZilla Server 0.9.37

主动模式工作正常,服务器上的Windows防火墙已关闭。

我们的路由器是 DrayTek vigor 2820。在 NAT、打开端口下,我为服务器本地 IP 打开了以下端口

TCP 20-22,TCP 45100-65535

在 FileZilla 服务器中,在被动模式设置下(我无法发布图像所以......)

Use the following IP: 213.106.150.123
Don't use external IP from local connections: Checked
Use custom port range: 45100-65535

我尝试从我通过 RDP 连接到的德国远程服务器重新连接 FileZilla 服务器。

Status: Connecting to 213.106.150.123:21...
Status: Connection established, waiting for welcome message...
Response:   220 --
Command:    USER ftp_001471
Response:   331 Password required for ftp_001471
Command:    PASS ********
Response:   230 Logged on
Status: Connected
Status: Retrieving directory listing...
Command:    CWD /
Response:   250 CWD successful. "/" is current directory.
Command:    TYPE I
Response:   200 Type set to I
Command:    PASV
Response:   227 Entering Passive Mode (213,106,150,123,238,133)
Command:    MLSD
Response:   425 Can't open data connection.
Error:  Failed to retrieve directory listing

FileZilla 服务器上的状态窗口报告以下内容

(not logged in) (87.106.131.22)> Connected, sending welcome message...
(not logged in) (87.106.131.22)> 220 --
(not logged in) (87.106.131.22)> USER ftp_001471
(not logged in) (87.106.131.22)> 331 Password required for ftp_001471
(not logged in) (87.106.131.22)> PASS ********
ftp_001471 (87.106.131.22)> 230 Logged on
ftp_001471 (87.106.131.22)> CWD /
ftp_001471 (87.106.131.22)> 250 CWD successful. "/" is current directory.
ftp_001471 (87.106.131.22)> TYPE I
ftp_001471 (87.106.131.22)> 200 Type set to I
ftp_001471 (87.106.131.22)> PASV
ftp_001471 (87.106.131.22)> 227 Entering Passive Mode (213,106,150,123,195,197)
ftp_001471 (87.106.131.22)> MLSD
ftp_001471 (87.106.131.22)> 425 Can't open data connection.

如果我将 FileZilla 被动模式设置从我们的外部 IP 更改为默认,我会从尝试连接的德国客户端获得以下详细信息。

Status: Connecting to 213.106.150.123:21...
Status: Connection established, waiting for welcome message...
Response:   220 --
Command:    USER ftp_001471
Response:   331 Password required for ftp_001471
Command:    PASS ********
Response:   230 Logged on
Status: Connected
Status: Retrieving directory listing...
Command:    CWD /
Response:   250 CWD successful. "/" is current directory.
Command:    TYPE I
Response:   200 Type set to I
Command:    PASV
Response:   227 Entering Passive Mode (213,106,150,123,196,198)
Command:    MLSD
Response:   425 Can't open data connection.
Error:  Failed to retrieve directory listing

以及服务器上的详细信息。

(not logged in) (87.106.131.22)> Connected, sending welcome message...
(not logged in) (87.106.131.22)> 220 --
(not logged in) (87.106.131.22)> USER ftp_001471
(not logged in) (87.106.131.22)> 331 Password required for ftp_001471
(not logged in) (87.106.131.22)> PASS ********
ftp_001471 (87.106.131.22)> 230 Logged on
ftp_001471 (87.106.131.22)> CWD /
ftp_001471 (87.106.131.22)> 250 CWD successful. "/" is current directory.
ftp_001471 (87.106.131.22)> TYPE I
ftp_001471 (87.106.131.22)> 200 Type set to I
ftp_001471 (87.106.131.22)> PASV
ftp_001471 (87.106.131.22)> 227 Entering Passive Mode (192,168,1,4,195,198)
ftp_001471 (87.106.131.22)> MLSD
ftp_001471 (87.106.131.22)> 425 Can't open data connection.

我究竟做错了什么?

当我指定外部 IP 时,客户端和服务器报告相同,但端口搞砸了,当我使用默认运行时,服务器使用其内部 IP,但端口分配看起来更好。

编辑:更多测试及其工作原理。

于是我在 IIS 7.5 中安装了 FTP 服务器,禁用了 FileZilla,然后它就正常工作了!然后我尝试重新启用 FileZilla,它也正常工作了!这一切都是通过我家里的 ADSL 连接完成的。

然后,我从我们位于德国的远程服务器再次尝试,但失败了,在 IIS FTP 和 FileZilla 的被动模式下目录列表都挂起。

我猜德国数据中心的防火墙/路由器出了问题。我真的不想弄乱远程服务器路由器(我甚至不确定我是否可以更改托管的防火墙规则)我担心企业客户在尝试访问我们的 FTP 站点时会遭遇同样的命运。

答案1

我建议您尝试使用 Windows 的 FTP 或其他已安装的客户端在服务器上本地进行操作。这样,您将看到是网络/防火墙问题还是 FTP 服务器配置问题。如果命令正确,还请检查 Filezilla 服务器的日志文件。

如果这取决于防火墙,以下 TechNet 文章可能会有所帮助:如何为被动模式 FTP 服务器配置 Windows 防火墙。但是您写道 Windows 防火墙已关闭,所以我认为这是外部防火墙/路由器的问题(也检查客户端)。

答案2

我遇到过类似的问题,通过在 Filezila 服务器设置中的“被动模式传输的外部服务器 IP 地址”选项中选择“默认”解决了该问题。换句话说,即使您使用的是私有地址,也不要在此处输入您的公共 IP 地址。原因是您的防火墙可能启用了“FTP 检查”,它会为您将您的服务器私有 IP 地址转换为其公共 IP 地址。在这种情况下,在 Filezila 中启用此转换也会导致问题,并且您的客户端发出 PASV 命令后连接将丢失。

答案3

我意识到这可能是一个变化,但 2008 年的新 FTP 服务器非常强大,我最终用它替换了 FileZilla。您可能也想研究一下。

相关内容