传出 FTP 超时/被阻止

传出 FTP 超时/被阻止

在 Windows Server 2008 R2 Web 服务器上,我有一个 Windows 服务,它将文件上传到外部 FTP 服务器。实际上是多个服务器(Google、Bing 等)。这是一个使用内置 .NET FTP 库的 .NET 应用程序。

我遇到了以下几种错误:

The operation has timed out.
The remote server returned an error: (425) Can't open data connection.

Windows 防火墙(域、私有、公共)设置为允许出站连接。

答案1

FTP 不是一种防火墙友好型协议。它出现于防火墙普遍存在的互联网时代之前,因此假定对话双方相互打开端口是完全没问题的。COMMAND 通道(即您在连接到 FTP 服务器时打开的通道)是您与服务器之间发起的连接。DATA 通道(即您用于下载内容的通道)是在您与服务器之间发起的连接。通过 FTP 服务器对你来说。更糟糕的是,你的 FTP 选择显示的端口是一个随机的高端口,因此配置防火墙以允许正确的端口是比较棘手的。

这就是他们在 FTP 协议中创建“被动”模式的原因。这是 PASV 动词。这告诉 FTP 服务器反转数据通道的启动方向;它为客户端提供要连接的高端口,客户端启动连接,服务器通过该连接提供数据。更容易通过防火墙。

对于 .NET 的库,设置使用被动属性设置为 True。

相关内容