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 ».
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.
Plages de ports passifs courantes
| Plage | Utilisée par |
|---|---|
| 49152–65535 | Plage dynamique/éphémère de l'IANA (par défaut sur de nombreux serveurs) |
| 40000–40100 | Plage personnalisée courante (cPanel, Plesk) |
| 30000–31000 | Plage 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ées | Le serveur, en retour vers le client | Le client, vers le serveur |
| Ce que le client envoie | PORT (ou EPRT) avec sa propre adresse et son propre port | PASV (ou EPSV) |
| Ce qui doit être joignable | Un port sur le client - que les box internet et les pare-feux d'entreprise bloquent | La plage de ports passifs du serveur |
| Qui l'utilise | Le ftp.exe intégré à Windows, les vieux scripts | Presque 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, etpasv_addressréglé sur l'IP publique quand le serveur est derrière un NAT. - ProFTPD -
PassivePorts 40000 40100, plusMasqueradeAddresspour l'adresse publique. - Pure-FTPd -
PassivePortRange 40000 40100etForcePassiveIP. - 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.