Windows-Server-2008

傳出 FTP 超時/阻塞

  • June 21, 2011

在 Windows Server 2008 R2 Web 伺服器上,我有一個將文件上傳到外部 FTP 伺服器的 Windows 服務。實際上有多個伺服器(Google、必應等)。這是一個使用內置 .NET FTP 庫的 .NET 應用程序。

我收到以下錯誤的混合:

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

Windows 防火牆(域、私有、公共)設置為允許出站連接。

FTP 不是防火牆友好的協議。它早於防火牆普遍存在的 Internet 時代,因此假設對話雙方都可以相互打開埠。COMMAND 通道是您在連接到 FTP 伺服器時打開的通道,是您與伺服器之間啟動的連接。DATA 通道,您用來下載內容的通道,是FTP 伺服器向您發起的連接。更糟糕的是,您的 FTP 選擇呈現的埠是一個隨機的高埠,因此配置您的防火牆以允許正確的埠是很棘手的。

這就是他們在 FTP 協議中創建“被動”模式的原因。這是 PASV 動詞。這告訴 FTP 伺服器反轉 DATA 通道的啟動方向;它為客戶端提供連接的高埠,客戶端啟動連接,伺服器通過該連接提供數據。防火牆更容易。

對於 .NET 的庫,將UsePassive屬性設置為 True 可能會更好。

引用自:https://serverfault.com/questions/282444