我对我们的 FTP 服务器配置有疑问。我们目前有 2 个 FTP 服务器,它们正在进行负载平衡。这两个服务器和负载平衡器只能在我们的内部网络上访问。
现在,我们的 FTP 配置工作正常。我可以使用 WinSCP 和 FileZilla 等通过负载平衡器管理我们的 FTP 服务器...但如果我使用默认的 .NET FTP 客户端发送文件,数据端口连接就会出现一些问题。
因此,当负载均衡器发送带有客户端必须发送数据的 IP 地址和端口的 PASV 响应时,就会出现问题。因此,不是发送负载均衡器的 IP,而是发送真实服务器的 IP。FTP 客户端似乎忽略了 PASV 命令的 IP 部分,并希望连接到原始 IP,但当然会失败,因为负载均衡器上没有打开任何端口。
现在,真正的问题是:负载均衡器发送真实服务器的 IP 地址而不是它自己的 IP 地址是否违反 FTP 规范?
WinSCP 和 FileZilla 不会出现此问题。我还发现,我必须禁用 Java commons-net lib 中的“setRemoteVerificationEnabled(false)”才能使其在 Java 中工作。我们通过 FTP 显式和隐式连接到 FTP 服务器。