![Windows 7 基于 GUI 的 FTP 客户端无法获取 vsftpd 服务器的目录列表](https://linux22.com/image/1408560/Windows%207%20%E5%9F%BA%E4%BA%8E%20GUI%20%E7%9A%84%20FTP%20%E5%AE%A2%E6%88%B7%E7%AB%AF%E6%97%A0%E6%B3%95%E8%8E%B7%E5%8F%96%20vsftpd%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%9A%84%E7%9B%AE%E5%BD%95%E5%88%97%E8%A1%A8.png)
客户端操作系统 = Windows 7
我尝试过的 ftp 客户端:基于 GUI 的 = Filezilla、cuteftp 和 coreftp
Windows 附带的命令行实用程序可以运行,并且可以毫无问题地连接到 FTP 服务器或列出目录。
问题与失败目录的文件或目录的数量无关。
被动/主动 FTP 连接均会出现问题。
列出某些目录时,客户端和 ftp 服务器之间的连接超时。
Linux、Unix、Android 以及除了 Windows 之外的所有其他操作系统都可以连接并从 FTP 服务器获取所有目录列表。
在 Linux 上,我使用了命令行和基于 GUI 的 ftp 客户端,没有发现任何问题。
ftp 服务器是运行在 CentOS 6.4 上的 vsftpd。
ftp 服务器位于 zentyal/ubuntu 机器后面,用作与外界沟通的防火墙。
防火墙上有一个指向 FTP 服务器的 21 端口的 1 对 1 NAT。防火墙使用虚拟 IP 地址与 FTP 服务器进行 NAT。FTP 数据包不会发生地址转换,这意味着连接的客户端的原始源 IP 地址在通过防火墙并进入内部 FTP 服务器时不会改变。
内部连接时,Windows 客户端在连接 ftp 服务器或列出目录时没有问题。
我已将 Filezilla 置于调试模式以收集更详细的日志。似乎目录列表显示在日志中但不完整,并且在列表完成之前超时。
此刻,我不知道该把这称为 Windows 错误还是网络问题。
责怪 Windows 的原因是它只发生在基于 Windows GUI 的客户端上。
归咎于网络的原因是,这种情况仅当您从外部世界进入 ftp 服务器时才会发生。来自基于 Windows GUI 的客户端的内部连接工作正常。
我已经研究并测试了整整两天。我需要另一双全新的眼睛来审视这个问题,看看我遗漏了什么,所以我谦虚地向互联网社区寻求帮助。感谢您抽出时间来帮助我。
答案1
我进行了更多的研究,发现我的防火墙上任何大于 512 MTU 的数据包都会发生碎片化。
无论我在防火墙上将 MTU 设置为何种设置,512 都是我能够在不产生碎片的情况下通过的最大值。
升级防火墙固件解决了该问题。