大家,早安,
我在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
如前所述,每天(自动)进行几次FTP传输,并在分配给FileZilla FTP服务器的140多个端口范围内进行扫描(以被动模式运行)。
我在Azure托管的VM上运行了Wireshark捕获;从Wireshark捕获中可以看到,“ 426连接已关闭”事件实际上是由Azure中VM发出的RST匹配的,并发送回发出PASV命令的客户端(即,在上面的示例中,FTP服务器回复客户端的PASV命令的端口为:234,235-> 60139;客户端尝试打开到端口60139的数据通道以开始传输-> FTP服务器立即回复(根据Wireshark捕获,在MS内)发出RST给客户)。
我想到了FTP服务器端的一些临时端口分配问题->所以我减小了允许的动态OS临时端口范围,使其不与FTP被动端口范围重叠-使用
netsh int ipv4 set dynamicport tcp start=49152 num=10000
另外,我通过命令将端口范围保留明确添加到netsh堆栈
netsh int ip add excludeportrange protocol=tcp startport=60000 numberofports=141 store=persistent
尽管如此,问题仍然偶尔发生。
我在该网站以及MS Azure技术网会议上阅读了有关Azure如何监视端点状态(在LB集的一部分时)的广泛技术讨论,但这不适用于FTP被动传输(检索和上载)在保留的FTP被动端口范围内的随机端口上,通常可以正常工作。
我可以根据需要提供其他详细信息-同时,对于在服务器和客户端进行故障排除/调查的其他建议,我将不胜感激(非常确定问题与网络或网络配置无关)。
我还想询问有关如何调试Winsock来解决可能的服务器端套接字可用性问题的其他疑难解答/调查建议/提示。
426
中止错误总是在另一个会话之后两秒钟出现,但出现了550
权限被拒绝的错误。我怀疑这是FileZilla的错误,但对我们而言,解决方法是防止550(在我们的情况下,测试系统尝试访问测试文件夹,但使用了生产凭据;因此我们只需要更正该系统的凭据即可) 。