La Translation d’adresse
À l’origine du réseau public Internet, chaque organisation souhaitant utiliser ce réseau devait demander un pool d’adresses correspondant à une classe d’adresse. L‘IANA, en charge de la distribution de ces adresses, veille à ce que chaque adresse soit utilisée par un seul équipement. Permettant ainsi le bon fonctionnement du routage de l’information. Ajoutons que sans cette régulation, nous aurions rapidement été à court d’adresses IP, ce qui aurait fortement ralenti le développement du réseau Internet. La mise en place du VLSM ne résolvait qu’une partie du problème. L’élément clé qui nous a permis d’atteindre le déploiement de l’IPv6 est la translation d’adresse, plus communément appelée NAT (Network Address Translation).
Concept de la translation d’adresse NAT.
Le fonctionnement du NAT est défini dans la RFC 3022. La translation d’adresse est une technologie permet de modifier l’adresse source d’un paquet. Prenons l’exemple d’un utilisateur du LAN souhaitant ce connecter à un site internet. L’utilisateur enverra un paquet sur le réseau publique. Le paquet aura l’adresse source du pc de l’utilisateur. Le paquet, une fois arrivée sur le router, changera l’adresse IP source en indiquant l’addresse de l’interface Wan du routeur. Ce mécanisme s’appelle une translation.. Par conséquent, cette translation d’adresse permettra au paquet d’avoir une adresse source qui sera routable sur internet (IP publique) et ainsi permettra au à l’émetteur de recevoir une réponse de la part du récepteur.
Les types de NAT
Il existe plusieurs types type que nous allons décrire dans les prochains chapitres :
- Le NAT statique
- Le NAT Dynamique
- Le NAT avec surcharge
NAT statique
Rappellons que l’illustration présentant le concept du NAT que nous vous avons précédemment illustre ce qu’est le NAT statique. Le NAT statique permet de translater l’IP d’une machine cliente avec une adresse IP. Cela implique que deux machines d’un même réseau ne pourront pas naviguer sur Internet simultanément. En effet, si l’adresse est déjà utilisée pour une translation, elle ne pourra être utilisée. Ce type de NAT n’est plus vraiment utilisé mais nous verrons tout de même sa mise en pratique en partant du lab suivant :
- Configuration de base R1
Router#configure terminal
Router(config)#hostname R1
R1(config)#interface gig 0/0
R1(config-if)#no shutdown
R1(config-if)#ip address 192.168.0.254 255.255.255.0
R1(config-if)#interface gig 0/1
R1(config-if)#no shutdown
R1(config-if)#ip address 1.0.0.1 255.255.255.252
- Configuration de base INTERNET
Router#configure terminal
Router(config)#hostname INTERNET
INTERNET(config)#interface gig 0/0
INTERNET(config-if)#ip address 1.0.0.2 255.255.255.252
INTERNET(config-if)#no shutdown
INTERNET(config-if)#interface gig 0/1
INTERNET(config-if)#ip address 1.0.0.6 255.255.255.252
INTERNET(config-if)#no shutdown
- Configuration de base R2
Router#configure terminal
Router(config)#hostname R2
R2(config)#interface gig 0/1
R2(config-if)#ip address 1.0.0.5 255.255.255.252
R2(config-if)#no shutdown
R2(config-if)#interface gig 0/0
R2(config-if)#ip address 192.168.1.254 255.255.255.0
R2(config-if)#no shutdown
- Configuration sur R1
Dans un premier temps, nous devons indiquer à notre routeur qu’elle est l’interface LAN et qu’elle est l’interface WAN. Notre interface LAN est identifiée par le paramètre INSIDE. Pour notre interface WAN l’interface OUTSIDE.
R1(config-if)#interface gig 0/0
R1(config-if)#ip nat inside
R1(config-if)#interface gig 0/1
R1(config-if)#ip nat outside
La configuration du NAT statique nécessite la création d’une règle. Nous indiquerons dans cette règle, qu’elle est adresse de notre LAN sera translatée. Ensuite, nous indiquerons explicitement notre IP publique. Dans le cas de R1 cela sera l’adresse 1.0.0.1.
R1(config-if)#ip nat inside source static 192.168.0.1 1.0.0.1
- Configuration sur R2
Nous observerons la même logique que pour R1.
R2(config)#interface gig 0/0
R2(config-if)#ip nat inside
R2(config-if)#interface gig 0/1
R2(config-if)#ip nat inside
R2(config-if)#ip nat inside source static 192.168.1.1 1.0.0.5
- Mise en place du routage par défaut sur R1
R1(config)#ip route 0.0.0.0 0.0.0.0 1.0.0.2
Mise en place du routage par défaut sur R2
R2(config)#ip route 0.0.0.0 0.0.0.0 1.0.0.6
Vérifions maintenant notre configuration depuis PC1, nous tenterons de communiquer avec l’interface WAN de R2.
Avec un outil tel que Wireshark, qui nous permet de sniffer notre réseau, nous pouvons voir que l’adresse source est bien l’adresse IP de l’interface WAN du routeur R1.
Depuis le routeur R1, vous pouvez également voir les translations via la commande
R1#show ip nat translations
Vous pouvez également avoir des statistiques relatives aux translation d’adresse avec la commande.
R1#show ip nat statistics
Si nous voulant connaitre le nombre de paquet translaté nous regarderons l’information « CEF Translated packets».
NAT Dynamique et NAT overload
Dans le NAT statique, nous avons vu qu’une seule adresse peut être translater, ce qui ne répond pas souvent à la demande des entreprises à savoir, permettre à l’ensemble des salariés de pouvoir naviguer sur internet. Le NAT dynamique va nous permettre de nous appuyer sur un pool d’adresse IP publique. Cela nous permettra de pouvoir autoriser autant d’utilisateur que d’adresse IP publique disponible dans notre pool, en d’autres termes si nous avons 250 utilisateurs vous devriez avoir un pool de 250 adresses IP publiques.
Bien que cette solution soit fonctionnelle, cela demande beaucoup d’adresse IP publique or nous avons vu plus tôt que nous en manquons. FInalement La solution se trouve dans le 3ème type de NAT. Il faut dire que nous retrouvons ce type de NAT dans les box des fournisseurs d’accès internet (FAI).
Le NAT avec la surcharge aussi appelé NAT overload ou encore PAT permet d’utiliser l’adresse IP publique et les ports éphémère (port de 49152 à 65535) ainsi avec une seul adresses IP, nous pouvons translater 16383 paquets. La table de translation ne va plus faire correspondre une adresse IP privé et une adresse publique mais va surcharger l’information en indiquant le port utilisé par l’adresse publique pour envoyer sa requête
Schéma de fonctionnement
Examinons cela à l’aide d’une mise en application, nous partirons d’une infrastructure ressemblante à ce que nous avons pu voir dans le chapitre NAT statique.
- Configuration de base de R1
Router#configure terminal
Router(config)#hostname R1
R1(config)#interface gig 0/0
R1(config-if)#ip address 192.168.0.254 255.255.255.0
R1(config-if)#no shutdown
R1(config-if)#interface gig 0/1
R1(config-if)#ip address 1.0.0.1 255.255.255.252
R1(config-if)#no shutdown
R1(config-if)#ip route 0.0.0.0 0.0.0.0 gig0/1
- Configuration de base de R2
Router#configure terminal
R2(config)#interface gig 0/0
R2(config-if)#ip address 192.168.1.254 255.255.255.0
R2(config-if)#no shutdown
R2(config-if)#interface gig 0/1
R2(config-if)#ip address 1.0.0.5 255.255.255.252
R2(config-if)#no shutdown
R2(config-if)#ip route 0.0.0.0 0.0.0.0 gig0/1
- Configuration de base Internet
Router#configure terminal
Router(config)#hostname INTERNET
INTERNET(config)#interface gig 0/0
INTERNET(config-if)#ip address 1.0.0.2 255.255.255.252
INTERNET(config-if)#no shutdown
INTERNET(config-if)#interface gig 0/1
INTERNET(config-if)#ip address 1.0.0.6 255.255.255.252
INTERNET(config-if)#no shutdown
- Configuration sur R1
Précédemment, pour le NAT statique, nous avons défini LAN (inside) et l’interface WAN ((outside), Ici, nous en ferrons de même.
R1(config)#interface gig 0/0
R1(config-if)#ip nat inside
R1(config-if)#interface gig 0/1
R1(config-if)#ip nat outside
Nous allons définir qu’elles seront les hôtes pour lesquelles nous permettons la translation de l’adresse, nous passerons donc à la création d’une ACL standard.
R1(config)#access-list 1 permit 192.168.0.0 0.0.0.255
Ensuite, Après avoir créer notre ACL, nous configurerons la translation d’adresse.
R1(config)#ip nat inside source list 1 interface gig 0/1 overload
- Configuration sur R2
R2(config)#interface gig 0/0
R2(config-if)#ip nat inside
R2(config-if)#interface gig 0/1
R2(config-if)#ip nat outside
R2(config-if)#access-list 1 permit 192.168.1.0 0.0.0.255
R2(config)#ip nat inside source list 1 interface gig 0/1
R2(config)#no ip nat inside source list 1 interface gig 0/1
R2(config)#ip nat inside source list 1 interface gig 0/1 overload
En conclusion, nous pouvons passer à la vérification de notre configuration en exécutant un « ping » de PC1 et PC2 vers l’interface WAN de R2.En observant la table de translation, nous pouvons voir que les deux machines, PC1 et PC2, bénéficient dans la translation d’adresse.