Proftpd 不响应“PASV”命令

Proftpd 不响应“PASV”命令

我一直在尝试配置位于 NAT 后面的 FTPS 服务器。因此,我在 NAT (TCP+UDP) 中打开了端口 20、21 以及 2120-2180,并将 proftpd 配置为使用此端口进行被动通信。

然而,尝试使用 FileZilla 连接会导致以下日志:(法语,但实际上很清楚)

Statut :    Résolution de l'adresse de heardrones.com
Statut :    Connexion à 93.30.208.56:21...
Statut :    Connexion établie, attente du message d'accueil...
Réponse :   220 ProFTPD 1.3.5 Server (HEAR Server) [93.30.208.56]
Commande :  USER hear_downloader
Réponse :   331 Mot de passe requis pour hear_downloader
Commande :  PASS ********
Réponse :   230 Utilisateur hear_downloader authentifié
Commande :  OPTS UTF8 ON
Réponse :   200 UTF-8 activé
Statut :    Connecté
Statut :    Récupération du contenu du dossier...
Commande :  PWD
Réponse :   257 "/" est le répertoire courant
Commande :  TYPE I
Réponse :   200 Type paramétré à I
Commande :  PASV
Erreur :    Délai d'attente expiré
Erreur :    Impossible de récupérer le contenu du dossier

它甚至在能够发送“PASV”答案之前就超时了!什么可能导致这种情况? PASV 命令的答案使用与所有其他命令(PWD、TYPE ...)相同的端口,那么它来自哪里?


这是网络设计:

    Server
        Proftpd, no iptables, fix IP 192.168.0.13
        -> (Wifi)
    ISP Box - French ISP (SFR)
        port transfer 20,21,22,2120-2180 to 192.168.0.13
        -> (optic fiber !)
    Internet

如果需要,我可以提供 Box 设置屏幕截图和 proftpd 配置文件。从 LAN/本地主机连接工作正常。

答案1

FTP 是一个可怕的协议。它使用两个端口——一个用于命令,一个用于数据。这使得 NAT 变得非常困难,因为路由器需要解析命令通道并找出该 FTP 会话需要第二个连接。这样做是丑陋的,但也是使 NAT 与 FTP 一起工作的唯一方法。

FTPS加密命令通道,从而使任何路由器都无法检查数据包并找出数据通道的位置。显然,这意味着它将无法解释这一点;因此,当您的数据通道由客户端启动(根据 PASV 的要求)时,您的 NATting 路由器将不知道如何处理它。由于 FTP 的工作方式,无法修复此问题。

只要对 FTP 说“不”,而使用 SFTP 或类似的东西(它通过 SSH 隧道传输文件,因此只需要一个 TCP 连接)。如今,大多数图形 FTP 客户端也支持 SFTP。

相关内容