Le Principe du NAT


  1. Le Principe du NAT
    1. Les connexions et sockets
    2. Le Principe du NAT Statique
    3. Le Principe du NAT Dynamique
    4. Le NAT logiciel sous Linux
    5. Le Transfert de Ports ( Forward de port )
    6. Le forward de port sur la livebox
Le NAT ( Network Adress Translation ) permet de partager une connexion internet entre plusieurs ordinateurs sur un réseau local. En effet, les PC sur un réseau local ont des IP locales ( voir ci dessous ) qui ne sont pas routables sur internet. De ce fait, le NAT est né afin de permettre à tous les PC d'un réseau à se connecter internet.
Le NAT est notamment utiliser par les routeurs. Nous allons voir ici comment il fonctionne.

Les connexions et sockets

Avant de rentrer dans le vif du sujet, il faut comprendre comment fonctionne les connexions client/serveur.
Nous ne rentrerons pas dans les détails :

Lorsqu'un client se connecte au serveur, il :
Le paquet contient entre ces informations : l'ip du client, le port source et le port de destination.

Le serveur reçoit alors le paquet envoyé par le client, ce dernier va lui répondre :
En pratique cela donne, si on prend un utilisateur avec une IP 82.125.12.15 qui se connecte au site WEB de Google ( 216.239.59.99 ) :
L'utilisateur à travers sont navigateur WEB va envoyer :un paquet avec comme port source 1052 et donc son IP 82.125.12.15, ce paquet sera à destination de Google 216.239.59.99 à destination du port 80 ( WEB ).
Google va recevoir le paquet et y répondre à partir de son port 80 et son IP 216.239.59.99 à destination de l'utilisateur 82.125.12.15 et du port 1052 qui sera restée ouvert en attente de réponse de la part de Google.

Schéma connexion au site GoogleSchéma d'une connexion au site Google

Le Principe du NAT Statique

Le NAT Statique ( très peu utilisé ) permet de faire correspondre à n IP locales du réseau n IP publiques. La correspondance se fera bien sûr dans les deux sens. Si on prend deux machines sur le réseau ayant respectivement les IP 192.168.0.1 et si l'on considère une IP publique 82.125.12.15 le routeur va alors faire les translations suivantes :


Schéma d'une connexion NAT Statique

Schéma d'une connexion NAT Statique

En somme on peut résumer le NAT statique par l'égalité suivante : 1 adresse Privé = 1 adresse Public.
Comme vous pouvez l'imaginer, cela necessite autant d'IP publiques qu'il y a IP locales. A l'heure où les IP publiques se font rares sur internet, il a fallu avoir recours à une autre système, c'est là que le NAT dynamique est né.

Le Principe du NAT Dynamique

La différence entre le NAT statique et le NAT dynamique est la prise en compte des ports sources.
Le principe reste le même, le routeur va remplacer l'IP locale par une IP publique MAIS AUSSI il va remplacer le port source de la machine par un port a lui ( génèralement des ports hauts > 65000 ). Le routeur va alors noter dans une table de routage ses informations et lors de la réponse du serveur, il va regarder dans sa table de routage pour savoir à quelle machine du réseau locale et à quel port source, il doit renvoyer le paquet.

Si l'on considère un client du réseau locale 192.168.0.1 et un routeur ayant une IP publique 82.125.12.15 cela donne :

Schéma d'une connexion NAT Dynamique
Schéma d'une connexion NAT Dynamique

De chaque côté ( client / serveur ) le routeur est invisible.
Ainsi à partir d'une adresse IP, on peut permettre à plusieurs machines d'un réseau local d'acceder à internet.

NOTE : Il est important de noter qu'en terme de sécurité, le routeur qui fait du NAT, n'accepte que les connexions entrants que si elles ont été initialisées par une machine du réseau local. En effet, si le routeur ne retrouve pas dans sa table de routage vers quelle machine il doit envoyer la connexion, cette dernière sera dropée. Le routeur fait donc office de firewall pour le réseau local.
Cependant, nous verrons que cela peut poser problème, si vous possédez des services sur le réseau local.

Le NAT logiciel sous Linux

Linux permet par l'intermédiaire de faire du NAT facilement. Il vous suffit de :
Positionner le fichier /proc/sys/net/ipv4/ip_forward à 1 afin de permettre le FORWARD des paquets entre les interfaces réseaux.
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -j MASQUERADE

Le Transfert de Ports ( Forward de port )

On vient de voir que le routeur n'accepte que les connexions entrantes correspondant à une connexion initialisée par le réseau local.
Ceci peut poser problème, si vous possédez des services sur le réseau local, tels qu'un serveur WEB, FTP ou si vous désirez transférer des fichiers ( via IRC, MSN etc.. ). En effet, lors des transferts de fichiers votre machine se transforme temporairement en serveur de fichiers avec la personne avec laquelle vous désirez envoyer des fichiers.

Comment faire pour que les services du réseau interne sous accessibles depuis l'internet ?

Il faut établir un transfert de ports. Le principe est simple. On donne un port à transférer par exemple le port 80 dans le cas d'un serveur WEB et la machine du réseau local sur lequel le service tourne. Toutes les connexions entrantes en direction du port 80 iront vers cette machine.

Schéma d'un forward de port, ici le port 80

Pour un serveur FTP, il faut transférer le port 20 ET 21.
Pour un serveur SSH, il faut transférer le port 22.

Le forward de port sur la livebox


Capture du forward de port sur la livebox     Forward de port sur la livebox

Pour les transferts de fichiers avec MSN, il faut forwarder les port 6891 à 6900 (en cas d'émission de DCC, pas en réception).

Capture de l'écran pour choisir les ports utilisés par DCC sur mIRCSur le client IRC, il faut faire des manipulations pour définir les ports qui seront utilisés lors de l'envoie de DCC (en réception ça pose pas de problème, c'est la personne qui envoie qui fait office de serveur).
Sur mIRC, allez dans Tools / Connect / Options / Advanced puis firts mettez 1024 et dans last 1030. Forwardder ensuite ces ports, vers la machine d'où seront exécutés les DCC. Le nombre port forwaddé équivaut au nombre de DCC que vous pourrez établir.

Sur X-Chat, il faut aller dans Paramètres/Préférences puis en bas sur Réseau/Transferts de fichiers. Vous avez alors "premier port du DCC send" et "Dernier port du DCC send"



Retour à la page d'accueil
flux rss malekal.com - Sitemap - Geekeden - OxygenePC.com - Les partenaires du site McAfee you Suck