Ftp
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/Localhost 連接完美。
FTP是一個可怕的協議。它使用兩個埠——一個用於命令,一個用於數據。這使得 NAT 非常困難,因為路由器需要解析命令通道並確定此 FTP 會話需要第二個連接。這樣做很醜陋,但也是使 NAT 與 FTP 一起工作的唯一方法。
FTPS對命令通道進行加密,因此任何路由器都無法檢查數據包並確定數據通道的位置。顯然,這意味著它將無法解釋這一點。因此,當您的數據通道由客戶端啟動時(根據 PASV 的要求),您的 NATting 路由器將不知道如何處理它。由於 FTP 的工作方式,無法解決此問題。
只需對 FTP 說不,而是使用 SFTP 或類似的東西(通過 SSH 隧道傳輸文件,因此只需要一個 TCP 連接)。如今,大多數圖形 FTP 客戶端也支持 SFTP。