我已经彻底研究过这个主题,关于什么是主动模式以及为什么我会遇到这个臭名昭著的425 Can't open data connection.
错误,但是在互联网上的所有文档、教程和论坛都没有找到解决方案之后,我决定来这里进行最后一次尝试。
通过各种方式(在底部解释),我能够远程连接到此服务器,但只能通过被动连接。我无法使用主动模式进行连接 - FileZilla 客户端默认为主动模式(至少在我的情况下)。
该服务器运行 Windows 8 和 FileZilla Server(XAMPP 包的一部分),并使用以下端口:
- 21用于聆听
- 990用于通过 TLS 进行隐式 FTP
- 14147用于远程管理
- 6000-7000对于被动模式
这些端口在路由器的 NAT 和 Windows 防火墙中均打开。
这些是服务器的设置
这些是客户端的设置
在被动模式下,也会选择回退到主动模式
由于显而易见的原因,本地连接可以工作,但远程连接则不可以。
值得一提 -ftptest.net报告连接为成功,但我发现它使用 PASV 模式连接到服务器。我已将此成功连接的日志放在粘贴箱供参考。这再次使用 TLS 上的隐式 FTP。标准 FTP 连接确实可以通过此网站工作(而不是通过我自己的连接方式),但我已在服务器中禁用它们,强制仅使用 SSL/TLS 连接。
答案1
FTP 有控制连接和数据连接。控制连接由客户端向服务器发起,因此通常不会出现问题,但数据连接有所不同:
- 在主动模式下,服务器尝试连接到客户端。必要的 IP 和端口设置在控制通道内的
PORT
或EPRT
命令中发送。如果客户端处于主动模式,则不会工作,因为客户端使用服务器无法访问的 IP 地址。如果客户端位于防火墙后面,也会出现类似的问题,因为来自外部的连接将被阻止。只有支持 FTP 的防火墙可能会使用特殊助手来管理主动连接(这些助手不适用于 FTPS)。 PASV
在被动模式下,客户端连接到服务器。必要的 IP 和端口在对或命令的响应中发送EPSV
。客户端的 NAT 没有问题,防火墙通常也没有问题。但如果服务器本身位于防火墙或 NAT 后面,就会出现问题。
简而言之:被动模式在大多数情况下都有效,而主动模式仅在客户端拥有公共地址时才有效。但对于路由器后面的客户端(在家中、公共热点……)而言并非如此,并且通常也不在移动网络中。
答案2
在本地网络设备上运行 FTP 客户端在使用外部 IP 地址时出现问题,例如:92.646.178.168
。服务器日志会指示该 IP。
通过配置客户端的“主机名或地址”,使其不是 IP 地址,而是使用“Maker”之类的名称。路由器会正确地将数据包发送到 FZserver。因此,在测试连接时,我建议进行此简单更改。然后使用另一个联网设备(在我的情况下是无线设备)仅在此处使用外部 IP。