[Debian] Probleme proftp avec dyndns

Résolu/Fermé
Hargan - 13 juil. 2007 à 18:28
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 - 28 août 2007 à 09:37
Bonjour,

J'ai un probleme avec proftpd sur debian. J'utilise une adresse dyndns et je suis sur une freebox.
J'ai configurer le mode passif et est ouvert mes ports adequat. Mais la connexion se fait et se bloque.
Voici le message d'erreur :

Statut :	Résolution de l'adresse IP pour XXXXXXX
Statut :	Connexion sur XX.XX.XX.XX:6660...
Statut :	Connexion établie, attente du message d'accueil
Réponse :	220 ProFTPD 1.3.0 Server (XXXXXXXXXXX) [::ffff:XXX.XXX.XXX.XXX]
Commande :	USER XXXXXX
Réponse :	331 Password required for XXXXXXX.
Commande :	PASS ******
Réponse :	230 Connexion reussie pour XXXXXX
Commande :	SYST
Réponse :	215 UNIX Type: L8
Commande :	FEAT
Réponse :	211-Features:
Réponse :	 MDTM
Réponse :	 REST STREAM
Réponse :	 SIZE
Réponse :	211 End
Statut :	Connecté
Statut :	Lecture du contenu du répertoire...
Commande :	PWD
Réponse :	257 "/" is current directory.
Commande :	TYPE I
Réponse :	200 Type set to I
Commande :	PASV
Réponse :	227 Entering Passive Mode (XXX,XXX,XXX,XXX,17,76).
Commande :	LIST
Erreur :	délai d'attente expiré
Erreur :	Échec à la lecture du contenu du répertoire




et voici mon fichier de configuration, je l'est recuperer sur un site et les modifier par le biais de webmin (donc pas tres jolie) :

# le nom du serveur
 ServerName "XXXXXXXXXXX"

# le daemon reste en mémoire et écoute les connections
ServerType inetd

# Autoriser l'usage de /etc/ftpusers
UseFtpUsers off

# Répertoire dans lequel arrivent les utilisateurs acceptés
 DefaultChdir /ftp

# Répertoire racine, les connectés au ftp ne verrons que lui et son contenu
 DefaultRoot /ftp

# Utile surtout pour les "virtuals hosts" mais laissez ainsi
 DefaultServer on

# le daemon écoute sur le port 6660
 Port 6660

# On autorise les reprises des téléchargements interrompus :
 AllowStoreRestart on

# Les logs des connections et transferts
 SystemLog /var/log/proftpd.log
TransferLog /var/log/xferlog

# Seul le propriétaire d'un fichier peut le modifier.
 Umask 022

# Nombre de processus fils maximum que va utiliser proftpd, laissez ainsi.
MaxInstances 30

# Proftp sera lancé avec les privilèges (c'est à dire aucun) de nobody
#User XXXXX
#Group XXXXXX

# Nombre maximum de clients simultanés (sur ADSL ça fait 5ko/s par utilisateurs)
 MaxClients 3

# Nombre maximum de clients ayant le même login
 MaxClientsPerHost 3

# Message d'accueil après une connexion réussie
 AccessGrantMsg "Connexion reussie pour %u"

# Pour ne pas donner d'info sur le serveur
 DeferWelcome off

# Un utilisateur peut écraser ses propres fichiers
 AllowOverwrite on

#Seul l'utilisateur adminftp a le droit d'écrire dans /mnt/ftp
#<Directory /mnt/ftp>

#<Limit WRITE>
#AllowUser adminftp
#DenyAll
#</Limit>

#Si vous souhaitez restreindre le ftp à votre réseau local 192.168.0.x et à
#l'adresse 10.0.0.1 décommentez les lignes suivantes :

#<Limit LOGIN>
#Allow 10.0.0.1 192.168.0.
#Deny All #</Limit>
<Global>
</Global>
<VirtualHost XXXXXXXXX>
Port 6660
ServerName "XXXXXXXX"
PassivePorts 6661 6760
</VirtualHost>




Voila, si quelqu'un à une idée ou si vous voulez plus d'information n'hésiter pas à poster.
Merci par avence.

5 réponses

mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
13 juil. 2007 à 21:59
En fait il faudrait déjà voir comment tu testes ton ftp. Si tu fais un ftp sur ton ip publique il y a de forte chance que ça ne marche pas.

Etape 1 : configurer proftpd

Configure ton serveur ftp dans /etc/proftpd/proftpd.conf.
Bien sûr il faut faire ça en root. Dans un premier compte fait un compte anonyme, il sera toujours temps de créer des comptes plus tard. Exemple :
#
# /etc/proftpd/proftpd.conf -- This is a basic ProFTPD configuration file.
# To really apply changes reload proftpd after modifications.
#
...
# Set off to disable IPv6 support which is annoying on IPv4 only boxes.
UseIPv6             on
ServerName          "aldur"
 ...
# Port 21 is the standard FTP port.
Port                21
...

 <Anonymous ~ftp>
   User             ftp
   Group                nogroup
   # We want clients to be able to login with "anonymous" as well as "ftp"
   UserAlias            anonymous ftp
   # Cosmetic changes, all files belongs to ftp user
   DirFakeUser  on ftp
   DirFakeGroup on ftp

   RequireValidShell        off

   # Limit the maximum number of anonymous logins
   MaxClients           10
   # We want 'welcome.msg' displayed at login, and '.message' displayed
   # in each newly chdired directory.
   DisplayLogin         welcome.msg
   DisplayFirstChdir        .message

   # Limit WRITE everywhere in the anonymous chroot
   <Directory *>
     <Limit WRITE>
       DenyAll
     </Limit>
   </Directory>

   # Uncomment this if you're brave.
   # <Directory incoming>
   #   # Umask 022 is a good standard umask to prevent new files and dirs
   #   # (second parm) from being group and world writable.
   #   Umask                022  022
   #            <Limit READ WRITE>
   #            DenyAll
   #            </Limit>
   #            <Limit STOR>
   #            AllowAll
   #            </Limit>
   # </Directory>

 </Anonymous>

A chaque modification de ce fichier il faudra valider les changements en relançant le serveur ftp, en root
/etc/init.d/proftpd restart

Comme a priori il faut mettre le contenu de ton ftp dans ~ftp (/home/ftp) mais que tes fichiers sont parfois ailleurs tu peux utiliser des mount bind. Par exemple moi mon ftp est dans /mnt/vfat/ftp, ce qui donne dans /etc/fstab :
/mnt/vfat/ftp   /home/ftp   none        bind                    0   0

Ainsi mon ftp apparaît en double, aussi bien dans /mnt/vfat/ftp que dans /home/ftp. Monte /home/ftp en tapant en root :
mount /home/ftp


Etape 2 : se connecter en local

Vérifie que le ftp marche correctement en local. Pour celà on va installer un client ftp, par exemple lftp. En root :
aptitude install lftp
/etc/init.d/proftpd restart

En utilisateur :
lftp 127.0.0.1

Puis tape ls. Exemple chez moi :
(mando@aldur) (~) $ lftp 127.0.0.1
lftp 127.0.0.1:~> ls
drwxr-xr-x   8 ftp      ftp          4096 Feb 11  2006 Bazar
drwxr-xr-x   5 ftp      ftp          4096 Feb 11  2006 Fichiers
drwxr-xr-x   2 ftp      ftp          4096 Feb 20  2006 Films
drwxr-xr-x  11 ftp      ftp          4096 Feb 11  2006 Jeux
drwxr-xr-x   4 ftp      ftp          4096 Feb 12  2006 Musique

Une fois cette étape validée, le serveur ftp est opérationnel.

Etape 3 : vérifier tes règles de forward de port

A présent, il faut te connecter (ou tester) sur un machine en dehors de ton réseau. De cette machine, commence par vérifier que le ftp fonctionne en tapant ton ip public. Si ce n'est pas le cas, vérifie les règle de forward de ton routeur (port 21 en tcp). Par exemple l'ip locale de mon pc est 192.168.1.13 ce qui donne la règle :
Nom 	 Activé 	 Protocole 	 Du Port 	 Au Port 	 Adresse IP locale 	 Nom de l'interface
 ftp 	 Oui 	 TCP 	 21 	 21 	 192.168.1.13 	 ppp0


Etape 4 : pare feu et proxies

Si cette règle est correcte mais que ça ne marche pas depuis un client ftp exterieur à ton réseau local, vérifie ton pare feu, et vérifie que le pc depuis lequel tu teste peux se connecter en ftp et n'est pas bloqué par exemple par le proxy s'il se connecte au net via un proxy.

Etape 5 : dyndns

Si à ce stade ça marche il ne reste plus qu'à faire marcher dyndns. Pour celà fait un nslookup sur ton hostname dyndns et vérifie qu'il concorde avec ton ip publique.

Si c'est le cas c'est bon tu peux désormais :
a- te connecter depuis le pc qui héberge le serveur ftp :
lftp 172.0.0.1

b- te connecter depuis un pc de ton réseau local (par exemple dans mon cas) :
lftp 192.168.1.13

c- te connecter depuis un pc extérieur :
lftp mon_ip_publique
lftp mon_hostame

Bonne chance
1
Merci pour ce tuto interessant.

Hors le probleme etait particulier à cause de cette adresse dyndns.

Le probleme etant que je cherchai a faire un serveur virtuel pour mon adresse dyndns, hors,
une fois que le client ftp se connect et recupere mon adresse ip, il ne passais plus par ma config dyndns mais ma config global ("adresse dyndns" etant different de "mon ip" pour lui), donc avec mon ip local ce qui ne risque pas de fonctionner de l'exterieur.

J'ai du coup passer les parametre exterieur (pour dyndns) en global, et creer un serveur virtuel pour le local ce qui regle le probleme nickel.
0
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
19 juil. 2007 à 17:19
Parfait je clos le sujet ;)
0
salut
comment je peux savoir mon ip bublique? la commande necessaire? si c'est nslookup,comment je peux l'utiliser?
merci pour vos aides!!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
28 août 2007 à 09:37
Si tu as un nom de domaine il suffit de faire "nslookup tonnomdedomaine". SInon en général quand tu te connectes sur l'interface ton routeur tu as moyen de la récupérer (http://192.168.1.1 login : admin pass : admin, rubrique accueil internet pour les livebox par exemple). Sinon tu vas directement sur un site qui te la donne :
https://www.luanagames.com/index.fr.html

Bonne chance
0