最近我注意到 macOS Big Sur 11.4 和 11.5 (Mac M1) 出现了一个奇怪的问题,无论我使用哪个 FTP 客户端,都会出现同样的问题。(CyberDuck、FileZilla 或只是普通的旧 MC)。具有相同操作系统的不同网络上的其他用户向我报告了问题。
问题是 FTP 客户端将挂起 MLSD 命令并超时。有时您可以列出几个目录,几秒钟后它会自行锁定。
与 TLS 或只是普通 FTP 的行为相同。MLSD 后没有网络活动。用 Wireshark 检查。
12:06:29 Response: 257 "/public_html" is your current location
12:06:29 Trace: CFtpChangeDirOpData::ParseResponse() in state 5
12:06:29 Trace: CFtpControlSocket::ResetOperation(0)
12:06:29 Trace: CControlSocket::ResetOperation(0)
12:06:29 Trace: CFtpChangeDirOpData::Reset(0) in state 5
12:06:29 Trace: CFtpListOpData::SubcommandResult(0) in state 1
12:06:29 Trace: CControlSocket::SendNextCommand()
12:06:29 Trace: CFtpListOpData::Send() in state 2
12:06:29 Trace: CFtpRawTransferOpData::Send() in state 0
12:06:29 Trace: CFtpRawTransferOpData::Send() in state 2
12:06:29 Command: PASV
12:06:29 Trace: tls_layer_impl::on_read()
12:06:29 Trace: CFtpControlSocket::OnReceive()
12:06:29 Response: 227 Entering Passive Mode (*,*,*,*,133,42)
12:06:29 Trace: CFtpRawTransferOpData::ParseResponse() in state 2
12:06:29 Trace: CControlSocket::SendNextCommand()
12:06:29 Trace: CFtpRawTransferOpData::Send() in state 4
12:06:29 Trace: Binding data connection source IP to control connection source IP 192.168.1.145
12:06:29 Trace: tls_layer_impl::client_handshake()
12:06:29 Trace: Trying to resume existing TLS session.
12:06:29 Command: MLSD
我确实使用 macOS Big Sur 11.2 和不同的 MacBook(英特尔)在相同的 Wifi 网络上使用相同版本的 FileZilla 进行了测试,它可以正常工作。
我还注意到,在 M1 Big Sur 11.4 和 11.5 上,Chrome 有时会出现“连接超时”,并且我也无法通过 SSH 连接。我敢打赌 TCP 有问题。
更新:所以我用 Wireshark 检查了流量,看起来由于某种原因有一个 TCP SYN 数据包,并且在 Big Sur 11.2 上,我从 FTP 服务器接收到 SYN ACK。Big Sur 11.4 和 11.5 有 TCP SYN 但没有来自服务器的 ACK 响应。服务器将收到 SYN 芽不会用 ACK 响应该数据包。