Vérificateur de plage de ports passifs FTP

Vérifiez que la plage de ports du mode passif de votre serveur FTP est ouverte et joignable à travers les pare-feux. Indispensable pour diagnostiquer les erreurs « unable to open data connection ».

Préréglages :

Qu'est-ce que le mode passif ?

En mode passif FTP (PASV), le serveur ouvre un port aléatoire à numéro élevé pour les transferts de données et indique au client à quel port se connecter. Si un pare-feu bloque ces ports, les transferts de fichiers échouent alors même que la connexion de contrôle sur le port 21 fonctionne parfaitement.

La connexion de contrôle sur le port 21 traverse le pare-feu, mais la seconde connexion de données vers le port 50000 est bloquée ; la réponse 227 du serveur code le port sous la forme 195 x 256 + 80
Ce n'est pas la connexion de contrôle qui échoue - et la réponse 227 vous indique quel port ouvrir.

Plages de ports passifs courantes

Plage Utilisée par
49152–65535Plage dynamique/éphémère de l'IANA (par défaut sur de nombreux serveurs)
40000–40100Plage personnalisée courante (cPanel, Plesk)
30000–31000Plage personnalisée courante (par défaut sur FileZilla Server)

Mode actif ou mode passif

FTP utilise deux connexions : une connexion de contrôle sur le port 21 pour les commandes, et une connexion de données distincte pour chaque transfert de fichier et chaque listage de répertoire. Le mode détermine quel côté ouvre cette seconde connexion.

Mode actif (PORT) Mode passif (PASV)
Qui ouvre la connexion de donnéesLe serveur, en retour vers le clientLe client, vers le serveur
Ce que le client envoiePORT (ou EPRT) avec sa propre adresse et son propre portPASV (ou EPSV)
Ce qui doit être joignableUn port sur le client - que les box internet et les pare-feux d'entreprise bloquentLa plage de ports passifs du serveur
Qui l'utiliseLe ftp.exe intégré à Windows, les vieux scriptsPresque tous les clients modernes, par défaut

Le mode passif n'a besoin que de connexions sortantes depuis le client : c'est pour cela qu'il fonctionne derrière un NAT et que les clients modernes l'utilisent par défaut. Le travail se déplace vers le serveur : son pare-feu doit laisser entrer les clients sur toute la plage passive, pas seulement sur le port 21.

Lire la réponse 227

Le serveur répond à PASV par six nombres, par exemple 227 Entering Passive Mode (203,0,113,10,195,80). Les quatre premiers forment l'adresse IP à laquelle se connecter. Les deux derniers donnent le port : 195 x 256 + 80 = 50000. Deux choses tournent souvent mal :

  • Le port est hors de la plage autorisée par le pare-feu. Réglez la plage passive du serveur sur celle que vous avez ouverte, ou ouvrez la plage que le serveur utilise réellement.
  • L'adresse est une adresse privée, comme 192.168.1.10, parce que le serveur se trouve derrière un NAT et annonce son adresse interne. Les clients se figent alors à chaque listage de répertoire. Indiquez au serveur son adresse publique avec les réglages ci-dessous ; certains clients contournent le problème en réutilisant l'adresse du serveur, mais la correction doit se faire sur le serveur.

Avec EPSV, la réponse est 229 Entering Extended Passive Mode (|||50000|) : seulement le port, pas d'adresse, donc le problème d'adresse privée disparaît. Le port doit quand même être ouvert.

Régler la plage passive sur les serveurs courants

  • vsftpd - dans vsftpd.conf : pasv_min_port=40000, pasv_max_port=40100, et pasv_address réglé sur l'IP publique quand le serveur est derrière un NAT.
  • ProFTPD - PassivePorts 40000 40100, plus MasqueradeAddress pour l'adresse publique.
  • Pure-FTPd - PassivePortRange 40000 40100 et ForcePassiveIP.
  • FileZilla Server - ses réglages du mode passif acceptent une plage de ports personnalisée et l'IP publique à annoncer.
  • IIS - au niveau du serveur, dans Prise en charge du pare-feu FTP (FTP Firewall Support) : la plage de ports du canal de données et l'adresse IP externe du pare-feu. Il peut être nécessaire de redémarrer le service FTP pour qu'une nouvelle plage soit prise en compte.

Ouvrez ensuite la même plage en TCP partout devant le serveur - pare-feu du système d'exploitation, groupe de sécurité dans le cloud, redirection de ports du routeur - puis testez quelques ports de cette plage avec le vérificateur ci-dessus.

Comment lire le résultat

Ouvert signifie qu'une connexion TCP vers ce port a été acceptée depuis Internet : rien ne la bloque en chemin. Pas de réponse signifie généralement qu'un pare-feu a silencieusement abandonné la tentative. Fermé signifie que quelque chose a répondu par un refus - souvent le serveur lui-même, car beaucoup de serveurs FTP n'écoutent sur un port passif qu'un court instant après l'envoi d'un PASV par un client.

Sur un serveur au repos, des ports fermés dans la plage sont donc normaux ; c'est une plage entière sans réponse qui doit vous alerter. La preuve finale, c'est un listage de répertoire en mode passif depuis un vrai client : si la connexion réussit puis que le listage se fige, c'est la connexion de données qui est bloquée. Le testeur de connexion FTP vérifie la première moitié : que le serveur répond et accepte vos identifiants.