[résolu]Proftpd : Virtualhost inacessible

Bonjour à tous,

j’ai configuré mon Proftpd sur ma debian sarge avec un virtualhost sur le port 4000. Tout marche bien sur le lan j’arrive à m’y connecter, par contre quand j’essaye depuis internet j’obtiens l’erreur suivante :

[quote]

Réponse : 257 “/” is current directory.
Commande : TYPE A
Réponse : 200 Type set to A
Commande : PORT 192,168,0,14,4,90
Réponse : 500 Illegal PORT command
Erreur : N’a pas pu récupérer la liste du répertoire[/quote]

j’utilise filezilla comme client et le mode passif est desactivé.
Mon routeur renvoi bien le port 4000 vers mon serveur.
Je sais que le port 21 & 20 sont normalement utilisé, cependant pour un virtual host n’utilise qu’un seul port ?

Merci d’avance

Romgo

Personne n’a une petite idée ?

merci d’avance
romgo

Tu as regardé les droits du répertoire si il pouvait etre visible par tout le monde??

La commande PORT est typique d’une commande en mode passif.

As tu essayé en mettant justement le client en mode passif ?

en fait quand j’ai ce message d’erreur le client est configuré sans le mode passif activé.

Quand j’active le mode passif sur le client j’ai :

[quote]Réponse : 257 “/” is current directory.
Commande : TYPE A
Réponse : 200 Type set to A
Commande : PASV
Réponse : 227 Entering Passive Mode (10,20,30,40,132,129).
Commande : LIST
Réponse : 421 No Transfer Timeout (300 seconds): closing control connection.
Erreur : Déconnecté du serveur
Erreur : N’a pas pu récupérer la liste du répertoire
Erreur : Inactivité détectée ![/quote]

et la plus rien.
le droit sur le dossier est 775
faut-il que j’active le ftp passif sur proftpd ?

les droits et la config doivent être à peu prés bonnes puisque tu fonctionnes sur le lan.
Donc fais unnetstat -tplpour voir si ton ftp écoute bien vers le net.
Ta machine écoute d’un coté vers ton lan et de l’autre vers le net ? Elle fait passerelle, c’est ça ?

As tu autoriser le port ftp-data à ouvrir une connexion sur l’extérieur??

Je me suis mélangé, la commande port transmet un numéro de port sur lequel le serveur fait sa connexion à partir de ftp-data. Mais pour cela il faut qu’il soit autoriser à faire ouvrir une connexion vers l’extérieur.

ma machine est dans le lan, j’ai une IPCOP qui fait firewall/routeur.

quand je fais un netstat -tpl j’ai bien la ligne :

sur mon IPCOP j’ai bien transferet le port 4000 vers mon serveur.
J’ai aussi le port 21(ftp) et 20 (ftp-data) qui renvoi vers ce même serveur (d’ailleur quand je me connecte à mon home avec le port 21 ça passe sans problème.

mais normalement le port par defaut sera le port 20 or je n’ai aucun problème avec ce port. Ce peut-il qu’il essaye d’utiliser un autre port ?

Ce que je veux dire c’est que quand tu fais un serveur ftp, il faut que les ports 21 et 20 soient transférés sur le serveur, que les connexions en entrées soit autoriser sur le port 21 (en clair ouvrir le port 21) et autoriser le port 20 à créer une connexion en sortie (autoriser le port 20 en OUTPUT). Sinon, tu fais du passif…, dans ce cas, tu autorises le port 21 à créer des connexions en sortie (OUTPUT).

sur ton ipcop, tu as moyen de vérifier que le module ‘ip_nat_ftp’ est bien activé ?

en gros sur l’ipcop il n’y a que le 21 à rediriger c’est bien ca ?

Hum, voilà deux connexions FTP, l’une en actif, l’autre en passif:

Donc il faut autoriser les ports ftp en entrée et ftp-data en sortie et transférer les ports.

[quote]
22:16:03.062015 client.33339 > serveur.ftp
22:16:03.063272 serveur.ftp > client.33339
22:16:03.063302 client.33339 > serveur.ftp

là c’est client le client qui va ouvrir une connexion sur un port donné par le serveur (ici 8928)

22:16:03.063348 client.33355 > serveur.8928
22:16:03.063489 serveur.8928 > client.33355
22:16:03.063505 client.33355 > serveur.8928
22:16:03.063529 client.33339 > serveur.ftp
22:16:03.099027 serveur.ftp > client.33339
22:16:03.110162 serveur.8928 > client.33355
22:16:03.110200 client.33355 > serveur.8928
22:16:03.110286 serveur.8928 > client.33355
22:16:03.110343 client.33355 > serveur.8928
22:16:03.110384 serveur.8928 > client.33355
22:16:03.110448 client.33355 > serveur.8928

22:16:03.119535 client.33355 > serveur.8928
22:16:03.130455 client.33339 > serveur.ftp
22:16:03.135648 serveur.8928 > client.33355
22:16:03.135730 serveur.ftp > client.33339
22:16:03.135750 client.33339 > serveur.ftp
22:16:04.939574 client.33339 > serveur.ftp
22:16:04.952525 serveur.ftp > client.33339
22:16:04.952561 client.33339 > serveur.ftp
22:16:04.952714 serveur.ftp > client.33339
22:16:04.952732 client.33339 > serveur.ftp
22:16:04.952935 client.33339 > serveur.ftp
22:16:04.964948 serveur.ftp > client.33339
22:16:04.964984 client.33339 > serveur.ftp [/quote]

Donc j’avais dit une annerie (le FTP, je me mélange systématiquement!) En mode passif, le client ouvre une connexion sur un port proposé par le serveur (ici 8928). Ce mode nécessite donc soit le transfert de tous les ports vers le serveur, soit un transfert dynamique par iptables. En mode non passif, il suffit donc

  1. de faire le transfert des ports 20 et 21
  2. d’autoriser le port 20 en sortie et le port 21 en entrée.

En fait les connexions de mon serveur => internet sont libres il n’y a pas de restrictions.

en fait si j’ai bien compris je n’ai pas besoin de routeur le port 20 vers mon serveur puisque ce port est utilisé dans l’autre sens serveur=> client.

le module ip_nat_ftp est bien activé :
ip_nat_ftp 2448 0 (unused)

romgo

A priori oui, ça devrait fonctionner. Essayes de faire un

tcpdump port 20 or port 21

(et tu laisses)

sur le serveur pour voir ce qui se passe. Au besoin, donne le résultat ici

voila la capture que j’ai fais sur le port 4000

[quote]tcpdump port 20 or port 21 or port 4000
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
15:06:30.080295 IP d03m-62-34-107-72.d4.club-internet.fr.2296 > nina.godzilan.4000: S 1623617586:1623617586(0) win 16384 <mss 1452,nop,nop,sackOK>
15:06:30.080342 IP nina.godzilan.4000 > d03m-62-34-107-72.d4.club-internet.fr.2296: S 3828092003:3828092003(0) ack 1623617587 win 5840 <mss 1460,nop,nop,sackOK>
15:06:30.161302 IP d03m-62-34-107-72.d4.club-internet.fr.2296 > nina.godzilan.4000: . ack 1 win 17424
15:06:40.163012 IP nina.godzilan.4000 > d03m-62-34-107-72.d4.club-internet.fr.2296: P 1:65(64) ack 1 win 5840
15:06:40.239160 IP d03m-62-34-107-72.d4.club-internet.fr.2296 > nina.godzilan.4000: P 1:13(12) ack 65 win 17360
15:06:40.239185 IP nina.godzilan.4000 > d03m-62-34-107-72.d4.club-internet.fr.2296: . ack 13 win 5840
15:06:40.239517 IP nina.godzilan.4000 > d03m-62-34-107-72.d4.club-internet.fr.2296: P 65:99(34) ack 13 win 5840
15:06:40.325543 IP d03m-62-34-107-72.d4.club-internet.fr.2296 > nina.godzilan.4000: P 13:28(15) ack 99 win 17326
15:06:40.328136 IP nina.godzilan.4000 > d03m-62-34-107-72.d4.club-internet.fr.2296: P 99:126(27) ack 28 win 5840
15:06:40.413485 IP d03m-62-34-107-72.d4.club-internet.fr.2296 > nina.godzilan.4000: P 28:34(6) ack 126 win 17299
15:06:40.413620 IP nina.godzilan.4000 > d03m-62-34-107-72.d4.club-internet.fr.2296: P 126:145(19) ack 34 win 5840
15:06:40.484034 IP d03m-62-34-107-72.d4.club-internet.fr.2296 > nina.godzilan.4000: P 34:40(6) ack 145 win 17280
15:06:40.484133 IP nina.godzilan.4000 > d03m-62-34-107-72.d4.club-internet.fr.2296: P 145:160(15) ack 40 win 5840
15:06:40.484145 IP nina.godzilan.4000 > d03m-62-34-107-72.d4.club-internet.fr.2296: P 160:170(10) ack 40 win 5840
15:06:40.559941 IP d03m-62-34-107-72.d4.club-internet.fr.2296 > nina.godzilan.4000: . ack 170 win 17255
15:06:40.559953 IP nina.godzilan.4000 > d03m-62-34-107-72.d4.club-internet.fr.2296: P 170:206(36) ack 40 win 5840
15:06:40.661548 IP d03m-62-34-107-72.d4.club-internet.fr.2296 > nina.godzilan.4000: P 40:45(5) ack 206 win 17219
15:06:40.661670 IP nina.godzilan.4000 > d03m-62-34-107-72.d4.club-internet.fr.2296: P 206:237(31) ack 45 win 5840
15:06:40.740397 IP d03m-62-34-107-72.d4.club-internet.fr.2296 > nina.godzilan.4000: P 45:53(8) ack 237 win 17188
15:06:40.740496 IP nina.godzilan.4000 > d03m-62-34-107-72.d4.club-internet.fr.2296: P 237:256(19) ack 53 win 5840
15:06:40.888507 IP d03m-62-34-107-72.d4.club-internet.fr.2296 > nina.godzilan.4000: P 53:59(6) ack 256 win 17169
15:06:40.888680 IP nina.godzilan.4000 > d03m-62-34-107-72.d4.club-internet.fr.2296: P 256:306(50) ack 59 win 5840
15:06:40.970024 IP d03m-62-34-107-72.d4.club-internet.fr.2296 > nina.godzilan.4000: P 59:65(6) ack 306 win 17119
15:06:41.009744 IP nina.godzilan.4000 > d03m-62-34-107-72.d4.club-internet.fr.2296: . ack 65 win 5840
[/quote]

je ne vois rien d’anormal dans ces trames?!
le problème ne viendrait pas plutot de mon IPCOP ?

j’ai trouvé un post sur un autre forum ou une personne a le même probleme que moi :
http://forum.2037.biz/sujet-regle-proftpd-reponse-500-illegal-port-command-post29887.html

apparament il a juste fait un

[quote]MasqueradeAddress mon-ip-publique
PassivePorts 50000 50010 [/quote]

c’est donc ce que j’ai fais, j’ai rajouté dans mon virtualHost.

[quote]Starting ProFTPD ftp daemon: nina.godzilan - 10.20.30.40:4000 masquerading as 81.x.53.x
proftpd.
[/quote]
je suppose que ça configure le serveur ftp en mode passif. pourtant j’ai tjrs le même message :

[quote]Réponse : 227 Entering Passive Mode (81,64,53,104,195,89).
Commande : LIST
Erreur : Le canal de transfert n’a pas pu être ouvert. Raison : Une tentative de connexion a échoué car le parti connecté n’a pas répondu convenablement au-delà d’une certaine durée ou une connexion établie a échoué car l’hôte de connexion n’a pas répondu.
Erreur : N’a pas pu récupérer la liste du répertoire
[/quote]

c’est bon j’ai réussi !! voila la solution :

modifier le proftpd.conf avec les ligne suivantes dans le virtualhost :
MasqueradeAddress mon-ip-publique
PassivePorts 50000 50010

Configurer le routeur/firewall pour qu’il accepte les connections sur la plage de port
50000 50010

Merci pour votre aide :wink:

[resolu] dans le titre SVP