# Théo RIVIÈRE et Nohan VIOT ## R201 - TP6 - Translation d’adresses - NAT **Objectifs:** - Établir le plan d'adressage du réseau - Configurer le routage statique - Configurer la fonction NAT statique, dynamique et la surcharge NAT ### Présentation Voici la topologie de base du réseau : ![image](https://hackmd.io/_uploads/HJFYjPBGA.png) Ce réseau d’entreprise comprend trois réseaux privés virtuels reliés au réseau public Internet. Le VLAN DMZ permet d’isoler les machines serveurs dont on veut contrôler l’accès (intérieur et extérieur), le VLAN Ressources est utilisé pour l’hébergement des services locaux (Intranet, fichiers…) et le VLAN Clients est utilisé pour les postes de travail des utilisateurs. Un quatrième VLAN Gestion est ajouté pour assurer l’administration de l’infrastructure. Il joue aussi le rôle du VLAN natif. La configuration du commutateur SW1 est la suivante : | Ports | Affectation | Réseau | | --------------- | ------------------------------------------- | ----------------- | | Fa0/1 à Fa0/5 | VLAN 12 – DMZ | 192.168.12.0 /24 | | Fa0/6 à Fa0/10 | VLAN 102 – Clients (Accès des utilisateurs) | 192.168.102.0 /24 | | Fa0/11 à Fa0/15 | VLAN 202 – Ressources (Intranet, fichiers…) | 192.168.202.0 /24 | | Fa0/21 à Fa0/24 | VLAN 77 – Gestion (Agrégations 802.1Q) | 192.168.72.0 /24 | Le réseau de l’entreprise est relié à Internet par l’intermédiaire du routeur R1. Le fournisseur d’accès Internet (FAI) a attribué l’espace d’adressage IP public **195.200.0.0/28** à l’entreprise. Cela lui permet de disposer de 14 adresses IP publiques. Le routeur ISP devra être configuré avec une route résumé vers ce pool d’adresses. | Nom du réseau | Adresse réseau | Plage d'adresses IP | Masque de sous-réseau | Adresse de diffusion | | ------------- | -------------- | -------------------------- | --------------------- | -------------------- | | VLAN 12 - DMZ | 195.200.0.0 | 195.200.0.1 - 195.200.0.14 | 255.255.255.240 (/28) | 195.200.0.15 | Internet sera simulé par la présence d’un PC dans le réseau **193.200.0.0/24**. Ce PC jouera le rôle d’un serveur ou d’un client. La RFC 1918 définit un espace d’adressage privé permettant à toute organisation d’attribuer des adresses IP aux hôtes de son réseau interne sans risque de conflit avec les adresses IP publiques allouées par l’IANA (Internet Assignement Number Authority). Afin que les adresses privées ne soient pas routées dans le domaine public, vous devrez mettre en place un mécanisme de translation d’adresses. ## Adressage, câblage, configuration de base et routage inter-vlan Voici la nouvelle topologie du réseau : ![image](https://hackmd.io/_uploads/SJIT7dBzA.png) Tableau des différents périphériques : ![image](https://hackmd.io/_uploads/Hy3ZXtrGR.png) Configuration du routeur R1 : ``` en erase startup-config reload en conf t hostname R1 no ip domain-lookup int s0/0/0 clock rate 64000 ip address 209.1.1.1 255.255.255.252 no shutdown int Gi0/0.77 encapsulation dot1Q 77 native ip address 192.168.72.254 255.255.255.0 no shutdown int Gi0/0.12 encapsulation dot1Q 12 ip address 192.168.12.254 255.255.255.0 no shutdown int Gi0/0.102 encapsulation dot1Q 102 ip address 192.168.102.254 255.255.255.0 no shutdown int Gi0/0.202 encapsulation dot1Q 202 ip address 192.168.202.254 255.255.255.0 no shutdown int Gi0/0 no shutdown end ``` Configuration du routeur ISP : ``` en erase startup-config reload en conf t hostname ISP no ip domain-lookup int s0/0/0 ip address 209.1.1.2 255.255.255.252 no shutdown int Gi0/0 ip address 193.200.0.254 255.255.255.0 no shutdown end ``` Configuration de SW1 : ``` en erase startup-config delete vlan.dat reload en conf t hostname SW1 no ip domain-lookup vlan 12 name DMZ vlan 102 name Clients vlan 202 name Ressources vlan 77 name Gestion exit int range Gi1/0/1-5 switchport mode access switchport access vlan 12 int range Gi1/0/6-10 switchport mode access switchport access vlan 102 int range Gi1/0/11-15 switchport mode access switchport access vlan 202 int range Gi1/0/21-24 switchport mode trunk switchport trunk native vlan 77 end ``` Vérification de la création des VLANs et de leurs bonnes affectations : ![image](https://hackmd.io/_uploads/BJcQTtSzA.png) Table de routage de R1 : ``` Gateway of last resort is not set 192.168.12.0/24 is variably subnetted, 2 subnets, 2 masks C 192.168.12.0/24 is directly connected, GigabitEthernet0/0.12 L 192.168.12.254/32 is directly connected, GigabitEthernet0/0.12 192.168.72.0/24 is variably subnetted, 2 subnets, 2 masks C 192.168.72.0/24 is directly connected, GigabitEthernet0/0.77 L 192.168.72.254/32 is directly connected, GigabitEthernet0/0.77 192.168.102.0/24 is variably subnetted, 2 subnets, 2 masks C 192.168.102.0/24 is directly connected, GigabitEthernet0/0.102 L 192.168.102.254/32 is directly connected, GigabitEthernet0/0.102 192.168.202.0/24 is variably subnetted, 2 subnets, 2 masks C 192.168.202.0/24 is directly connected, GigabitEthernet0/0.202 L 192.168.202.254/32 is directly connected, GigabitEthernet0/0.202 209.1.1.0/24 is variably subnetted, 2 subnets, 2 masks C 209.1.1.0/30 is directly connected, Serial0/1/0 L 209.1.1.1/32 is directly connected, Serial0/1/0 ``` Test de connectivité ping entre le VLAN 12 et VLAN 102 : ![image](https://hackmd.io/_uploads/S1Vq0YBzC.png) Test de connectivité ping entre VLAN 12 et VLAN 202 : ![image](https://hackmd.io/_uploads/HJYhRKBzR.png) Test de connectivité ping entre VLAN 102 et 202 : ![image](https://hackmd.io/_uploads/rk-Jy5SzR.png) Le fonctionnement du routage inter-vlan est confirmé par les tests de connectivités. ## Analyse du fonctionnement de la translation d’adresses ### Configuration du NAT statique Dans cette partie, on doit proposer une solution de translation d'adresses statique et de routage pour que : - les hôtes des VLAN Clients et Ressources puissent communiquer avec le serveur Web de la DMZ. - le serveur Web soit accessible depuis le réseau Internet. Pour cela, on ajoute dans la table de routage du routeur ISP, le pool d'adresses publiques affectée à l'entreprise à l'aide de la commande suivante : ```ip route 195.200.0.0 255.255.255.240 s0/0/0```. Vérification dans la table de routage de ISP que la route résumée à bien été ajoutée : ``` 193.200.0.0/24 is variably subnetted, 2 subnets, 2 masks C 193.200.0.0/24 is directly connected, GigabitEthernet0/0 L 193.200.0.254/32 is directly connected, GigabitEthernet0/0 !!** 195.200.0.0/28 is subnetted, 1 subnets S 195.200.0.0/28 is directly connected, Serial0/1/0 **!! 209.1.1.0/24 is variably subnetted, 2 subnets, 2 masks C 209.1.1.0/30 is directly connected, Serial0/1/0 L 209.1.1.2/32 is directly connected, Serial0/1/0 ``` Ensuite on ajoute une route par défaut sur le routeur R1 vers le routeur ISP, grâce à la commande suivante : ```ip route 0.0.0.0 0.0.0.0 209.1.1.2``` Vérification dans la table de routage de R1 que la route par défaut à bien été ajoutée : ``` 192.168.12.0/24 is variably subnetted, 2 subnets, 2 masks C 192.168.12.0/24 is directly connected, GigabitEthernet0/0.12 L 192.168.12.254/32 is directly connected, GigabitEthernet0/0.12 192.168.72.0/24 is variably subnetted, 2 subnets, 2 masks C 192.168.72.0/24 is directly connected, GigabitEthernet0/0.77 L 192.168.72.254/32 is directly connected, GigabitEthernet0/0.77 192.168.102.0/24 is variably subnetted, 2 subnets, 2 masks C 192.168.102.0/24 is directly connected, GigabitEthernet0/0.102 L 192.168.102.254/32 is directly connected, GigabitEthernet0/0.102 192.168.202.0/24 is variably subnetted, 2 subnets, 2 masks C 192.168.202.0/24 is directly connected, GigabitEthernet0/0.202 L 192.168.202.254/32 is directly connected, GigabitEthernet0/0.202 209.1.1.0/24 is variably subnetted, 2 subnets, 2 masks C 209.1.1.0/30 is directly connected, Serial0/1/0 L 209.1.1.1/32 is directly connected, Serial0/1/0 !!** S* 0.0.0.0/0 [1/0] via 209.1.1.2 **!! ``` :::success Les routes ajoutées ont bien été apprises par les routeurs ! ::: On configure maintenant le NAT statique sur le routeur R1 pour que les hôtes de l'Internet puissent accéder au serveur Web de la DMZ : Pour cela, on commence par assigné les interfaces intérieur/extérieur à l'aide des commandes : ``` int Gi0/0 ip nat inside int s0/0/0 ip nat outside exit ip nat inside source static 192.168.12.1 195.200.0.1 ``` Vérification du fonctionnement du NAT statique à l'aide d'une requête HTTP : ![tp6-apache2](https://hackmd.io/_uploads/S1se3LvXR.png) Puis vérification avec une requête ICMP : ![image](https://hackmd.io/_uploads/H1_7O9BfA.png) On visualise maintenant la table des traductions et les statistiques à l'aides des commandes ```show ip nat translations``` : ``` Pro Inside global Inside local Outside local Outside global --- 195.200.0.1 192.168.12.1 --- --- ``` On peut voir que notre adresse IP locale '192.168.12.1' (Inside local) est transformée en adresse IP global '195.200.0.1' (Inside global), par le routeur R1. et de la commande ```show ip nat statistics``` : ``` Total translations: 1 (1 static, 0 dynamic, 0 extended) Outside Interfaces: Serial0/1/0 Inside Interfaces: GigabitEthernet0/0.12 Hits: 132 Misses: 32 Expired translations: 11 Dynamic mappings: ``` On voit que le routage fonctionne correctement, et que notre table contient 1 translation d'adresse statique, que l'interface de sortie est S0/1/0, que l'interface interne est Gi0/0.12 (interface de la DMZ). Acquisation à l'aide de Wireshark des adresses IP utilisées lors d'une requête ICMP : ![image](https://hackmd.io/_uploads/ryUyCDvQ0.png) ### Configuration du NAT dynamique Dans cette partie, on va devoir proposer une solution de translation d'adresses dynamique pour que : - les hôtes des VLAN Clients et Ressources puissent accéder à Internet - les hôtes d'Internet ne puissent pas communiquer avec les hôtes de VLAN Clients et Ressources. Pour cela, on commence par configurer les interfaces internes du routeur R1 : ``` int Gi0/0.102 ip nat inside int Gi0/0.202 ip nat inside ``` Ensuite, on configure une ACL contenant une liste des adresses source internes qui seront traduites : ``` ip access-list standard Int-List permit 192.168.102.0 0.0.0.255 permit 192.168.202.0 0.0.0.255 exit ip nat pool NAT-Pool 195.200.0.2 195.200.0.15 netmask 255.255.255.240 ip nat inside source list Int-List pool NAT-Pool exit ``` Vérification du fonctionnement du NAT dynamique à l'aide de requêtes ICMP de PC1-VLAN102 vers Internet : ![image](https://hackmd.io/_uploads/SJPzxjSMA.png) Vérification du fonctionnement du NAT dynamique à l'aide de requêtes ICMP de PC2-VLAN202 vers Internet : ![image](https://hackmd.io/_uploads/HJQSxoHzR.png) Analyse de la table des traductions : ![image](https://hackmd.io/_uploads/B14cyjrzC.png) Statistique du NAT dynamique : ![image](https://hackmd.io/_uploads/S1Sh1sBzC.png) Acquisation à l'aide de Wireshark des adresses IP utilisées lors d'une requête ICMP : ![image](https://hackmd.io/_uploads/Hkdc0vD7R.png) ## Accès à Internet ### Configuration de la surcharge NAT (Masquerading) Dans cette partie, le routeur R1 sera connecté à l’intranet des RT. Chaque table de TP représente un service de l’entreprise (Comptabilité, Production, Recherche…) et doit accéder à Internet. Pour cela, il faut modifier l’architecture du réseau comme indiqué ci-dessous. ![image](https://hackmd.io/_uploads/HkMN-iSMR.png) La plage d’adresse 192.168.100.222 sera utilisée pour l’adressage statique de l’interface du routeur R1. L’ensemble des ports du commutateur SW-Cisco sont dans le Vlan 60. On commence par configurer l'interface Gi0/1 du routeur R1 avec les commandes ci-dessous : ``` conf t int Gi0/1 ip nat outside ip address 192.168.100.222 255.255.255.0 no shutdown end ``` Ensuite, pour mettre en œuvre la surcharge NAT dans la topologie proposée, on désactive la translation d’adresses statique et dynamique établies précédemment : ``` no ip access-list standard Int-List no ip nat pool NAT-Pool 195.200.0.2 195.200.0.15 netmask 255.255.255.240 no ip nat inside source list Int-List pool NAT-Pool no ip nat inside source static 192.168.12.1 195.200.0.1 ``` Vérification de la suppression des NAT (avec la commande ```show ip nat statistics```): ![image](https://hackmd.io/_uploads/HkMsGorMR.png) Maintenant, on configure la fonction de surcharge NAT pour les hôtes des VLAN Clients et Ressources en utilisant l’adresse de l’interface du routeur: ``` conf t ip access-list standard Int-List permit 192.168.102.0 0.0.0.255 permit 192.168.202.0 0.0.0.255 exit ip nat inside source list Int-List interface Gi0/1 overload end ``` On analyse à present la table des traductions et les statistiques à l'aide des commandes 'show ip nat translations' et 'show ip nat statistics' : show ip nat translations : ``` Pro Inside global Inside local Outside local Outside global icmp 192.168.100.222:11467 192.168.202.1:11467 8.8.8.8:11467 8.8.8.8:11467 ``` - **Protocole**: ICMP (Internet Control Message Protocol), - **Inside global**: 192.168.100.222:11467 - Adresse IP globale et port utilisé par l'hôte à l'intérieur du réseau pour la communication externe. - **Inside local**: 192.168.202.1:11467 - Adresse IP locale et port de l'hôte interne avant la traduction NAT. - **Outside local** et **Outside global**: 8.8.8.8:11467 - Adresses et port de destination à l'extérieur du réseau. Dans ce cas, c'est la même adresse IP car il s'agit d'une seule session de communication vers l'adresse 8.8.8.8 (DNS de Google). show ip nat statistics : ``` Total active translations: 0 (0 static, 0 dynamic; 0 extended) Peak translations: 6, occurred 02:57:12 ago Outside interfaces: GigabitEthernet0/1 Inside interfaces: GigabitEthernet0/0, GigabitEthernet0/0.12, GigabitEthernet0/0.102 GigabitEthernet0/0.202 Hits: 46 Misses: 0 CEF Translated packets: 46, CEF Punted packets: 0 Expired translations: 8 Dynamic mappings: -- Inside Source [Id: 3] access-list Int-List interface GigabitEthernet0/1 refcount 0 Total doors: 0 Appl doors: 0 Normal doors: 0 Queued Packets: 0 ``` - **Total active translations**: 1 - Actuellement, il y a 1 traductions NAT actives. - **Peak translations**: 6 - Le nombre maximum de traductions actives atteintes était de 6, il y a 2 heures, 57 minutes et 12 secondes. - **Interfaces**: - Outside: GigabitEthernet0/1 - L'interface externe utilisée pour les communications sortantes. - Inside: Plusieurs interfaces internes (GigabitEthernet0/0, GigabitEthernet0/0.12, GigabitEthernet0/0.102, GigabitEthernet0/0.202). - **Hits**: 46 - Le nombre de fois où des paquets ont été traduits avec succès. - **Misses**: 0 - Le nombre de fois où des paquets n'ont pas pu être traduits. - **CEF Translated packets**: 46 - Paquets traduits par Cisco Express Forwarding (CEF), un mécanisme de transfert de paquets rapide. - **Expired translations**: 8 - Le nombre de traductions NAT qui ont expiré. :::success En conclusion, le NAT est correctement configuré et fonctionne comme prévu, avec un historique récent de traductions actives et aucune erreur apparente. :+1: ::: On réalise une acquisition de trames avec Wireshark afin de monterer que les paquets circulants entre R1 et Routeur-RT possèdent l'adresse de l'interface du routeur R1 : ![image](https://hackmd.io/_uploads/Syg4t5PX0.png) On voit que c'est bien le cas. L'intérêt d'utiliser une translation d'adresses entre sous-réseau internes sont : - **Épuisement des adresses IPv4**: NAT permet de pallier l'épuisement des adresses IPv4 en réutilisant des adresses IP privées dans différents sous-réseaux internes. - **Réduction du besoin d'adresses IP publiques**: Un seul pool d'adresses IP publiques peut être partagé par plusieurs sous-réseaux internes, réduisant ainsi le besoin d'acquérir et de gérer de nombreuses adresses IP publiques. - **Facilité d'ajout de nouveaux sous-réseaux**: NAT permet d'ajouter facilement de nouveaux sous-réseaux internes sans avoir à se soucier de l'allocation d'adresses IP publiques supplémentaires. Pour configurer le NAT avec redirection de ports, sur le routeur R1, afin que les hôtes du réseau 192.168.100.0/24 puissent s'y connecter, on utilise la commande suivante : ```ip nat inside source static tcp 192.168.12.1 80 192.168.100.222 80``` On teste que notre page web est accessible depuis le réseau 192.168.100.0/24 : ![test](https://hackmd.io/_uploads/BJ_O2qvQ0.png) Pour ajouter un accès SSH, on rajoute à l'aide de cette commande : ```ip nat inside source static tcp 192.168.12.1 22 192.168.100.222 22```, une redirection de port vers le port de SSH (22). On test en essayant de se connecter à notre serveur WEB via SSH : ![image](https://hackmd.io/_uploads/Syf9eswX0.png) :::success Notre NAT est donc, en conclusion, bien configuré ! :+1: :::