Réseaux IP ETRS 507 Travaux Pratiques 4 Translation d’adresses – NAT – PAT – GNS3 1 Objectifs Les objectifs de ce TP sont de : Emuler et configurer des routeurs virtuels avec le logiciel GNS3. Mettre en place un mécanisme de translation d’adresses. Analyser le fonctionnement de ce mécanisme de translation d’adresses. Etudier les limites de la translation d’adresses, notamment lors de l’ouverture de connexion dynamique. Etude de cas du protocole FTP. Vous devez rendre un compte-rendu individuel au format google-doc comportant uniquement les questions avec un astérisque (*) 2 Mise en place de la topologie 2.1 Schéma de la topologie La topologie à mettre en place est la suivante : Cette maquette permet de simuler de manière simplifiée l’accès à Internet d'une entreprise. Les machines A et B appartiennent au réseau interne de l'entreprise. R1 permet relie le réseau local de l'entreprise à Internet. R2 représente un routeur du FAI ou plus généralement un routeur d'Internet. C représente une machine directement reliée à Internet, elle dispose d'une adresse IP publique, tout comme R2 et l'interface externe de R1 L'ensemble de la topologie est réalisé à l'aide de machines virtuelles. Les routeurs seront émulés à l'aide du logiciel GNS3 fonctionnant à l'intérieur d'une machine virtuelle Ubuntu. | 1 Translation d’adresses – GNS3 2.2 Création des machines virtuelles On a donc besoin de créer 4 machines virtuelles : A, B et C → Centos 7 (1024 Mo de ram) Une machine virtuelle Ubuntu GNS3 2016 2017 qui émulera R1 et R2 Démarrer Virtual Box. Pour des raisons de performances, les machines virtuelles ne seront pas stockées dans votre dossier Perso sur le NAS mais devront être stockées en local sur le disque dur d:\, soit dans le dossier vm soit dans le dossier virtual machine. Pour cela après avoir démarré Virtual Box, dans Fichier | Préférences | Dossier par défaut des machines virtuelles, sélectionner le dossier correct sur D:\. Vous n’oublierez pas lors de la prochaine séance de remettre le dossier par défaut des machines virtuelles vers votre partage perso sur le NAS. Vérifier si le fichier Ubuntu-GNS3-2016-2017.ova est présent sur le disque D:\ (faire une recherche à partir de la racine, dans tous les dossiers et sous-dossier. Si elle n’est pas présente, télécharger l’application virtuelle Ubuntu-GNS3-2016-2017.ova se trouvant sur le NAS (\\192.168.176.2\public\virtualmachines\VirtualBox) et l’enregistrer dans d:\vm. Importer la machine Ubuntu-GNS3-2016-2017. Avant de démarrer l’Appliance gns3, augmenter la quantité de mémoire vive de cette machine virtuelle, lui attribuer 3064 Mo de mémoire vive. Vérifier que la carte 1 de la machine virtuelle est bien connectée à la carte de loopback. Créer les machines virtuelles CentOS A et B (mode attachement multiple). Démarrer l'interface graphique. 2.3 Création des routeurs virtuels Dynamips est un émulateur de routeur Cisco. Il permet d'émuler des plate-formes matérielles 1700, 2600, 3600, 3700 et 7200. Dynagen est une interface en ligne de commandes qui permet de contrôler le fonctionnement de dynamips et de le configurer. Une interface de configuration graphique (facultative) a été ajoutée à Dynamips et Dynagen : gns3. C'est cette dernière que nous utiliserons. La configuration est sensiblement la même que celle mise en place lors du TP d’étude de RIP. Démarrer gns3, créer un nouveau projet et mettre en place la topologie suivante : | 2 Translation d’adresses – GNS3 Les routeurs utilisés seront des modèles c7200. Ne pas oublier d’enregistrer votre projet ? 2.4 Configuration IP et tests réseau Interne Les machines virtuelles A et B sont connectées en bridge sur la loopback mais devrons, bien sûr, utiliser R1 comme passerelle par défaut. Pour ces machines et pour l’interface Ethernet de R1 côté réseau « interne de l’entreprise » vous utiliserez la même plage d’adresses que la loopback de la machine hôte. Le routeur R1 aura comme adresse côté réseau Interne .110. Choisir des adresses IP pour A et B. On va maintenant configurer le routeur. Le routeur R1 aura comme adresse côté réseau Externe une adresse appartenant à la plage 137.68.9.40/30. Configurer manuellement le routeur R1 (@IP, nom, accès telnet). Question 1 : Ecrire la phase de tests que vous allez mener pour valider le fonctionnement de la topologie actuellement mise en place. 2.5 Configuration IP et tests du reste de la topologie Maintenant que la partie Interne est fonctionnelle, on s'intéresse à la mise en place du reste de la topologie. On considère que les machines R2 et C sont des machines appartenant au réseau Internet. Elles utiliseront les plages d'adresses suivantes : 137.68.9.40/30 pour le réseau entre R1 et R2 (adresses publiques) 137.68.9.64/29 pour le réseau hébergeant la machine C. Sur cette plage la passerelle par défaut aura la plus haute adresse. Créer une nouvelle machine virtuelle CentOS (C). Configurer les paramètres IP adéquats pour la machine C et le routeur R2. Configurer le routeur R2 (@IP, nom, accès telnet) sans utiliser l’assistant de configuration. | 3 Translation d’adresses – GNS3 Mettre les routes adéquates. On considère un cas réel : C et R2 sont des machines appartenant au réseau Internet ; A et B sont des machines appartenant à un réseau « privé ». Faire au brouillon un schéma le plus complet possible du réseau. Question 2 : Ecrire en l'expliquant la phase de tests que vous allez mener pour valider le fonctionnement de la topologie actuellement mise en place.* Faire valider obligatoirement. A partir de la machine hôte, accéder en telnet à R1, visualiser la configuration courante puis la sauvegarder en faisant un copier/coller dans un fichier texte. A partir du telnet sur R1 faire un telnet sur R2 et copier/coller la configuration de R2 dans un fichier texte. 3 Mise en place de la translation d'adresses Maintenant que la topologie est fonctionnelle, on configurer le processus de translation d’adresses. Question 3 : Quel routeur doit mettre en œuvre un processus de translation d'adresses ? Deux documentations : « cisco ios network address translation » et « NAT Local and Global Definitions » sont disponibles sur \\192.168.176.2\Public\DocsCoursTDTP\ETRS507. N'hésitez pas à les consulter en cas de besoin. Pour configurer la translation d'adresses, on indique dans un premier temps au processus NAT le rôle/la position des interfaces du routeur : interface(s) interne(s) configurée(s) avec ip nat inside interface(s) externe(s) configurée(s) avec ip nat outside Exemple : 1. interface fastethernet 0/0 2. ip nat outside ! A modifier selon votre configuration. Il faut ensuite activer le processus NAT, pour cela on a besoin de définir au préalable une « accesslist ». Une ACL peut être considérée comme un filtre qui sélectionne des paquets en fonction des valeurs contenues dans leurs en-tête IP ou TCP. Il existe deux types d’ACL : les ACL standards et les ACL étendues. Les listes d'accès « standards » sélectionnent les paquets en fonction de l'adresse IP source contenue dans l'en-tête. C’est ce type d’ACL dont nous avons besoin pour la translation d’adresses. Ici l’ACL doit sélectionner tous les paquets dont l’adresse IP source devra être translatée. Question 4 : Donner l’adresse de réseau des paquets qui devront subir un processus de translation d’adresses. En mode de configuration saisir : access-list 1 pemit XXXXX 0.0.0.255 ou XXXXXX représente l’adresse réseau des paquets devant être « natés ». Noter que les access-list sont numérotées. L’access-list définie porte le numéro 1. | 4 Translation d’adresses – GNS3 On configure ensuite le processus de translation d'adresses. Dans notre cas le routeur n'a qu'une seule adresse IP publique, il faudra donc faire de la translation d'adresses par ports. Le processus de translation s'active via la commande ip nat. Ne connaissant pas tous les paramètres associés à cette commande on va utiliser l'aide fournie par la plate-forme Cisco. Saisir : ip nat ? Pour vous aider à choisir le paramètre suivant, répondre à la question : « Doit-on translater les adresses internes ou externes ? » Saisir : ip nat param1 ? Où param1 est le paramètre déterminé précédemment. Pour vous aider à choisir le paramètre suivant, répondre à la question : « Doit-on translater dans les paquets l'adresse source ou l'adresses destination ? » Saisir : ip nat param1 param2 ? Où param1 et param2 sont les paramètres déterminés précédemment. Pour vous aider à choisir le paramètre suivant, répondre à la question : « Quels sont les paquets qui devront subir une translation d'adresses ? » Ne pas oublier que vous avez configuré précédemment une ACL. Saisir : ip nat param1 param2 param3 ? Où param1, param2 et param3 sont les paramètres déterminés précédemment. Il ne reste plus qu'à définir l'adresse ip qui doit remplacer l'adresse ip source contenue dans les paquets. Pour cela on peut définir un pool ou indiquer d'utiliser l'adresse ip de l'interface de sortie. Ici le plus simple est de spécifier l’interface de sortie. Saisir : ip nat param1 param2 param3 param4 ? Finalement, rechercher l'utilité du terme « overload » à la fin de la commande saisie. Question 5 : Quelle commande avez-vous finalement saisie pour activer la translation d’adresses ? Vérifier que le mécanisme de translation d’adresses est correctement configuré. 4 Etude de la translation d'adresses 4.1 Le processus de translation d’adresses En principe maintenant vous devriez arriver à partir de A ou B à communiquer avec R2 et C. On va valider dans cette partie le fonctionnement de la translation d'adresses en faisant des captures de trames. On souhaite que vous analysiez les modifications effectuées par le routeur lorsqu'il retransmet les paquets. Lancer une capture de trames sur A et C et générer un seul paquet ICMP. Relever la valeur de tous les champs du paquet qui ont été modifiés par le routeur. Il n'est pas facile de comprendre, uniquement avec des captures de trames, la méthode utilisée par le routeur pour déterminer à quelle machine il doit remettre les paquets. Pour avoir un petit peu d'aide on peut consulter la table de translations du routeur : show ip nat translations et également la vider clear ip nat translation *. | 5 Translation d’adresses – GNS3 Remarque : Les entrées dans cette table ne sont conservées que pendant une courte durée. Question 6 : Déterminer ce que représente le nombre après les « : » dans la table de translations. Pour cela vous devez analyser au moins une capture de trames en concordance avec la table de suivi des translations. Comment, selon vous, R1 arrive-t-il à déterminer à qui remettre les paquets ICMP de réponse ?* Dans le cours on s'était intéressé plus spécifiquement au processus de translation d'adresses lors de communications TCP. On va se mettre dans des conditions similaires à celle du cours. On ne va pas perdre de temps pour installer des « vrais » serveurs, on va utiliser le logiciel netcat pour en simuler. Je vous invite en cas de besoin à consulter la documentation de netcat disponible sur Internet. On teste dans un premier temps le fonctionnement de netcat : Sur C, lancer la commande : nc -l 500 Sur A, se connecter à C en utilisant la commande : nc @IPC 500. Entrer une chaîne de caractères et appuyer plusieurs fois sur entrée. Faire des captures de trames en cas de besoin. Attention à bien configurer le pare-feu des machines : iptables -I INPUT -p tcp – dport zzz -j ACCEPT où zzz est le numéro de port que vous voulez autoriser dans le pare-feu. Visualiser et analyser sur le routeur la table de translations d'adresses. Question 7 : Le routeur a-t-il translaté un port ? Pourquoi ? Recherche l’option que l’on doit utiliser avec netcat pour fixer le numéro du port source d’un segment TCP. Vérifier par une capture de trames. Mettre en œuvre une manipulation qui permet de mettre en évidence réellement la translation d'adresses par port faite par le routeur (une option de netcat permet de spécifier le port source). Question 8 : Décrire la manipulation réalisée et expliquer les résultats obtenus en utilisant les outils dont vous disposez.* 4.2 Hébergement de serveur. On s'intéresse maintenant à l'hébergement de serveur du côté réseau interne. Imaginons que l'on souhaite administrer la machine A à partir du réseau Internet. Vous devez mettre en œuvre une solution pour pouvoir se connecter à partir de C au serveur ssh (port 22) de la machine A. Vérifier dans un premier temps qu’il est possible de se connecter au serveur ssh de A depuis B, mais qu’il est impossible de s’y connecter depuis C. Un extrait de documentation Cisco est donné ci-dessous : | 6 Translation d’adresses – GNS3 Internet users need access to the informational Web server through 200.200.100.1 through port 80. Configure PAT so that Internet users are directed to the informational Web server, 192.168.1.5, when they connect to the IP address 200.200.100.1 through a web browser. NAT(config)#ip nat inside source static tcp 192.168.1.5 80 200.200.100.1 80 extendable The extendable keyword at the end of this static NAT command causes the router to reuse the global address of an active translation and save enough information to distinguish it from another translation entry. This command has the effect of translating external attempts to connect to port 80/IP address 200.200.100.1 to internal attempts to connect to port 80/IP address 192.168.1.5. The process of performing NAT translations based on the value of the incoming port number of an IP packet is called port forwarding. En utilisant cette documentation, déterminer quelle commande vous devez saisir dans votre cas. Visualiser et analyser la table de translation d’adresses. Sauvegarder la configuration de R1. 4.3 Connexion dynamique Dans cette dernière partie on s'intéresse aux protocoles un peu particuliers qui mettent en œuvre des connexions dynamiques du serveur vers le client. On choisit ici comme cas d'étude le protocole FTP. Nous avons vu en cours que ce protocole, dans son fonctionnement initial, avait posé des problèmes lors des premiers déploiements de la translation d'adresses. Un deuxième mode de fonctionnement avait été défini : le mode « passif ». Vous devez dans cette partie analyser et comprendre les problèmes posés par le mode actif et analyser la solution trouvée. Pour mener à bien cette manipulation il est plus simple d'utiliser le logiciel Filezilla. On va donc dans un premier temps l’installer sur A ou sur B. Configurer la machine A ou la machine B pour qu'elle ait accès à Internet à partir du TinyCoreRouteur. Filezilla n'est pas disponible dans les dépôts standards de CentOS, il faut donc utiliser des dépôts additionnels. Les dépôts additionnels qui nous intéressent sont les dépôts EPEL (Extra Packages for Enterprise Linux). Télécharger un paquetage qui va configurer le nouveau dépôt logiciel sur la machine : wget http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-8.noarch.rpm Installer le paquetage : rpm -ivh epel-release-7-8.noarch.rpm Saisir les commandes yum repolist puis yum install filezilla Configurer rapidement et temporairement C pour qu'elle accède à Internet. Installer sur C un serveur FTP (yum install vsftpd ainsi que les utilitaires clients FTP). Remarque : tuer tous les processus yum, si un message : « Antoher app is currently holding the yum lock … » apparaît. Créer deux fichiers de tests dans /var/pub/ftp 4.3.1 Etude du mode actif On commence notre étude par l’utilisation du mode actif. Les manipulations se feront entre les machines A (client ftp) et C (serveur ftp). | 7 Translation d’adresses – GNS3 Mettre la directive : port_enable=YES dans le fichier /etc/vsftpd/vsftpd.conf pour activer le mode passif. Question 9 : Un pare-feu est présent sur la machine A. Il empêche les connexions entrantes. Pourquoi faut-il désactiver ce pare-feu ? Désactiver le pare-feu sur A. Autoriser les connexions entrantes ftp sur la machine C : iptables -I INPUT -p tcp –dport zzzz -j ACCEPToù zzz est le numéro de port que vous voulez autoriser dans le pare-feu. Se connecter, à partir de B, au serveur ftp en mode actif (créer un nouveau site dans le gestionnaire de site) et essayer de réaliser un transfert de fichier. Par défaut le mode utilisé est le mode passif. Il faut lorsque vous créer un site dans Filezilla lui indiquez d'utiliser le mode actif. Question 10 : Capturer, décrire et analyser les trames échangées. L'échange réussit mais est-ce normal par rapport au cours ? A votre avis quel mécanisme intervient ?* Refaire la manipulation en ayant activé le débogage nat sur le routeur (debug ip nat detailed). Question 11 : Comment se manifeste dans la trace de debogage l’intervention de l’alg ? Qu’est ce qui signale au routeur qu’il a besoin d’ouvrir dynamiquement un port. 4.3.2 Mode passif On vient de voir, que l’ALG développée par Cisco permet d’ouvrir dynamiquement un port dans le cas du mode actif. On n’a donc plus le problème présenté en cours. Néanmoins, il faut garder en mémoire que même si Cisco a développé des mécanismes permettant un fonctionnement du mode actif FTP, tous les routeurs déployés n’implémentent pas ces mécanismes. On s’intéresse maintenant au fonctionnement de FTP en mode passif qui en principe dans ce cas là ne devrait pas poser problème. Question 12 : Un pare-feu est présent sur la machine C. Il empêche les connexions entrantes. Pourquoi faut-il désactiver ce pare-feu pour le mode passif ? Capturer un échange FTP en mode passif. Question 13 : Analyser et synthétiser vos résultats.* On vient de voir et on a vu en cours que le mode passif fonctionnait correctement lorsque le client était « derrière » un routeur PAT. Par contre, en cours on avait fait remarquer qu’il fallait que le serveur ne soit pas hébergé derrière un routeur PAT. Si vous avez suffisamment de temps, héberger un serveur FTP sur le réseau interne et analyser le fonctionnement du processus de translation d’adresses lorsqu’une machine externe essaie de se connecter au serveur FTP. | 8