请注意:本页内容发布于 3704 天前,内容可能已经过时,请注意甄别。
单位从2013年使用自管服务器以来,一直使用FileZilla Server作为FTP服务器。由于单位处于一个大的内网之下,必须使用PASV模式连接公网上的FTP服务(顺便吐槽一下集团的网络中心,只给内网服务器开20、21却不给留几个PASV模式的端口,提出来还被吐槽说我比你懂得多,这台服务器又在配置上与内网隔离,害得我们只能用其它协议向上发送文件),所以将某个范围开启为PASV的预留端口,并在防火墙上打开了20、21和PASV的端口范围,同时允许了服务器主程序与公网通讯。
但问题来了,约两年的时间以来,FTP服务器一直不太好用,尤其是在下载大批小文件的情况下,传上十几二十几个文件数据连接就会开始反应缓慢,掉到没有速度,直到服务器超时自动断开,甚至在绕过防火墙后问题依旧,百思不得其解。
最近在查看FileZilla的Wiki时,发现其中有一个章节「Network Configuration」[1]中提到:
Open a command prompt with administrative rights and execute the following command: netsh advfirewall set global StatefulFTP disable
试之,连接情况有所改善,虽然距离问题解决还有相当的距离(掉线依旧频繁)。
后经查询资料[2]得知,以上命令的作用为:
If you disable the StatefulFTP, the firewall will not inspect any FTP traffic. Any FTP traffic will pass the firewall because of the rule which I mentioned above.
虽然不是很明白为什么允许了FTP服务器的端口范围和程序还是会被过滤。
参考资料:
[1] https://wiki.filezilla-project.org/Network_Configuration
2014-09-28追加:
这件事最终得以解决的方法是在服务器上建立了威批恩服务,然后Tunnel到服务器上再进行下载,速度刷刷的。
被动明文FTP真难用啊。
2014-10-22追加:
威批恩服务(L2TP/IPSec模式)虽好,但出现了难以拨入的情况(不过只要成功拨入一次就能数小时不断线),经抓包检查发现服务器和客户端两边在开始阶段都没有问题,但一旦进入Key Exchange阶段服务器就会失去响应(服务器收到了Key Exchange包,但并没有回应任何数据)。目前此问题尚未解决,而上文提到的FTP已通过SSH SFTP-FTP Bridge解决。
其实被动比主动好用很多。不过还是尽早放弃ftp吧。
另外被吐槽是“很正常的”,追求不一样。
我只知道在比较复杂的内网环境下,被动FTP比主动FTP难用多了。
@mmiaow
主动模式对用户要求高啊,而且现如今大部分用户都在内网环境,多数情况不可用
主动在现在这种遍地NAT的环境下基本已经死了,但某采集软件的被动模式就是工作不正常,我也没办法。