Probleme avec vsftpd et wget

Bonjour a tous,

J’expose donc mon probleme.
Je tourne sous debian tech 4 et j’ai installer vsftpd.
Le port est le 2112, local_user en yes et chroot_local_user aussi.

Je me connecte correctement a mon ftp en local ou a distance sans probleme avec un client ftp quelconque.

Par contre lorsque j’utilise un serveur distant avec cette commande :

Voilà ce qu’il me reponds :

Connexion vers adresse|*.*.*.*|:2112...connecté. Ouverture de session en user...Session établie! ==> SYST ... complété. ==> PWD ... complété. ==> TYPE I ... complété. ==> CWD n'est pas requis. ==> PASV ...
Puis plus rien…

Si quelqu’un a une idée il est le bienvenue =)

Merci.

essayes ton wget en --no-passive-ftp

Merci beaucoup, ca fonctionne.

Si quelqu’un a une idée pour la config du vsftpd.conf ce serait bien aussi.

Merci encore !

Il me semblait que ton serveur vsftp fonctionnait !

Si tu veux une autre configuration, il faudrait préciser laquelle.

Rebonjour,
Effectivement il fonctionne avec n’importe qu’elle client ftp, ce que je ne comprends pas c’est pourquoi wget me fais cette erreur en passive mode.

Filezilla fonctionne tres bien en passive mode.

Merci.

Il ne semble pas que tu sois configuré en passif puisque d’après la sortie de wget, ton serveur ne répond pas à la commande PASV. Du moins c’est ce que l’on pourrait en conclure.

Tu n’as qu’à essayer de te connecter à ton serveur FTP avec telnet en effectuant les différentes commandes de connexions (USER, PASS) et tenter la commande PASV : il devrait te répondre en te donnant le port d’écoute et son adresse ip.

thialme@sid:~$ telnet 192.168.0.1 21 Trying 192.168.0.1... Connected to 192.168.0.1. Escape character is '^]'. 220 (vsFTPd 2.0.5) USER thialme 331 Please specify the password. PASS *************** 230 Login successful. PASV 227 Entering Passive Mode (192,168,0,1,7,217) QUIT 221 Goodbye. Connection closed by foreign host.

La on ne voit que l’adresse d’écoute du serveur et pas le port d’écoute.

Bonjour

J’ai effectue la connection en telnet et voilà ce qure ca donne :

Connection closed by foreign host.
corsica13@sd-8567:~$ *****.no-ip.org 2112
Trying *.*.*.*...
Connected to *****.no-ip.org.
Escape character is '^]'.
220 (vsFTPd 2.0.5)
USER ******
331 Please specify the password.
PASS ********
230 Login successful.
PASV
227 Entering Passive Mode (192,168,1,68,238,90)
QUIT
221 Goodbye.
Connection closed by foreign host.

Donc le passive mode fonctionne je pense.

L’erreur pourrais elle venir du fait de ne pas avoir ouvert le port 20 de mon routeur? car le transfer des data se fais sur le port 20 a en croire le vsftpd.conf.

Merci.

oui.

J’ai ouvert le pot 20
Lorsque j’essaie de me connecter avec filezilla d’une machine distante voilà la reponse :

Etat : Connexion à ********:2112 ... Etat : Connecté à *********:2112. Attente du message d'accueil... Réponse : 220 (vsFTPd 2.0.5) Commande : USER ******** Réponse : 331 Please specify the password. Commande : PASS ********* Réponse : 230 Login successful. Commande : SYST Réponse : 215 UNIX Type: L8 Commande : FEAT Réponse : 211-Features: Réponse : EPRT Réponse : EPSV Réponse : MDTM Réponse : PASV Réponse : REST STREAM Réponse : SIZE Réponse : TVFS Réponse : 211 End Etat : Connecté Etat : Récupération de la liste de répertoires... Commande : PWD Réponse : 257 "/" Commande : TYPE A Réponse : 200 Switching to ASCII mode. Commande : PORT 192,168,1,9,51,245 Réponse : 500 Illegal PORT command. Erreur : N'a pas pu récupérer la liste du répertoire

Là je seche.

tu as une machine linux entre ton client distant et ton serveur ftp ?
Si oui, alors charges dessus le module ip_nat_ftp.
AMA ça marchait avant que tu n’ouvres le port parceque filezilla le détectait et passait en mode passif de lui même.
Si tu fais un essai en forçant le mode passif avec filezilla, avant de monter ip_nat_ftp dans le routeur, tu verras que ça doit fonctionner.

J’ai pas tout lu le thread, j’ai pas trop le temps, mais pour le changement de port pour le control channel, si tu fais du suivi de connexions, il ne faut pas oublié de charger le module nf_conntrack_ftp avec comme argument ton port

où le module ip_conntrack_ftp selon la version de ton noyau.

thialme: ça, c’est pour le suivi, mais ça ne règlera pas le problême d’accés au serveur en mode actif. pour ça, il faut un ip_nat_ftp sur le routeur.

Je disais cela comme cela je sais à quoi il sert, mais il semble qu’il est des problème à mettre en place son serveur FTP.

Cela ferait longtemps qu’il aurait trouvé la solution du problème si il avait sorti un wireshark pour espionner les trames réseaux et voire où cela coincait. A cela un petit coup d’oeil au règles iptables et le tour est joué. Le protocole FTP n’est pas compliqué tout de même, même si on a un firewall. On ne vas pas passer quatre jour à résoudre un petit problème comme celui là tout de même.

Rebonjour, j’ai trouver d’ou vient le probleme, mais pas comment le resoudre.

Enfaite tout est en fonction du port.

Lorsque je met mon ftp sur le port 21: listen_port=21
Tout va bien.

Par contre lorsque j’utilise listen_port=2112
Plus rien ne va, j’ai le meme probleme c’est a dire :

Quelqu’un a une idée ?

Merci.

Debian Tech ! :laughing:

C’est original. :stuck_out_tongue:

Merci, mais ca m’aide pas lol =)))

+++ :smiley:

Je te donne un indice :

[code]static void
handle_port(struct vsf_session* p_sess)
{
unsigned short the_port;
unsigned char vals[6];
const unsigned char* p_raw;
pasv_cleanup(p_sess);
port_cleanup(p_sess);
p_raw = vsf_sysutil_parse_uchar_string_sep(&p_sess->ftp_arg_str, ‘,’, vals,
sizeof(vals));
if (p_raw == 0)
{
vsf_cmdio_write(p_sess, FTP_BADCMD, “Illegal PORT command.”);
return;
}
the_port = vals[4] << 8;
the_port |= vals[5];
vsf_sysutil_sockaddr_clone(&p_sess->p_port_sockaddr, p_sess->p_local_addr);
vsf_sysutil_sockaddr_set_ipv4addr(p_sess->p_port_sockaddr, vals);
vsf_sysutil_sockaddr_set_port(p_sess->p_port_sockaddr, the_port);
/* SECURITY:

    1. Reject requests not connecting to the control socket IP
    1. Reject connects to privileged ports
      */
      if (!tunable_port_promiscuous)
      {
      if (!vsf_sysutil_sockaddr_addr_equal(p_sess->p_remote_addr,
      p_sess->p_port_sockaddr) ||
      vsf_sysutil_is_port_reserved(the_port))
      {
      vsf_cmdio_write(p_sess, FTP_BADCMD, “Illegal PORT command.”);
      port_cleanup(p_sess);
      return;
      }
      }
      vsf_cmdio_write(p_sess, FTP_PORTOK,
      “PORT command successful. Consider using PASV.”);
      }

[/code]

Ha, tout est plus claire mainteant !!!

Je vien de me rendre compte qu’enfaite, j’y comprends rien…

[size=200]LOL[/size]