我们确实在多个数据中心拥有多台服务器。它们都运行相同的 vsftpd 配置,SSL 证书在同一天创建。所有证书都是自签名的,但没有过期,在问题发生之前就可以使用,并且是在很久之前创建的。一些服务器使用的是 Debian 9,其他服务器使用的是 Debian 10。没有防火墙规则。
它们一直运行良好,直到上周的某一天,用户报告说上传的文件已损坏或根本没有上传。
此错误随机发生。我自己可以从家里(Windows 10)上传其他人无法上传的所有文件。
在工作中(Debian 10),我也遇到了同样的问题。然而,客户正在使用各种设备和 ftp 客户端加入。
通过 Web 和 FTP 客户端上传失败,但对于所有类型的用户来说都是随机的。没有一个用户会受到磁盘空间已满的影响,因为我在互联网上搜索时看到的问题有时就是这种情况。
经过一些调试后,我发现上传只是停留在 STORE 命令上:
Tue Oct 29 15:17:13 2019 [pid 44321] [TestUser123] FTP command: Client "123.123.123.123", "PASV"
Tue Oct 29 15:17:13 2019 [pid 44321] [TestUser123] FTP response: Client "123.123.123.123", "227 Entering Passive Mode (321,321,321,321,182,14)."
Tue Oct 29 15:17:13 2019 [pid 44321] [TestUser123] FTP command: Client "123.123.123.123", "STOR UltraCore_v2.2.0.phar"
Tue Oct 29 15:17:13 2019 [pid 44321] [TestUser123] FTP response: Client "123.123.123.123", "150 Ok to send data."
Tue Oct 29 15:17:13 2019 [pid 44320] [TestUser123] DEBUG: Client "123.123.123.123", "SSL version: TLSv1.3, SSL cipher: TLS_AES_256_GCM_SHA384, reused, no cert"
Tue Oct 29 15:17:34 2019 [pid 44437] CONNECT: Client "123.123.123.123"
Tue Oct 29 15:17:34 2019 [pid 44437] FTP response: Client "123.123.123.123", "220 (vsFTPd 3.0.3)"
123.123.123.123 是客户端,321.321.321.321 是服务器 IP。如您所见,上传在 20 秒后失败(超时),然后重新创建连接。此时,ftp 客户端要求我覆盖该文件。确实有一个大小为 0 字节的文件,以我尝试上传的文件命名。
目录列表、下载文件和所有其他操作都运行正常。只有上传有时会像这样失败。
在与 ftp 客户端重新连接几次并等待几分钟后,ftp 客户端显示“1 次传输失败”。查看服务器,它当时处于完整大小。然而,情况并非总是如此,只有我多次重新连接时才会出现这种情况。