14 octobre 2018

Créer PAT – ou surcharge de NAT – sous Cisco IOS 15.1

Le Port Address Translation, ou surcharge de NAT, ou NAT Overload, permet de traduire beaucoup d’IP du réseau local en une IP publique (ou plusieurs). Au contraire des NAT statiques et dynamiques dont le nombre de sessions simultanées se limitent au nombre d’IP publiques disponibles.

Avec le PAT, toutes les IP qui sortent du réseau le feront avec la même IP. Par contre, chaque session se verra attribuer un numero de port (TCP ou UDP, couche 4, de transport). Si vous envoyez une requête vers un serveur Internet, votre IP privée sera donc flanquée d’un numero désignant que cette session vous appartient et le routeur vous la retournera correctement. Le numero de port agit comme un identifiant qui indique que cette session a été initiée par telle ou telle ip du réseau local.

Je rappelle que dans cet exemple, on va « NATER » nos IP privées en IP publiques, mais que le NAT/PAT peut très bien impliquer seulement des IP privées à l’intérieur d’un réseau local.

Nous allons voir ici comment mettre en place la surcharge de NAT à l’aide d’un routeur Cisco, et avec à notre disposition un pool d’adresses IP Publiques. Dans une configuration où nous n’aurions qu’une seule IP Publique à NATER, ce n’est pas bien différent, nous le verrons ici aussi.

————————————-

-Un petit schéma de topologie pour aider à la reflexion :

 

-Dans cette histoire, le but est d’activer le PAT au niveau de R2, afin que tous les PC du réseau local (de PC1 à PC9), sortent sur Internet en utilisant un pool d’IP Publiques associées à des ports TCP et UDP.

-On considère que le serveur est sur Internet, car même si dans ce schéma tout est routé et tout se pingue, ça revient au même.

-Nous n’avons donc rien à faire sur R1 puisqu’il ne sert qu’à router les trois réseaux locaux. Tout se passera donc au niveau de R2.

-Notre pool d’IP Publiques contient deux IP : de 223.255.255.1 à 223.255.255.2.

-Vous pouvez télécharger le fichier Packet Tracer histoire de faire vos propres simulations de requêtes et ainsi vous assurer que les IP sont bien traduites :

Télécharger le fichier Packet Tracer

————————————-

-On prend donc la main sur R2 :

–>On défini le pool d’adresses publiques qui sera utilisé. Ne tapez cette commande que si vous avez un pool d’IP publiques. Si vous n’avez qu’une IP publique ce n’est pas nécessaire.

R2(config)#ip nat pool PAT-POOL 223.255.255.1 223.255.255.2 netmask 255.255.255.252 : le nom PAT-POOL est choisi par moi-même, notez bien le nom que vous choisissez car il servira pour lier une ACL.

 

————————————-

–>On créer une liste ACL qui autorisera seulement nos trois réseaux à passer par le NAT.

R2(config)#access-list 1 permit 192.168.10.0 0.0.0.255 : La donnée 0.0.0.255 représente le masque de sous réseau 255.255.255.0. Pour les ACL on donne en fait les bits d’hôtes, c’est comme ça. Un masque en 24 bits ne laisse que 8 bits d’hôtes, soit 0.0.0.255. Le masque semble donc inversé.

R2(config)#access-list 1 permit 192.168.20.0 0.0.0.255 : on fait donc la même chose pour chaque réseau local.

R2(config)#access-list 1 permit 192.168.30.0 0.0.0.255

 

*ATTENTION : Même dans le cas où vous n’avez qu’une seul IP publique à NATER, vous devez entrer ces commandes puisque vous aurez besoin de cette liste ACL.

 

————————————-

–>Puis on paufine la règle NAT en y associant l’ACL et en activant la surcharge NAT.

R2(config)#ip nat inside source list 1 pool PAT-POOL overload : on indique donc que l’on souhaite utiliser la liste ACL numero 1, sur le pool PAT-POOL, et que le NAT doit être en mode overload, autrement dit surcharge, ou PAT.

*ATTENTION : Si vous n’avez qu’une seule IP Publique à NATER, la manipulation est un peu différente, en effet cette dernière commande implique un POOL, il faut donc taper autre chose dans ce cas :

 

-Si je n’avais qu’une seule IP Publique, je devrais configurer l’interface externe du routeur et lui donner cette IP.

-Par exemple, je possède l’IP publique 209.165.45.1/8.

-Je vais configurer l’interface G0/0 de R2 pour qu’elle possède cette IP.

R2(config)#interface g0/0 : je sélectionne l’interface.

R2(config-if)#ip addr 209.165.45.1 255.0.0.0 : je lui assigne mon unique IP publique avec son masque.

-Puis j’entre la règle de NAT :

R2(config)#ip nat inside source list 1 interface g0/0 overload : On crée la règle NAT en mode overload et qui est basée sur l’IP unique de l’interface G0/0.

*Les dernières commandes sont à exécuter, que vous ayez une ou plusieurs IP publiques.

 

————————————-

–>Puis on spécifie quelles interfaces du routeur sont à l’intérieur et à l’extérieur :

R2(config)#interface s0/0/0 : on sélectionne l’interface.

R2(config-if)#ip nat inside : on spécifie qu’elle est interne à notre réseau privé.

R2(config)#interface g0/0 : on sélectionne l’interface.

R2(config-if)#ip nat outside : on spécifie qu’elle est externe à notre réseau privé.

————————————-

–>La surcharge NAT est configurée !

————————————-

-Pour en avoir le cœur net, voyons le résultat d’une simulation :

 

-L’enveloppe bleue est un PING envoyé à partir de PC1 qui possède l’adresse source 192.168.10.10.

-L’IP de destination du paquet est celle du serveur Internet 209.165.45.2.

-Le paquet a traversé le réseau local, toujours en possédant 192.168.10.10 comme IP source.

-Comme on peut le voir dans le cadre rouge, en arrivant dans R2 (In Layers), le paquet avait l’IP source 192.168.10.10.

-Comme on peut le voir dans le cadre rouge, en sortant de R2 (Out Layers), le paquet aura l’IP Source 223.255.255.1.

*Vous constatez probablement qu’aucun port n’est attribué à notre paquet, la couche de transport n’entre pas en jeu (Layer 4). C’est parce qu’il s’agit ici d’un PING, le PING fait partie du protocole ICMP qui n’utilise pas la couche transport, donc pas de port attribué. Il faut savoir que cela est une situation bien spécifique à ICMP (et probablement d’autres protocoles). Avec une requête HTTP, le paquet aurait un numero de port source et de destination. A la place, le Ping possède un numéro de séquence dans sa trame.

 

->Faites la simulation dans Packet Tracer, en utilisant une requête HTTP au lieu d’une ICMP. Envoyez une requête HTTP simultanément depuis PC1 et PC2 vers le Serveur, vous constaterez que leurs ports seront différent.

————————————-

Je vous invite à utiliser le simulateur dans Packet Tracer si vous voulez vous familiarisez avec le processus.

You may also like...

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *