Uploaded by fabien.yvan

Travaux Pratiques 4 Translation d adresses NAT PAT GNS3

advertisement
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
Download