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もサポートしています。