1. Concepts
Le NAT(Network Address Translation) a été crée afin de résoudre le problème de pénurie
d'adresses IPv4.
Les solutions à ce problème sont en autres :
1.1 CIDR
Dans un premier temps le CIDR(RFC4632) a été mis en place par l'IANA afin de réduire la
table de routage (par agrégation) et pour permettre de s'abstraire des problèmes de classes
pour l'allocation des IP.
+--------------------------------+----------------+ | PREFIX | HOST PART | +--------------------------------+----------------+Contrairement à la vision en classes (A,B et C).
1.2 NAT
Le NAT(RFC3022) a pour but de translater une adresse en une autre.
Dans le but de pouvoir numéroter les machines derrière un NAT, des classes d'adresses ont été
réservée à des fin privée et non routée sur Internet.
Ces classes sont les suivantes et sont référencées dans la RFC1918:
Espace d'adresses | Classe | Nb subnet |
10.0.0.0 à 10.255.255.255 | A | 1 |
172.16.0.0 à 172.31.255.255 | B | 16 |
192.168.0.0 à 192.168.255.255 | C | 256 |
1.3 IPv6
Cf chapitre suivant.
2. Différents types de NAT
2.1 NAT statique
Le NAT statique permet de translater une adresse privée précise vers une adresse publique précise, d'où
le nom "statique".
En somme, c'est de la translation "1 pour 1".
Le NAT chez Cisco implique une terminologie bien précise des espaces dans le NAT.
Dans un premier temps :
Terme | Signification |
Inside local | Adresse IP privée sur lequel on a le contrôle. Typiquement IP que nous attribuons aux hôtes de notre réseau. |
Inside global | Adresse IP publique "translatée" à un hôte de notre réseau possédant une adresse privée. |
Outside global | Adresse IP publique sur une entité qui n'est pas sous notre contrôle. |
Inside local | Adresse IP privée sur une entité qui n'est pas sous notre contrôle. |
2.2 NAT dynamique
Le NAT dynamique a pour but lui aussi de faire de la translation d'adresse 1 pour 1, mais
de manière dynamique.
En effet, une adresse dite 'inside local' sera translater en une adresse 'inside global'.
L'adresse destination 'inside global' est prise dans un pool d'adresses dynamiquement selon
les adresses disponibles dans le pool.
Le NAT dynamique est utilisé souvent dans de l'aggrégation de grands réseaux utilisant
le même type d'adresse privé 'inside local'.
Ici, le routeur lors du retour du DNS va translater l'adresse du serveur web (web.entB.org) en
l'adresse 172.16.0.201.
Ce qui permet de faire des regroupements. Ceci est complexe à mettre en oeuvre.
2.3 NAT overload ou PAT
Le NAT overload ou PAT (Port Adress Translation) a pour but lui de
faire de la translation d'une ou plusieurs adresses 'inside local' vers une adresse
'inside global' (publique). En bref, les adresses privées sont chachées derrière une
seule adresse publique. Ceci est réalisé au moyen du couple adresse IP (inside local)/port.
Exemple :
3. Configuration des différents types de NAT
3.1 NAT statique
NAT# show running-config ! ! Lines omitted for brevity ! interface Ethernet0/0 ip address 10.1.1.3 255.255.255.0 ip nat inside ! interface Serial0/0 ip address 200.1.1.251 255.255.255.0 ip nat outside ! ip nat inside source static 10.1.1.2 200.1.1.2 ip nat inside source static 10.1.1.1 200.1.1.1
3.2 NAT dynamique
NAT# show running-config ! ! Lines omitted for brevity ! interface Ethernet0/0 ip address 10.1.1.3 255.255.255.0 ip nat inside ! interface Serial0/0 ip address 200.1.1.251 255.255.255.0 ip nat outside ! ip nat pool fred 200.1.1.1 200.1.1.2 netmask 255.255.255.252 ip nat inside source list 1 pool fred ! access-list 1 permit 10.1.1.2 access-list 1 permit 10.1.1.1
3.3 NAT overload ou PAT
La configuration du NAT overload se fait essentiellement comme celle du NAT dynamique,
à la différence près que nous allons suffixer la commande 'ip nat inside source' par
'overload'.
NAT# show running-config ! ! Lines omitted for brevity ! interface Ethernet0/0 ip address 10.1.1.3 255.255.255.0 ip nat inside ! interface Serial0/0 ip address 200.1.1.251 255.255.255.0 ip nat outside ! ip nat inside source list 1 interface Serial0/0 overload ! access-list 1 permit 10.1.1.2 access-list 1 permit 10.1.1.1
4. Dépannage concernant le NAT
Il n'y a pas énormément de choses à vérifier sur la configuration du NAT. Celles-ci sont
regroupées dans l'énumération suivante :
R# show access-list