WSL2 下 `PUT` FTP 命令的问题(通过 VPN)

WSL2 下 `PUT` FTP 命令的问题(通过 VPN)

当我尝试将 HTML 文件传输到在 IIS 10 下运行的 FTP 服务器时,在 WSL2 下遇到了 FTP 问题。

发出PUT命令后,它卡在“正在等待传输完成”几分钟后它输出“425 由于未满足最低带宽要求,数据通道超时。”

由于某种原因,相同的脚本在 WSL1 下运行良好。

以下是 FTP 会话的示例:

user-name@DESKTOP:~/$ ftp -p
ftp> open
(to) my-ftp-server.com
Connected to my-ftp-server.com.
220 Microsoft FTP Service
Name (my-ftp-server.com:user-name): my-ftp-server.com|remote-ftp-user
331 Password required
Password:
230 User logged in.
Remote system type is Windows_NT.
ftp> dir
227 Entering Passive Mode (10,150,1,82,213,210).
125 Data connection already open; Transfer starting.
226 Transfer complete.
ftp> lcd _site
Local directory now /home/user-name/_site
ftp> put index.html
local: index.html remote: index.html
227 Entering Passive Mode (10,150,1,82,213,212).
125 Data connection already open; Transfer starting.
425 Data channel timed out due to not meeting the minimum bandwidth requirement.
23114 bytes sent in 0.00 secs (145.0212 MB/s)

此外,IIS 上的 FTP 服务器锁定了正在传输的文件,需要通过任务管理器将其终止(无法通过“服务”停止)才能再次尝试。

Wireshark 分析

我捕获了 WSL1 和 WSL2 中 WSL 与 FTP 服务器之间交换的数据包。消息序列相同,这意味着 FTP 客户端/服务器可能没有任何问题。

VPN 客户端

我怀疑这与 FTP 服务器通过 VPN 访问,而 VPN 客户端 (FortiClient) 在主机 Windows 机器上运行有关。由于 WSL2 使用自己的虚拟网络适配器,Windows 需要进行 NAT。出于某种原因,返回消息“传输完成”被丢弃,导致 FTP 客户端等待超时。

相关内容