Accueil > Informatique > Cisco > NAT et FTP

NAT et FTP

mercredi 3 septembre 2008, par frederic

La problématique peut se poser soit du côté client, soit du côté serveur.

Problématique côté client

Le trafic FTP qui vise à négocier les ports de transfert des données du client vers le serveur est initié par le serveur (port d’origine TCP 20) à destination d’un port TCP supérieur à 1024 vers le client. Ce mode FTP appelé mode actif est celui qui est supporté par défaut par les serveur FTP RFC 959.

Si le client est protégé par un routeur NAT dynamique, ce trafic ne sera pas traduit car il ne fait pas partie d’une règle NAT configurée pour un trafic initié de l’intérieur. Alors que l’établissement d’une connexion de contrôle FTP sera possible, le transfert de données ne le sera pas. A moins que de réaliser une traduction statique de l’adresse locale interne vers l’adresse globale interne, il n’y a pas de solution NAT.
La solution consiste à établir une connexion FTP à partir du client en mode passif. Dans ce mode, le client initie la négociation du port que le serveur propose. Vu qu’ici le trafic est initié derrière le routeur NAT, le NAT en tant que tel ne pose plus de problème. Faut-il encore que le serveur supporte ce mode, ce qui est de plus en plus courant.

Problématique côté serveur.

A côté du premier problème côté client, on peut rencontrer un problème cumulatif côté serveur. Il faut supposer que le serveur est hébergé derrière, lui aussi, un routeur NAT configuré avec un transfert de ports. Si le client initie lui-même le transfert de données vers des ports supérieurs à 1024 à destination du serveur, comment le routeur NAT du serveur peut-il traduire le trafic entrant à destination de ces ports qui ne font pas l’objet d’une configuration spécifique ?

Heureusement les passerelles sont aujourd’hui capable de suivre le trafic FTP qui nécessite une inspection du trafic FTP lui-même au niveau de la couche applicative.

Sur les passerelles Linux, il faudra par exemple activer et configurer les modules ip_conntrack_ftp et ip_nat_ftp du noyau. Si un routeur Cisco avec un IOS récent supportera cette fonctionnalité nativement pour le trafic initié sur le port TCP 21, il n’en sera pas de même pour les services FTP écoutant sur un autre port que le port légal. Ce dernier cas nécessitera une configuration spécifique à suivre dans Using Non-Standard FTP Port Numbers with NAT. On ira voir égalemnt le document suivant : FTP Zope derrière une router Cisco [How-To].