我正在使用pyftpdlib
python ftp 服务器和 filezilla 作为客户端:我的一些同事无法上传任何文件,而我却完全没有问题。
我检查了 filezilla 调试日志,发现了一个我不理解的奇怪行为
Command: PASV
Trace: CFtpControlSocket::OnReceive()
Response: 227 Entering passive mode (185,125,25,44,207,87).
Trace: CFtpRawTransferOpData::ParseResponse() in state 2
Trace: CControlSocket::SendNextCommand()
Trace: CFtpRawTransferOpData::Send() in state 4
Trace: Binding data connection source IP to control connection source IP 10.8.8.15
10.8.8.15
是我的 vpn 地址:我在日志的这一部分获取我的 vpn ip 是否正常?
陌生人,当同事无法上传到 ftp 时,他会得到
Command: PASV
Trace: CFtpControlSocket::OnReceive()
Response: 227 Entering passive mode (185,125,25,44,207,87).
Trace: CFtpRawTransferOpData::ParseResponse() in state 2
Trace: CControlSocket::SendNextCommand()
Trace: CFtpRawTransferOpData::Send() in state 4
Trace: Binding data connection source IP to control connection source IP 127.0.0.1
对我来说,filezilla 将数据连接绑定到 127.0.0.1 似乎很奇怪,我认为这解释了为什么上传失败。
这种行为怎么会发生呢?
此外:我不明白问题从何而来:是客户端/服务器/网络问题吗?
仅供参考:我在 pyftpdlib 上编辑的唯一配置指令是:
permit_foreign_addresses: True
use_sendfile: False
ac_in_buffer_size: 1000000
ac_out_buffer_size: 500000
编辑:使用时WinSCP
,行为似乎更加一致
. 2021-06-11 09:02:52.363 Début de l'envoi de C:\Users\pouet\Downloads\181015_13_Venice Beach Drone_11.mp4
> 2021-06-11 09:02:52.363 TYPE I
< 2021-06-11 09:02:52.377 200 Type set to: Binary.
> 2021-06-11 09:02:52.377 PASV
< 2021-06-11 09:02:52.393 227 Entering passive mode (185,125,25,44,250,39).
> 2021-06-11 09:02:52.393 STOR 181015_13_Venice Beach Drone_11.mp4
. 2021-06-11 09:02:52.393 Connexion à 185.125.25.44:64039...
. 2021-06-11 09:02:52.408 Data connection opened
< 2021-06-11 09:02:52.408 150 File status okay. About to open data connection.
您可以看到客户端尝试连接到正确的 ip/端口,而 filezilla 的行为略有不同(连接到我的网络 iface??)
Commande : TYPE I
Suivi : CFtpControlSocket::OnReceive()
Réponse : 200 Type set to: Binary.
Suivi : CFtpRawTransferOpData::ParseResponse() in state 1
Suivi : CControlSocket::SendNextCommand()
Suivi : CFtpRawTransferOpData::Send() in state 2
Commande : PASV
Suivi : CFtpControlSocket::OnReceive()
Réponse : 227 Entering passive mode (185,125,25,44,211,253).
Suivi : CFtpRawTransferOpData::ParseResponse() in state 2
Suivi : CControlSocket::SendNextCommand()
Suivi : CFtpRawTransferOpData::Send() in state 4
Suivi : Binding data connection source IP to control connection source IP 192.168.1.66
Commande : STOR 181015_13_Venice Beach Drone_11.mp4
Suivi : CTransferSocket::OnConnect
Suivi : First EAGAIN in CTransferSocket::OnSend()
Suivi : CFtpControlSocket::OnReceive()
Réponse : 150 File status okay. About to open data connection.
Suivi : CFtpRawTransferOpData::ParseResponse() in state 4
Suivi : CControlSocket::SendNextCommand()
Suivi : CFtpRawTransferOpData::Send() in state 5
Suivi : Made progress in CTransferSocket::OnSend()
编辑2:
附加日志: