ProFTPd multiports / multiserveurs

Bonjour à tous,

Je me demandais si il était possible de faire du multiport FTP sur une adresse ip publique unique ?

Par multiport je veux dire, est-ce qu’il est possible d’avoir plusieurs serveurs FTP (ProFTPd) sur un réseau local et autoriser la connexion à ceux-ci depuis une adresse ip publique unique ?
Le système des VirtualHosts ne me convenant pas, puisqu’il s’agit d’héberger plusieurs VMs sur un vlan en local.

Est-ce que de simples règles forwarding suffiraient ?

D’avance merci.

C’est possible, mais ça ne marchera pas dans tous les cas.
Et non, des règles iptables de redirection ne suffisent pas.
Tout cela à cause des spécificités du protocole FTP (connexions de données en mode actif/passif).

En plus des règles iptables pour la redirection des ports de commande vers chaque serveur, il faut :

  • spécifier la liste de tous ces ports au module nf_conntrack_ftp lors de son chargement (cf. modinfo nf_conntrack_ftp) ;
  • ou bien définir une plage de ports passifs différente sur chaque serveur, configurer les serveurs pour annoncer l’adresse publique comme adresse passive et créer des redirections pour ces plages de ports sur le routeur.

Malgré cela, cela peut ne pas fonctionner si le client est derrière un pare-feu ou NAT, notamment en FTP mode actif et même en mode passif si les connexions sortantes sont filtrées.

si ça peut t’aider,j’ai deux serveurs proftpd derrière ma livebox,un serveur sur le port 21 et l’autre sur un autre port,chacun avec une plage de ports pasv différente et les requêtes se font sur le nom de domaine en précisant le port,et tout fonctionne.

j’ai oublié de préciser que je redirige les ports bien entendu.

Merci pour vos réponses

Ah oui, les règles ressemblent à quoi ? Tu “forward” les plages de ports passifs aussi du coup ?

[quote=“PascalHambourg”]
En plus des règles iptables pour la redirection des ports de commande vers chaque serveur, il faut :

  • spécifier la liste de tous ces ports au module nf_conntrack_ftp lors de son chargement (cf. modinfo nf_conntrack_ftp) ;
  • ou bien définir une plage de ports passifs différente sur chaque serveur, configurer les serveurs pour annoncer l’adresse publique comme adresse passive et créer des redirections pour ces plages de ports sur le routeur.

Malgré cela, cela peut ne pas fonctionner si le client est derrière un pare-feu ou NAT, notamment en FTP mode actif et même en mode passif si les connexions sortantes sont filtrées.[/quote]

Je viens de :

  • définir des plages de ports passifs différentes pour chaque serveur
  • créer des règles iptables pour ces plages de ports
  • configurer le masquerading sur l’adresse publique

et effectivement ça n’a pas l’air de fonctionner…

un serveur écoute les requêtes sur le port 21 et l’autre écoute sur un port qui doit être différent de 21,et je forward les plages et les ports d’écoute.

C’est exactement ce que j’ai fait, la connexion se fait mais reste bloquée à :

Commande : TYPE I Réponse : 200 Type paramétré à I Commande : PASV Réponse : 227 Entering Passive Mode (192,168,8,4,248,237). Statut : Le serveur a envoyé une réponse passive avec une adresse non routable. Adresse remplacée par celle du serveur. Commande : MLSD

Ça, c’est parce que tu as sauté l’étape “configurer les serveurs pour annoncer l’adresse publique comme adresse passive”. Heureusement ton client FTP est malin et corrige de lui-même.
Mais la première méthode avec le module était plus simple à mettre en oeuvre, je trouve.

Il ne se passe rien ensuite, pas de message d’erreur même après un délai ?
S’il y a du filtrage sur la machine qui fait le NAT ou sur les serveurs, les plages de ports passifs ont-elles été autorisées en traversée depuis l’extérieur sur la machine qui fait le NAT et entrée sur les serveurs ?

[quote=“PascalHambourg”]
Il ne se passe rien ensuite, pas de message d’erreur même après un délai ?[/quote]

Si, le client reste connecté et affiche :

Erreur : Délai d'attente expiré Erreur : Impossible de récupérer le contenu du dossier

[quote=“PascalHambourg”]
S’il y a du filtrage sur la machine qui fait le NAT ou sur les serveurs, les plages de ports passifs ont-elles été autorisées en traversée depuis l’extérieur sur la machine qui fait le NAT et entrée sur les serveurs ?[/quote]

Ouep tout est autorisé à ce niveau.

Le pire c’est que la connexion se fait sur le port 21, donc sur un premier FTP sur la même adresse ip mais pas sur le port 2221 qui appartient au 2nd serveur FTP, celui qui affiche le délai d’attente expiré…

Ça sent quand même bien le problème de filtrage, ou bien la redirection qui ne se fait pas vers la bonne adresse.
Tu peux faire des traceroute TCP (en tcptraceroute ou équivalent) vers des ports de la plage passive du second serveur, et voir où ça coince ? Idéalement en faisant une capture de trafic sur le routeur à l’entrée et à la sortie, avant et après la redirection.

[quote]Arrakeen a écrit:
Le pire c’est que la connexion se fait sur le port 21, donc sur un premier FTP sur la même adresse ip mais pas sur le port 2221 qui appartient au 2nd serveur FTP, celui qui affiche le délai d’attente expiré[/quote]

rectificatif:idem chez moi,la connection sur un serveur ftp avec un port autre que 21 ne fonctionne pas;donc j’ai dit une connerie.Sur mon réseau j’ai deux serveurs ftp,un sur le port 21 et l’autre sur le port xxxx,le port xxxx ne marche pas,je peux bien me logger mais pas de listing du répertoire.Avant quand j’avais une livebox inventel ça fonctionnait mais avec une sagem ça ne passe plus :119 :119
Les requêtes se font sur mon nom de domaine avec port forwarding,mais pas de connection sur un port ftp différent de 21

[quote=“marcastro”]
rectificatif:idem chez moi,la connection sur un serveur ftp avec un port autre que 21 ne fonctionne pas;donc j’ai dit une connerie.Sur mon réseau j’ai deux serveurs ftp,un sur le port 21 et l’autre sur le port xxxx,le port xxxx ne marche pas,je peux bien me logger mais pas de listing du répertoire.Avant quand j’avais une livebox inventel ça fonctionnait mais avec une sagem ça ne passe plus :119 :119
Les requêtes se font sur mon nom de domaine avec port forwarding,mais pas de connection sur un port ftp différent de 21[/quote]

Ahhhh, c’est donc impossible ?..
J’ai tout revérifié ce matin, toutes les règles, tous les ports ouverts, “forwardés” etc… Tout est bon mais rien ne marche !

[quote=“PascalHambourg”]
Malgré cela, cela peut ne pas fonctionner si le client est derrière un pare-feu ou NAT, notamment en FTP mode actif et même en mode passif si les connexions sortantes sont filtrées.[/quote]

Effectivement je pense qu’on s’y retrouve et même si les connexions sortantes ne sont pas filtrées j’ai l’impression…

C’est possible, mais comme je l’ai écrit plus haut ça ne marche pas toujours.

Tu as juste vérifié les configurations ou bien opérationnellement, par exemple avec un traceroute TCP comme j’avais suggéré ?