Ftp

Proftpd 不響應“PASV”命令

  • June 27, 2016

我一直在嘗試配置位於 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/Localhost 連接完美。

FTP是一個可怕的協議。它使用兩個埠——一個用於命令,一個用於數據。這使得 NAT 非常困難,因為路由器需要解析命令通道並確定此 FTP 會話需要第二個連接。這樣做很醜陋,但也是使 NAT 與 FTP 一起工作的唯一方法。

FTPS對命令通道進行加密,因此任何路由器都無法檢查數據包並確定數據通道的位置。顯然,這意味著它將無法解釋這一點。因此,當您的數據通道由客戶端啟動時(根據 PASV 的要求),您的 NATting 路由器將不知道如何處理它。由於 FTP 的工作方式,無​​法解決此問題。

只需對 FTP 說不,而是使用 SFTP 或類似的東西(通過 SSH 隧道傳輸文件,因此只需要一個 TCP 連接)。如今,大多數圖形 FTP 客戶端也支持 SFTP。

引用自:https://unix.stackexchange.com/questions/292285