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)
|
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 .
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 ».
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.
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.