在 macOS Big Sur 11.4 和 11.5 中,FTP 客户端(任何)都将在被动模式下挂起在 MLSD 上

在 macOS Big Sur 11.4 和 11.5 中,FTP 客户端(任何)都将在被动模式下挂起在 MLSD 上

最近我注意到 macOS Big Sur 11.4 和 11.5 (Mac M1) 中存在一个奇怪的问题,无论我使用哪个 FTP 客户端,最终都会出现同样的问题。(Cyber​​Duck、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

我确实在同一个 Wifi 网络上使用不同的 MacBook(Intel)的 macOS Big Sur 11.2 和相同版本的 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 响应该数据包。

答案1

问题是由 CentOS 端的配置引起的。这影响了 Big Sur 11.3+,因为 11.2 可以很好地运行。Windows 10 也可以正常运行,没有问题。

修复者:

sysctl -w net.ipv4.tcp_tw_recycle=0

相关内容