![FTP 用戶端(任何)將在 macOS Big Sur 11.4 和 11.5 中以被動模式掛在 MLSD 上](https://rvso.com/image/1654354/FTP%20%E7%94%A8%E6%88%B6%E7%AB%AF%EF%BC%88%E4%BB%BB%E4%BD%95%EF%BC%89%E5%B0%87%E5%9C%A8%20macOS%20Big%20Sur%2011.4%20%E5%92%8C%2011.5%20%E4%B8%AD%E4%BB%A5%E8%A2%AB%E5%8B%95%E6%A8%A1%E5%BC%8F%E6%8E%9B%E5%9C%A8%20MLSD%20%E4%B8%8A.png)
最近,我注意到 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(Intel)在相同的 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 回應該封包。
答案1
問題是由 CentOS 端的配置引起的。這影響了 Big Sur 11.3+,因為 11.2 可以正常工作。 Windows 10 也運作良好,沒有任何問題。
修復者:
sysctl -w net.ipv4.tcp_tw_recycle=0