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)。この問題は、同じ OS を使用している別のネットワーク上の他のユーザーから報告されました。

問題は、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

私は同じバージョンの FileZilla を使用して、同じ Wi-Fi ネットワーク上の別の MacBook (Intel) で macOS Big Sur 11.2 でこれをテストしましたが、問題なく動作しました。

また、M1 Big Sur 11.4 および 11.5 では、Chrome が「接続タイムアウト」になることがあり、SSH 経由で接続することもできないことに気付きました。TCP に問題があるのではないかと思います。

アップデート: Wireshark でトラフィックをチェックしたところ、何らかの理由で TCP SYN パケットが 1 つあり、Big Sur 11.2 では FTP サーバーから SYN ACK を受信して​​いるようです。Big Sur 11.4 および 11.5 では TCP SYN はありますが、サーバーからの ACK 応答はありません。サーバーは SYN を受信しますが、そのパケットに ACK で応答しません。

答え1

この問題は CentOS 側の設定によって発生しました。11.2 では問題なく動作していたため、Big Sur 11.3 以降に影響がありました。Windows 10 でも問題なく動作しました。

修正者:

sysctl -w net.ipv4.tcp_tw_recycle=0

関連情報