FTP 被动模式 (Filezilla) Windows server 2012 偶尔出现“426 连接关闭;中止传输”

Ott*_*tto 10 ftp filezilla azure

大家,早安,

我在 MS Azure 中托管的 WIN 2012 R2 服务器上托管 FileZilla FTP 服务器(被动模式)。

FTP 传输通常工作正常 - 每天都在运行多个 FTP 上传和检索。

我在 Azure 门户/端打开了相对较大范围的端口(端点)以允许被动模式。

偶尔(平均每 2 天一次)我看到 FTP 传输问题如下:

8/8/2016 9:09:59 AM - USER_FILEZILLA (62.154.Y.X)> MDTM dev_updates/file1

8/8/2016 9:09:59 AM - USER_FILEZILLA (62.154.Y.X)> 213 20160728071048

8/8/2016 9:09:59 AM - USER_FILEZILLA (62.154.Y.X)> MDTM dev_updates/file2

8/8/2016 9:09:59 AM - USER_FILEZILLA (62.154.Y.X)> 213 20160728071048

8/8/2016 9:09:59 AM - USER_FILEZILLA (62.154.Y.X)> MDTM dev_updates/file3

8/8/2016 9:09:59 AM - USER_FILEZILLA (62.154.Y.X)> 213 20160728071050

8/8/2016 9:09:59 AM - USER_FILEZILLA (62.154.Y.X)> CWD dev_updates/Infrastructure/folder

8/8/2016 9:09:59 AM - USER_FILEZILLA (62.154.Y.X)> 250 CWD successful. "dev_updates/Infrastructure/folder" is current directory.

8/8/2016 9:10:00 AM - USER_FILEZILLA (62.154.Y.X)> PASV

8/8/2016 9:10:00 AM - USER_FILEZILLA (62.154.Y.X)> 227 Entering Passive Mode (104,40,Y,X,234,235)

8/8/2016 9:10:00 AM - USER_FILEZILLA (62.154.Y.X)> 426 Connection closed; aborted transfer of ""

8/8/2016 9:10:01 AM - USER_FILEZILLA (62.154.Y.X)> disconnected.

8/8/2016 9:10:01 AM - (not logged in) (62.154.Y.X)> Connected on port 21, sending welcome message...

8/8/2016 9:10:01 AM - (not logged in) (62.154.Y.X)> 220-FileZilla Server 0.9.57 beta

8/8/2016 9:10:01 AM - (not logged in) (62.154.Y.X)> 220-written by Tim Kosse (tim.kosse@filezilla-project.org)

8/8/2016 9:10:01 AM - (not logged in) (62.154.Y.X)> 220 Please visit https://filezilla-project.org/

8/8/2016 9:10:01 AM - (not logged in) (62.154.Y.X)> USER USER_FILEZILLA

8/8/2016 9:10:01 AM - (not logged in) (62.154.Y.X)> 331 Password required for 
Run Code Online (Sandbox Code Playgroud)

如上所述,每天(自动)进行多次 FTP 传输,覆盖分配给 FileZilla FTP 服务器的 140 多个端口范围(以被动模式运行)。

我在 Azure 中托管的 VM 上运行了 Wireshark 捕获;我可以从 Wireshark 捕获中看到,“426 连接关闭”事件实际上是由 Azure 中的 VM 来源的 RST 匹配的,并发送回发出 PASV 命令的客户端(即在上面的示例中,FTP 服务器回复到带有端口的客户端 PASV 命令:234,235 -> 60139;客户端尝试打开到端口 60139 的数据通道以开始传输 -> FTP 服务器立即回复(根据 Wireshark 捕获在 MS 内)发出 RST给客户)。

我想到了 FTP 服务器端的一些临时端口分配问题 -> 所以我减少了允许的动态操作系统临时端口范围以不与 FTP 被动端口范围重叠 - 使用

netsh int ipv4 set dynamicport tcp start=49152 num=10000
Run Code Online (Sandbox Code Playgroud)

另外,我通过命令明确地向 netsh 堆栈添加了端口范围保留

netsh int ip add excludeportrange protocol=tcp startport=60000 numberofports=141 store=persistent
Run Code Online (Sandbox Code Playgroud)

尽管如此,问题仍然偶尔发生。

我在本网站以及 MS Azure technet 会话中阅读了有关 Azure 如何监控端点状态(当属于 LB 集时)的大量技术讨论,但这不适用于我的情况,因为 FTP 被动传输(检索和上传)在保留的 FTP 被动端口范围内的随机端口上通常工作正常。

如果需要,我可以提供其他详细信息 - 同时,我将不胜感激有关服务器和客户端故障排除/调查的其他建议(非常确定问题与网络或网络配置无关)。

我还想询问有关如何调试 winsock 以解决可能的服务器端套接字可用性问题的其他故障排除/调查建议/提示。