• Aucun résultat trouvé

Fonctionnement de la NAT Principe

Dans le document Apprenez le fonctionnement des réseaux TCP/IP (Page 167-170)

Nous avons identifié le problème. Quand un paquet est envoyé sur Internet, la réponse ne revient pas, car l'adresse IP destination est une adresse privée.

Or, cette adresse IP destination dans la réponse est en fait l'adresse IP source qui était indiquée dans la requête !

Il faudrait donc que cette adresse IP source, qui est privée, puisse être remplacée par une adresse publique. C'est là tout le principe de la NAT !

Dans la suite du cours, nous ne nous intéresserons qu'à la NAT dynamique, la NAT statique étant aujourd'hui très peu utilisée, car elle ne répond pas au problème de la pénurie d'adresses IP.

Fonctionnement de la NAT dynamique

Il nous faut maintenant changer l'adresse IP source dans un paquet envoyé sur Internet pour y mettre une adresse IP publique.

Mais laquelle choisir ?

C'est simple, nous allons tout simplement utiliser l'adresse IP du routeur qui fait la liaison entre notre réseau privé et Internet, réseau public. En effet, ce routeur possède une adresse IP publique du côté d'Internet.

Prenons l'exemple de votre réseau chez vous, derrière votre box Internet.

Réseau local derrière box Internet

Les adresses locales sont sur le réseau 192.168.0.0/24 qui est bien un réseau privé. On voit bien aussi l'adresse 82.238.22.47 qui est l'adresse publique de notre box (choisie au hasard)

Regardons maintenant ce qui se passe dans le cas de la NAT lors de l'envoi d'un paquet sur Internet.

sur Internet MAC box couche 3 82.238.22.47 soit 217.70.184.38 Trame Ethernet en sortie de la box

On voit bien ici que l'adresse IP source a été changée pour mettre celle de la box.

Ainsi, notre paquet va aller jusqu'au Site du Zéro, et celui-ci va répondre à l'adresse IP 82.238.22.47 qui est celle de notre box.

Mais comment la box va pouvoir renvoyer le paquet à la bonne machine sur le réseau local ? Que se passe-t-il si plusieurs machines font des requêtes en même temps sur le Site du Zéro ?

C'est une très bonne question !

Pour l'instant, notre box n'a aucun moyen de savoir à quelle machine en interne elle doit renvoyer le paquet, mais nous allons voir que nous pouvons utiliser les ports de la couche 4 pour ajouter une information qui nous permettra de savoir quelle machine a envoyé la requête !

Utilisation des ports de la couche 4

Lors de l'établissement d'une connexion, que ce soit en TCP ou en UDP, un port source est choisi par la machine qui émet la requête. Nous allons nous servir de ce port pour identifier la machine qui a émis la requête à l'origine. Sachant que ce port est choisi aléatoirement entre 1024 et 65535.

Si nous reprenons l'envoi de la trame et y ajoutons les informations de couche 4, cela donne:

Adresse MAC Box

Adresse MAC de 192.168.0.1

Protocole de

couche 3 ... 192.168.0.1 217.70.184.38 Port source 10277

Port destination 80

CRC

Trame Ethernet en sortie de la machine 192.168.0.1

La box va recevoir ce paquet et pouvoir noter la correspondance entre l'adresse IP source 192.168.0.1 et le port source utilisé 10277.

En fait, elle note même un quadruplet d'informations dans une table, la table NAT ! Table NAT

@IP SRC, @IP DST, port SRC, port DST @IP SRC, @IP DST, port SRC, port DST 192.168.0.1, 217.70.184.38, 10277, 80 82.238.22.47, 217.70.184.38, 10277, 80

On a d'un côté les informations sur le réseau local, et de l'autre les informations à la sortie de la box, après que la NAT ait eu lieu.

Regardons maintenant le paquet renvoyé par la box:

Adresse MAC routeur

Trame Ethernet en sortie de la box Le Site du Zéro va répondre à cette requête, et il va envoyer un paquet à notre box :

Adresse MAC routeur Trame Ethernet en sortie du Site du Zéro

192.168.0.1, 217.70.184.38, 10277, 80 82.238.22.47, 217.70.184.38, 10277, 80

Ainsi, notre machine 192.168.0.1 qui a envoyé une requête sur Internet, avec son adresse IP privée, va quand même pouvoir recevoir la réponse.

N'est-ce pas magnifique ? Enfin, presque...

Nous n'en avons pas encore tout à fait fini avec la NAT dynamique.

Imaginons, par le plus grand des hasards, que deux machines sur notre réseau local fassent une requête vers le Site du Zéro, en utilisant le même port source.

La table NAT de la box serait la suivante:

Table NAT

@IP SRC, @IP DST, port SRC, port DST @IP SRC, @IP DST, port SRC, port DST 192.168.0.1, 217.70.184.38, 10277, 80 82.238.22.47, 217.70.184.38, 10277, 80 192.168.0.2, 217.70.184.38, 10277, 80 82.238.22.47, 217.70.184.38, 10277, 80 On se rend alors compte que les informations à droite dans le tableau sont parfaitement identiques.

Au retour d'un paquet appartenant à l'une ou l'autre des connexions, la box n'aura aucun moyen de savoir si c'est 192.168.0.1 ou 192.168.0.2 qui doit recevoir la réponse...

Donc le choix du port source comme élément différenciateur n'est pas suffisant. Il va encore falloir trouver une astuce.

La box entre en jeu

En fait, il y a un moyen simple de s'assurer que toutes les requêtes qui sortiront n'auront jamais le même port source, il suffit que ce soit la box qui le fixe.

Ainsi, la box modifiera à la fois l'adresse IP source ET le port source.

Par rapport à notre cas précédent, ça donnerait la table NAT suivante : Table NAT

@IP SRC, @IP DST, port SRC, port DST @IP SRC, @IP DST, port SRC, port DST 192.168.0.1, 217.70.184.38, 10277, 80 82.238.22.47, 217.70.184.38, 2356, 80 192.168.0.2, 217.70.184.38, 10277, 80 82.238.22.47, 217.70.184.38, 2357, 80

On voit maintenant que lorsqu'un paquet reviendra avec comme port destination 2356, la box saura qu'il s'agit d'un paquet à destination de 192.168.0.1 et que, lorsqu'il reviendra avec comme port destination 2357, ce sera pour la machine 2357.

Vu que c'est la box elle-même qui choisit le port source, on est sûrs qu'on n'aura jamais deux fois le même port !

Récapitulons un peu ce que nous venons de voir.

Dans le document Apprenez le fonctionnement des réseaux TCP/IP (Page 167-170)