Forum général.général Serveur FTP derrière un NAT

Posté par  (site web personnel) .
Étiquettes : aucune
0
27
juin
2006
Bonjour,
Je souhaitais simplement répondre au post concernant le problème de connexion sur un serveur FTP se situant derrière un routeur en NAT.
Il suffit simplement de faire un port forwarding sur le 21 et forcer le client à ne pas utiliser le mode passif, de cette manière data et commandes passent par ce même port.
Voilà c'est tout.
  • # et port 2O

    Posté par  . Évalué à 2.

    Le ftp a besoin de 2 ports : 20 et 21 un pour les commandes et l'autre pour les données.

    voila
  • # Serveur FTP derrière un NAT

    Posté par  . Évalué à 2.

    "Il suffit simplement de faire un port forwarding sur le 21 et forcer le client à ne pas utiliser le mode passif, de cette manière data et commandes passent par ce même port."

    Et si le client est derrière un routeur NAT lui même, et que ledit client n'a pas accès pour une raison ou une autre à la configuration du client, le mode actif ne fonctionnera pas !

    La vraie solution consiste à utiliser un serveur capable de limiter sa plage de connexions en mode passif, et de mapper tous ces ports vers le serveur.
    • [^] # Re: Serveur FTP derrière un NAT

      Posté par  . Évalué à 3.

      Salut,

      Il me semble qu'il ne sera pas inutile, encore une fois, de donnre quelques détails sur le fonctionnement du FTP.

      En mode actif, le client se connecte sur le port TCP 21 (ou n) du serveur. Toutes les commandes vont passer par cette connexion. Pour le transfert des données (put, get, ls, ...), le client indique au serveur le port et l'adresse IP à utiliser et le serveur établit une connexion TCP depuis le port TCP 20 (ou n-1) du serveur vers l'adresse IP et le port indiqués par le client. Pour que cela fonctionne correctement, il faut :
      - que le serveur soit accessible sur le port 21 ;
      - que le serveur puisse établir des connexions TCP ayant le port 20 comme origine ;
      - que les connexions en provenance du port 20 du serveur arrivent jusqu'au client.
      Donc, si le serveur est NATté, il faut que le routeur NATte le port 21 en entrée ainsi que le port 20 en sortie. Si le client est NATté, il faut que son routeur modifie les informations envoyées par le logiciel client (adresse IP et port à utiliser pour le canal de données) pour les remplacer par l'adresse IP publique et un port non utilisé. Il faudra également que ce routeur NATte les connexions entrantes en provenance du port 20 du serveur FTP vers le client concerné.

      En mode passif, le client se connecte sur le port 21 du serveur (comme en actif) pour établir le canal de commandes. Pour le transfert des DATA, le serveur fournit au client l'adresse IP et le port (différent à chaque fois et tout le temps différent de 20) à utiliser et le client se connecte sur cette adresse et ce port. Ce mode est plus simple à utiliser pour le client (c'est lui qui se conecte sur le serveur tout le temps : il n'y a plus de connexion du serveur sur le client), mais la seule ouverture dur port 21 en sortie ne suffira pas (et ouvrir le port 20 ne servira à rien). Côte serveur, s'il y a du NAT, il peut être suffisant de définir, dans la configuration du serveur, une plage de port à utiliser et de NATté toute cette plage vers le serveur FTP (comme l'a écrit lgmdmdlsr).

      Quoi qu'il en soit, la meilleure solution pour faire du FTP derrière un routeur qui fait du NAT est d'avoir un routeur qui supporte le protocole FTP. La plupart des routeurs actuels du marché devraient être capable de faire ça (sinon il faut en changer). En tout cas, netfilter/iptables s'en sort très bien grâce aux modules ip_conntrack_ftp et ip_nat_ftp (ouverture dynamique des ports nécessaires en fonction des échanges FTP sur le canal de commande et "masquerading" des adresses IP et des ports dans ces échanges). Je vous laisse un peu chercher dans l'abondante littérature sur le sujet pour voir comment paramétrer tout ça ;-)

      A+
      JJD
      • [^] # Re: Serveur FTP derrière un NAT

        Posté par  . Évalué à 2.

        "La plupart des routeurs actuels du marché devraient être capable de faire ça (sinon il faut en changer)"

        Moi je veux bien, mais on fait comment avec une %#./§( de Livebox qui est un routeur pas capable (et pas moyen de la configurer en mode modem) ?
        • [^] # Re: Serveur FTP derrière un NAT

          Posté par  . Évalué à 1.

          La remarque que tu cites se voulait un peu ironique...

          Effectivement, sur ces box, il n'est pas forcément possible de définir que le NAT concerne un serveur FTP (je vois déjà Orange t'explique que sur un accès grand public tu n'as pas à avoir un serveur). Dans ce cas, la seule solution est, comme tu l'as dit, de nater toute une plage de ports pour le FTP passif et de paramétrer le serveur FTP en conséquence (sans oublier d'indiquer l'adresse IP publique). Le FTP actif lui devrait fonctionner sans soucis (du moins côté serveur), puisque c'est le serveur qui se connecte sur le client pour les data.
          Je pense tout de même que, même si le paramétrage n'est pas possible quand on a un serveur, le routeur de la livebox doit être capable de gérer le protocole FTP, sans cela les utilisateurs ne pourraient pas se connecter sur un serveur FTP en mode actif (rassure-moi : c'est bien possible ?)
          • [^] # Re: Serveur FTP derrière un NAT

            Posté par  . Évalué à 2.

            "Je pense tout de même que, même si le paramétrage n'est pas possible quand on a un serveur, le routeur de la livebox doit être capable de gérer le protocole FTP, sans cela les utilisateurs ne pourraient pas se connecter sur un serveur FTP en mode actif (rassure-moi : c'est bien possible ?)"

            Je n'y mettrais pas ma main à couper, même si je ne peux faire le test pour cause de configuration réseau exotique.
            AMHA, derrière une livebox seul le mode passif est disponible pour les clients FTP (ce qui n'est pas grave vu que c'est le mode le plus utilisé).

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.