Retour à l’index

 

Le NAT

 

1 Le NAT

 

A l’origine, la technologie du  NAT à été mise en place  pour palier au manque d’adresses IPv4 libres (adresses  nécessaires pour se connecter à Internet). Ce type d’adresse est codé sur quatre octets, de 0.0.0.0 à 255.255.255.255. Certaines sont réservées en conséquence inutilisables ( exemple l’adresse  255.255.255.255 qui est utilisée pour  du broadcast ). Il y a donc un maximum de 2 puissances 32  adresses possible.

On distingue notamment les adresses publiques et les adresses privées qui sont réservées aux réseaux privés.

Il y a donc des intervalles d’adresses privées (RFC 1918) qui sont :

 

Les adresses :

10.0.0.0 - 10.255.255.255 (10/8 prefix)

172.16.0.0 - 172.31.255.255 (172.16/12 prefix)

192.168.0.0 - 192.168.255.255 (192.168/16 prefix)

 

Etant donné que le nombre de machines connectées à l’Internet devient de plus en plus important et que parmi cette plage d’adresses beaucoup d’adresses sont réservées, il devient nécessaire de trouver une solution au manque d’adresses IP. Le NAT, nous allons le voir, permet de remédier à ce problème.

 

Comment fonctionne la technologie Nat

 

A la base, le NAT fonctionne en fournissant une correspondance entre des adresses IP privées  et des adresses IP publiques. Le routeur établit dans une table une correspondance entre l’adresse IP privée locale interne (ALI) d’une machine du site de NAT,  à une adresse IP publique globale interne (AGI)  (cf annexe).

 

Deux types de traduction sont possibles :

Traduction statique indique qu’à une ALI correspond une AGI donnée de manière statique. Cela peut être utile pour une  machine qui héberge des services Internet.

 

     
    ip nat inside source static 10.10.10.1 172.16.131.1
 

 

Cette commande associe de manière statique  une ALI  10.10.10.1 à une AGI 172.16.131.1.  Cela veut dire que vue de l’extérieur (Internet), la machine du réseau local, d’adresse 10.10.10.1 n’est connue que à travers l’adresse 172.16.131.1  .

Dans le même exemple, voici la table de translation du NAT du routeur :

router#show ip nat translation
Pro Inside global    Inside local    Outside local  Outside global
--- 172.16.131.1     10.10.10.1      ---              ---

 

Traduction dynamique permet à une machine ALI de se connecter avec une adresse AGI qui sera prise dans un pool  d’adresses prédéfini . Dans ce cas, le routeur parcourt le pool dans le sens croissant  jusqu’à ce qu’il trouve une adresse libre de toute association. Cela donne sur le routeur :

 

ip nat pool test 172.16.131.2 172.16.131.10 netmask 255.255.255.0
 // établissement du lien entre l’access-list et le pool
 ip nat inside source list 7 pool test 

 

Ici, le pool d’adresses de AGI est une plage qui va de 172.16.131.2  à 172.16.131.10. Ainsi, si une machine du réseau locale souhaite se connecter à Internet, le routeur fera la correspondance entre l’ALI  10.10.10.1 par L’AGI 172.16.131.2. Puis, si une autre machine du réseau souhaite également se connecter, le routeur lui attribuera, à l’ALI  10.10.10.2   l’AGI  172.16.131.3 pris dans le pool d’adresses et selon la disponibilité. 

Suite à ces commandes, non seulement il faut définir l’access-list 7, mais il faut aussi définir quelle est  l’interface d’entrée du routeur et son interface de sortie. Voici les commandes qui le permettent :

 

interface e 0
 ip address 10.10.10.254 255.255.255.0
 ip nat inside
 
 interface s 0
 ip address 172.16.131.254 255.255.255.0
 ip nat outside
 
 access-list 7 deny host 10.10.10.1
 access-list 7 permit 10.10.10.0 0.0.0.255
// choix de l’interface
// adresse IP de l’interface
// Définie comme interface // interne 
 
 
// Définie comme interface
// externe
 
// définition de l’access- // list 7
                   

Un timeout est défini pour la translation dynamique, au delà de ce timeout si  une machine ne fait pas de requête vers Internet, alors l’association de son ALI à une AGI est détruite de la table des translations. Ceci est important pour ainsi libérer l’adresse AGI,  si la machine dont l’adresse est translatée n’est plus active.  Voici la commande pour définir ce timeout :  

 

router(config)#Ip nat translation timeout (secondes)     

                                          

 

 

2 Le PAT (le NAT avec utilisation des Ports)

 

En général, la technique retenue pour le NAT est d’associer aux ALI l’adresse correspondant à l’interface de sortie du routeur. Ainsi toutes les machines du réseau privé du site natté, auront pour unique adresse l’interface de sortie du routeur. Ayant toute la même adresse (adresse de sortie du routeur) globale sur Internet, le routeur distinguera ces machines, du réseau privé, en leur attribuant un port de communication. Ce port est en fait fictif.

Par exemple, trois machines d’un réseau privé souhaitent se connecter en même temps sur Internet. Si le routeur est configuré en PAT, il fera correspondre l’adresse ip de chacune des machines à l’adresse ip de son interface de sortie disons par exemple 192.168.50.13 . Avec la technologie NAT, Les trois machines vues d’Internet auront la même adresse 192.168.50.13. Si un correspondant souhaite  répondre à la machine « 1 » du réseau privé il va émettre un datagramme dont l’adresse de destination est 192.168.50.13 . Vous me direz comment le routeur sait que ce paquet est destiné à la machine « 1 »  et non pas à la « 2 » ou même à la « 3 » . En fait, il associe à chacune de ces machines, les ports fictifs. Par exemple il va associer à la machine « 1 »  le port

fictif 5006 donc cette machine sera identifiée par l’adresse AGI 192.168.50.13 :5006. Cette technique est appelée le PAT (port address translation). La table des traductions s'enrichit, elle ne reflète plus des paires d'adresses mais des quadruplets (@IP locale interne, port 1, @ IP globale interne, port 2).

 

Un autre Exemple, soit la machine ayant l'ALI 10.1.1.1 qui établit une connexion http (80) vers le serveur  WEB  128.5.3.9 à partir du port 1503. Le routeur va associer la paire (10.1.1.1, 1503) à la paire (193.49.96.64, 1503) sachant que 193.49.96.64 correspond à l’interface de sortie du routeur. Le numéro de port avant traduction n'est pas forcément  celui utilisé après traduction. Lorsque le serveur renvoie un paquet en retour, le routeur réécrit ce paquet en remplaçant l'adresse destination et le port destination (193.49.96.64, 1503) en (10.1.1.1, 1503).

Une fois PAT mis en oeuvre et en excluant les ports réservés, un routeur Cisco peut associer environ 4000 ALI à une même AGI qui peut être l’interface de sortie du routeur Cisco.

La commande nécessaire pour la mise en place du PAT sur le routeur est la suivante :

Elle définit l’interface dont  l’adresse sera la  AGI  mise en correspondance avec toutes les ALI des machines du réseau local,  ici c’est l’interface Ethernet 0 associée à l’access-list 1.

      

     router(config)# ip nat inside source list 1 interface e0

    

 L’access-list 1 définie permet de laisser passer toutes les machines du réseau 10.1.1.0 , le Nat avec PAT sera appliqué à toutes les ALIs de ce réseau . La commande est :

  router(config)# access-list 1 permit 10.1.1.50 0.0.0.255           

 
Il est important de ne pas oublier de définir quelle est l’interface interne et l’interface externe,

( voir la commande dans la partie traduction dynamique ci dessus ).

Voici ce que donne la table des translations de NAT ou PAT ici lorsqu’on ping  « www.google.com » .

 

 

router# ping www.google.com

. . . .

router#sh ip nat tr

Pro Inside global      Inside local       Outside local      Outside global

tcp 192.168.50.13:1429 10.1.1.50:1429    66.226.8.21:80     66.226.8.21:80

tcp 192.168.50.13:1427 10.1.1.50:1427   209.132.218.69:80  209.132.218.69:80

tcp 192.168.50.13:1425 10.1.1.50:1425   81.91.67.68:80     81.91.67.68:80

tcp 192.168.50.13:1426 10.1.1.50:1426   81.91.67.68:80     81.91.67.68:80

 udp 192.168.50.13:1424 10.1.1.50:1424  194.254.164.6:53    194.254.164.6:53

udp 192.168.50.13:1428 10.1.1.50:1428  194.254.164.6:53    194.254.164.6:53

 

 

192.168.50.13 correspond à l’adresse IP de l’interface Ethernet 0 défini comme interface de sortie,

10.1.1.50 correspond à l’adresse de la machine sur laquelle on effectue le ping, en gras sont indiqués les ports.

Ainsi le routeur conserve en mémoire cette table pendant le timeout, puis il la détruit.

 

Il est possible d’afficher les statistiques sur le NAT.

 

Cisco1600#sh ip nat st

Total active translations: 2 (0 static, 2 dynamic; 2 extended)

Outside interfaces:

  Ethernet0

Inside interfaces:

  Ethernet1

Hits: 5284  Misses: 462

Expired translations: 460

Dynamic mappings:

-- Inside Source

access-list 1 interface Ethernet0 refcount 2

 

Ces statistiques montrent que 2 traductions sont en cours sur le routeur : 2 traductions dynamiques et aucune traduction statique. Ce sont toutes des traductions étendues. Il y a 1 interface externe  et 1 interface interne définie. Hits indique le nombre de fois où le routeur à parcouru la table des traductions et a trouvé une association existante, misses indique le nombre d'échecs débouchant sur la création d'une nouvelle traduction. Expired translations indique le nombre de traductions ayant été détruites depuis le dernier démarrage du routeur.

 

Il est aussi important de préciser que le NAT apporte une sécurité pour le réseau local car il permet de cacher l’adresse privée des machines du réseau local. Ainsi, un utilisateur d’Internet ne verra que l’adresse global des machines, c’est à dire l’adresse de sortie d’une interface du routeur  .

 

 

3. Application du NAT à notre projet

 

 

 

     Topologie du réseau incluant notre routeur  le cisco 1600

 

 

 

 

 

Pour la mise en place du NAT avec PAT sur le routeur Cisco 1600, nous avons intégré ce dernier  au réseau de la salle télécom F201. Toutes les machines situées sur le réseau 192.168.50.0 sont des machines du réseau télécom.

On a crée un second réseau 10.1.1.0 qui est connecté à l’interface Ethernet 1 du routeur Cisco 1600.

C’est avec ce réseau que nous avons mis en place le NAT. En tapant les commandes décrites ci-dessus.

Nous avons mis en place un PAT dynamique, faisant correspondre toutes adresses ALI du réseau 10.1.1.0, une  AGI 192.168.50.13 qui n’est autre que l’adresse de l’interface de sortie Ethernet 0 du Cisco 1600.

 

Pour permettre de surfer sur Internet à partir de n’importe quelle machine du réseau 10.1.1.0, nous avons utilisé l’adresse IP  192.168.50.13 d’une machine du réseau 192.168.50.0. Sachant que cette machine initialement peut accéder à Internet nous avons débranché son câble réseau, ensuite attribué cette adresse à l’interface de sortie Ethernet 0 du Cisco 1600. Le PAT dynamique étant mis en place, tous les paquets sortant du réseau 10.1.1.0 auront en sortie du Cisco 1600 l’adresse source 192.168.50.13.

 

Il reste maintenant à configurer le routeur Cisco 1600, pour lui préciser une route par défaut pour tous les paquets dont la destination n’est pas le réseau 192.168.50.0 (par exemple les paquets à destination d’Internet).

Dans la suite nous indiquerons toutes les commandes nécessaires pour la configuration désirée

 

 

Table de routage du Cisco 1600 avant configuration de route par défaut  :

 

 

 

Cisco1600#sh ip route

Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP

       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area

       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2

       E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP

       i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, * - candidate  

       default, U - per-user static route, o - ODR

 

Gateway of last resort is not set

 

     10.0.0.0/24 is subnetted, 1 subnets

C       10.1.1.0 is directly connected, Ethernet1

C    192.168.50.0/24 is directly connected, Ethernet0

 

On remarque qu’il n’y a pas de passerelle définie. De plus on observe que le routeur connaît implicitement les réseaux auxquelles ses interfaces sont connectées, ici 10.1.1.0 connecté à Ethernet 1 et 192.168.50.0 connecté à Ethernet 0.

 

Route par défaut :

 

 Il s’agit de donner au routeur une route qu’il pourra toujours utiliser s’il ne sait pas où router le paquet. Cela est intéressant dans certains cas, comme celui décrit ci-dessus.

Pour définir la route par défaut il existe trois méthodes qui sont résumées par les commandes suivantes :

 

ip default-gateway, ip default-network, and ip route 0.0.0.0 0.0.0.0.

 

·        ip default-gateway

Cette commande diffère des 2 autres car elle doit être utilisée uniquement quand ip routing est invalidé sur le routeur Cisco. Si le routeur est un hôte dans le monde IP, cette commande peut être utilisée pour définir une passerelle par défaut pour le routeur. Elle peut aussi être mis en place dans le cas où l’on veut utiliser le routeur Cisco en mode démarrage pour récupérer sur un serveur tftp l’image du logiciel  IOS sur le routeur.

·         ip default-network

La seconde possibilité vient de  la commande ip default-network qui nécessite la validation de ip routing sur le routeur Cisco. Lorsqu’on configure ip default-network , le routeur considère la route vers se réseau comme la route empruntée en dernier recours. Il est possible de définir plusieurs réseaux comme un réseau par défaut , dans ce cas si le routeur connaît la route vers ce réseau , il la positionne dans sa table de routage  avec  une ‘*’ indiquant qu’une route par défaut est possible. 

 

 

 Cisco1600(config)#Ip defaut-network  192.168.50.1

 

 

·        ip route  0.0.0.0  0.0.0.0

 

 

Cisco1600(config)#ip route 0.0.0.0 0.0.0.0 192.168.50.1

 

 

Ici, la route par défaut est donc 192.168.50.1 qui correspond au routeur de sortie vers Internet. Ainsi, tous les paquets dont l’adresse destination n’a pas de route dans la table seront routés vers le réseau par défaut  (192.168.50.1).

Pour cela, il faut mettre en place le protocole RIP (routage Internet protocole)

 

 

L’utilisation de cette commande nécessite la possibilité de router des paquets IP, donc d’avoir ip routing validé sur le routeur. Le protocole de routage IGRP ne comprend pas la route statique par défaut 0.0.0.0, c’est pour cela que si IGRP est mise en place sur le routeur, il faut utiliser la commande ip default-network et donc invalider le ip routing par la commande :

 

 

 

Cisco1600(config)#no ip routing 

 

 

 
Il est possible de configurer plusieurs routes par défaut mais dans ce cas il faut utiliser la commande ip default-network. C’est la route ayant la plus petite distance administrative sera choisie.

Si toutes les routes par défaut ont la même distance administrative alors c’est celle qui est en première position dans la table de routage qui sera choisie comme passerelle par défaut.

Si on choisit les deux commandes ip default-network et ip route 0.0.0.0 0.0.0.0 pour configurer un candidat possible pour une route par défaut et que le réseau choisi avec la commande ip default-network est connu comme réseau statique, le réseau défini avec la commande ip default-network sera placé prioritaire et sera choisi comme passerelle de dernier ressort.

Sinon, si le réseau choisi par la commande ip default-network est obtenu par un protocole de routage, le réseau donné par la commande ip route 0.0.0.0 0.0.0.0 sera placé avec la plus petite distance administrative, il sera prioritaire et choisi comme passerelle de dernier ressort.

Finalement, si plusieurs réseaux sont indiqués par la commande ip route 0.0.0.0 0.0.0.0 pour configurer une route par défaut, le trafic sera partagé entre ces différentes routes.

 

         En résumé, on peut utiliser la commande  ip default-gateway  quand ip routing est désactivé sur le routeur Cisco. On peut utiliser les commandes ip default-network et ip route 0.0.0.0 0.0.0.0 pour positionner la passerelle de dernier ressort sur le routeur Cisco qui  a le ip routing validé.

 

 

Voici la table de routage, une fois la route statique par défaut définie avec la commande ip route 0.0.0.0 0.0.0.0:

 

 

Cisco1600#sh ip route

Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP

       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area

       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2

       E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP

       i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, * - candidate

       default, U - per-user static route, o - ODR

 

Gateway of last resort is 192.168.50.1 to network 0.0.0.0

 

     10.0.0.0/24 is subnetted, 1 subnets

C       10.1.1.0 is directly connected, Ethernet1

C    192.168.50.0/24 is directly connected, Ethernet0

S*   0.0.0.0/0 [1/0] via 192.168.50.1

 

 

On remarque que la.route statique 192.168.50.1 à été positionnée. Ceci est indiqué par la présence du « * »  qui, dans les codes de la table indique bien le « candidate default ».

 

 

4. Difficultés rencontrées dans la mise en place du NAT :

 

Il nous a été difficile de définir la route par défaut, nous n’avions pas les commandes nécessaires.

Après une recherche approfondie sur Internet précisément sur le site de Cisco, nous avons obtenu les solutions décrites ci-dessus. La commande qui à été utilisée est ip route 0.0.0.0  0.0.0.0.

Il nous a été difficile dans un premier temps de comprendre que la mise en place du NAT ne pouvait pas se faire sans la définition d’une Access-List qui va avec.

 

5. Annexe

 

Routeur NAT

Routeur sur lequel NAT a été activé.

 

Site NAT

Site ayant mis en place un routeur NAT au point de connexion de son réseau avec l'Internet.

 

Terminologie employée pour le NAT  par Cisco :

 

 Espace d'adressage public :

L'espace des adresses gérées par l’ IANA7. Ces adresses sont globalement uniques, elles sont routées sur l'Internet.

 

 Espace d'adressage privé

L'espace des adresses utilisées en interne par un site NAT.

Ces adresses sont généralement celles définies par le RFC19188, mais pas obligatoirement.

 

Dans les termes suivants, les mots interne et externe désignent l'origine d'une adresse par rapport au routeur NAT. Les mots local et global désignent le côté du routeur où cette adresse évolue.

 

 

 

 

 Adresse IP locale interne :

 ALI

Adresse IP attribuée dans l'espace d'adressage privé, il s'agit de l'adresse IP d'une machine sur un site NAT.

 

 Adresse IP globale interne :

 AGI

Adresse IP attribuée dans l'espace d'adressage public. Vu de l'extérieur, il s'agit de l'adresse IP d'une machine située à L’intérieur d'un site NAT.

 

 Adresse IP globale externe :

 AGE

Adresse IP attribuée dans l'espace d'adressage public. C'est celle d'une machine sur Internet, en dehors du site NAT.

 

 Adresse IP locale externe

 ALE

Il s'agit de l'adresse IP d'une machine externe au site telle qu'elle est vue par les machines à l'intérieur. Il s'agit normalement de la même adresse que l'adresse IP globale externe de cette machine, sauf dans le cas de sites ayant mis en œuvre l’ overlapping.

 

 

Retour à l’index