通过 SOCKS5 代理的 FTP 服务器只能通过 Firefox 列出,无法通过 FTP 客户端列出

通过 SOCKS5 代理的 FTP 服务器只能通过 Firefox 列出,无法通过 FTP 客户端列出

我尝试从通过 SOCKS5 代理 (ssh -D) 连接的 FTP 服务器检索文件夹。配置 Firefox (v20、v22) 以使用 SOCKS5 代理时,我可以毫无问题地浏览 ftp 服务器的内容。但是,我需要下载的是一个包含大量内容的文件夹,而 Firefox 用户界面仅提供单个文件下载,这在这种情况下很麻烦。因此,我尝试使用被动模式使用 filezilla 连接到此 ftp 服务器,一切正常,直到 filezilla 发出 MLSD 命令,此时 ftp 服务器没有响应。

Status: Connecting to XXX through proxy
Status: Connecting to 127.0.0.1:9999...
Status: Connection with proxy established, performing handshake...
Status: Connection established, waiting for welcome message...
Response:   220 ProFTPD 1.3.4a Server (TiNT) [::X]
Command:    USER anonymous
Response:   331 Authentification anonyme OK, envoyez votre adresse de courriel complète comme mot de passe
Command:    PASS **************
Response:   230 Accès anonyme autorisé, application des restrictions
Command:    SYST
Response:   215 UNIX Type: L8
Command:    FEAT
Response:   211-Features:
Response:    LANG fr-FR.UTF-8*;fr-FR
Response:    MDTM
Response:    MFMT
Response:    TVFS
Response:    UTF8
Response:    MFF modify;UNIX.group;UNIX.mode;
Response:    MLST modify*;perm*;size*;type*;unique*;UNIX.group*;UNIX.mode*;UNIX.owner*;
Response:    SITE MKDIR
Response:    SITE RMDIR
Response:    SITE UTIME
Response:    SITE SYMLINK
Response:    REST STREAM
Response:    SITE COPY
Response:    SIZE
Response:   211 Fin
Command:    OPTS UTF8 ON
Response:   200 UTF-8 activé
Status: Connected
Status: Retrieving directory listing...
Command:    CWD Y
Response:   250 Commande CWD exécutée avec succès
Command:    PWD
Response:   257 Y" est le répertoire courant
Command:    TYPE I
Response:   200 Type paramétré à I
Command:    PASV
Response:   227 Entering Passive Mode (X,224,74).
Command:    MLSD
Status: Connecting to 127.0.0.1:9999...
Status: Connection with proxy established, performing handshake...
Error:  Connection timed out
Error:  Failed to retrieve directory listing

使用 wireshark 嗅探 Firefox 告诉我 Firefox 使用 LIST 而不是 MLSD 作为第一个命令,但我找不到专用的 ftp 客户端嗅探器给我一个由 Firefox 使用的命令的干净列表,而且我不知道在 wireshark 中要查看什么。

关于如何使 filezilla 工作,您有什么想法吗?在 wireshark 中查找什么可以尝试了解 firefox 和 filezilla 的行为差异?

(我不是 ftp 服务器的管理员,所以我无法查看其日志/更改其配置。此 ftp 服务器与我通过 ssh -D 进入的计算机位于同一子网中。

答案1

您应该检查 Firefox 是否使用主动模式 ( PORT) 或被动模式 ( PASV)。它应该是,PASV如果PORT使用,数据连接很可能在代理连接之外完成。

在给定的示例中,服务器/代理回复了 ,PASVX,224,74转换为X:57418(224 * 256 + 74)。您应该检查通过代理的连接是否正确转发,因此您应该看到从代理/隧道的另一端到 X、端口 57418 的连接请求 - 您可以在tcpdump那个端进行检查。

LIST和之间的唯一区别MLSD是目录列表格式。LIST基本上是自由格式的文本,解析起来很麻烦,而是MLSD一种明确定义的格式,适合机器解析。

我进行了本地测试,在 FileZilla 3.5.3(相当旧的版本)中运行并配置端口ssh -D 12345 localhost上的通用代理。连接成功。localhost12345ftp.kernel.org

Status: Connecting to 127.0.0.1:12345...
Status: Connection with proxy established, performing handshake...
Status: Connection established, waiting for welcome message...
Response:   220 Welcome to kernel.org
Command:    USER anonymous
Response:   331 Please specify the password.
Command:    PASS **************
Response:   230 Login successful.
Command:    SYST
Response:   215 UNIX Type: L8
Command:    FEAT
Response:   211-Features:
Response:    EPRT
Response:    EPSV
Response:    MDTM
Response:    PASV
Response:    REST STREAM
Response:    SIZE
Response:    TVFS
Response:    UTF8
Response:   211 End
Command:    OPTS UTF8 ON
Response:   200 Always in UTF8 mode.
Status: Connected
Status: Retrieving directory listing...
Command:    CWD /pub
Response:   250 Directory successfully changed.
Command:    PWD
Response:   257 "/pub"
Command:    TYPE I
Response:   200 Switching to Binary mode.
Command:    PASV
Response:   227 Entering Passive Mode (198,145,20,140,120,140).
Command:    LIST
Status: Connecting to 127.0.0.1:12345...
Status: Connection with proxy established, performing handshake...
Response:   150 Here comes the directory listing.
Response:   226 Directory send OK.
Status: Directory listing successful

相关内容