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 ...)と同じポートを使用しますが、どこから来ますか?


Webデザインは次のとおりです。

    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から接続すると正常に動作します。

ベストアンサー1

FTPはひどいプロトコルです。 2つのポートを使用してください。 1つはコマンド用で、もう1つはデータ用です。これは、ルータがコマンドチャネルを解析し、FTPセッションに2番目の接続が必要かどうかを判断する必要があるため、NATを非常に困難にします。これを行うのは面倒ですが、NATがFTPと連携する唯一の方法です。

FTPS暗号化コマンドチャネルを使用すると、ルータがパケットをチェックし、データチャネルがどこにあるかを判断することができなくなります。明らかに、これはこれを解釈できないことを意味します。したがって、クライアントがデータチャネルを起動すると(PASVが要求するように)、NATtingルータはこれを行う方法を知ることができません。 FTPの仕組みのため、この問題を解決する方法はありません。

FTPに「いいえ」と言ってSFTPなどを使用してください(SSH経由でファイルをトンネリングするため、TCP接続のみが必要です)。今日、ほとんどのグラフィカルFTPクライアントはSFTPもサポートしています。

おすすめ記事