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/localhost에서 연결하면 제대로 작동합니다.

답변1

FTP는 끔찍한 프로토콜입니다. 두 개의 포트를 사용합니다. 하나는 명령용이고 다른 하나는 데이터용입니다. 이는 라우터가 명령 채널을 구문 분석하고 FTP 세션에 두 번째 연결이 필요한지 파악해야 하기 때문에 NAT를 매우 어렵게 만듭니다. 이렇게 하는 것은 보기 흉하지만 NAT가 FTP와 작동하도록 하는 유일한 방법입니다.

FTPS암호화명령 채널을 사용하면 라우터가 패킷을 검사하고 데이터 채널이 어디에 있는지 알아내는 것이 불가능해집니다. 분명히 이것은 이를 해석할 수 없다는 것을 의미합니다. 따라서 클라이언트에 의해 데이터 채널이 시작되면(PASV에서 요구하는 대로) NATting 라우터는 이를 어떻게 해야 할지 알 수 없습니다. FTP 작동 방식으로 인해 이 문제를 해결할 수 있는 방법이 없습니다.

FTP에 "아니요"라고 말하고 SFTP 또는 이와 유사한 것을 사용하세요(SSH를 통해 파일을 터널링하므로 TCP 연결만 필요함). 오늘날 대부분의 그래픽 FTP 클라이언트는 SFTP도 지원합니다.

관련 정보