Principe du NAT (Network Adress Translation )

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.

  • Classe A : plage de 10.0.0.0 à 10.255.255.255 ;
  • Classe B : plage de 172.16.0.0 à 172.31.255.255 ;
  • Classe C : plage de 192.168.0.0 à 192.168.255.55 ;

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 :

  • ouvre un port source sur sa machine, ce port est situé entre 1024 et 5000. Ce port restera ouvert en attente de réponse du serveur.
  • envoie un paquet à destination du serveur vers un port de destination.

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 :

  • Le port source du serveur sera le port de destination, le port sur lequel le service réseau tourne.
  • Le port de destination du client sera le port source.

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, MSNetc.. ).

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.

Note que le transfert de port peut-être automatique via le service Upnp (il faut que le programme qui fait office de serveur le gère), c’est notamment le cas de MSN lors des conversations vidéos ou transferts de fichiers.

Le forward de port sur la Livebox

  • Connectez vous à partir de votre navigateur à son interface graphique : http://192.168.1.1
  • Cliquez dans le menu en haut Serveur LAN
  • Cliquez en bas sur ajouter
  • Dans le champs nom du serveur, saisir le type de serveur, web, ftp etc..
  • Mettre Accès activé sur oui
  • Sélectionnez le protocole dans la liste, pour ftp et http, choisir TCP
  • Choisir le port de départ et d’arrivée dans les champs du et haut, pour un serveur web mettre 80 dans les deux champs, pour un serveur ftp mettre 20 et 21.
  • Dans le champs adresse IP locale saisir l’adresse IP de la machine où le serveur WEB ou FTP tourne.

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 firtsmettez 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 »

Comment lire d'autres tutoriels de malekal.com ?

Si le site vous a aidé, svp, débloquez les bloqueurs de publicités, n'hésitez pas non plus à partager l'article ou le site sur les réseaux sociaux.

Pour pouvoir lire plus d'articles et tutoriels, utilisez le menu en haut du site. Plein d'articles et tutos utiles vous attendent !

Besoin d'aide ?

Posez votre question ou soumettez votre problème sur le forum malekal.com pour obtenir une aide efficace : Aller sur le forum malekal.com
(Visited 450 times, 1 visits today)

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *