Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[FAQ] fr.comp.reseaux.ip : Petit cours sur la NAT

0 views
Skip to first unread message

Eric Lalitte

unread,
Dec 2, 2009, 3:01:09 AM12/2/09
to
Archive-Name: fr/comp/reseaux/nat

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::


------------------- Petit cours sur la NAT --------------------


Auteur: Toto <bi...@antionline.org>
Disponible sur <http://www.lalitte.com/nat>
Derniᅵre mise ᅵ jour 15/10/02 (version prᅵcᅵdente 19/02/02)
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

Les phrases/paragraphes ajoutᅵs et/ou modifiᅵs sont prᅵcᅵdᅵs
du caractᅵre "|".


Sommaire
--------

1 - Introduction
1.1 - Objet de ce cours
1.2 - Rᅵutilisation de ce cours
1.3 - Dᅵcharge
1.4 - Votre travail.

2 - Dᅵfinitions
2.1 - L'identification des machines
2.2 - L'adressage IP
2.3 - Qu'est-ce que la NAT ?

3 - La NAT statique
3.1 - Le principe
3.2 - Pourquoi je ne peux pas accᅵder ᅵ Internet avec une
adresse privᅵe ?
3.3 - Le fonctionnement de la NAT statique
3.4 - Avantages et inconvᅵnients de la NAT statique
3.5 - Problᅵmes de routage liᅵs ᅵ l'utilisation de la NAT
statique (proxy ARP)
3.6 - Problᅵmes de routage liᅵs ᅵ l'utilisation de la NAT
statique (routage sur la passerelle)

4 - La NAT dynamique
4.1 - Le principe
4.2 - Le fonctionnement de la NAT dynamique
4.3 - Avantages et inconvᅵnients de la NAT dynamique
| 4.4 - Problᅵmes liᅵs ᅵ la NAT dynamique (ICMP)
4.5 - Problᅵmes liᅵs ᅵ la NAT dynamique (FTP)

5 - Statique ou dynamique ?
5.1 - Quand faire de la NAT statique ?
5.2 - Quand faire de la NAT dynamique ?
5.3 - Puis-je combiner ces deux mᅵthodes ?

6 - Comment rendre joignables les machines de mon rᅵseau
local alors que je n'ai qu'une seule adresse publique ?
6.1 - Explication du problᅵme
6.2 - Le port forwarding, qu'est-ce que c'est ?
6.3 - Le port mapping, qu'est-ce que c'est ?
6.4 - Les limites du port forwarding

7 - Les proxys
7.1 - Qu'est-ce qu'un proxy ?
7.2 - Qu'est-ce qu'un proxy n'est pas ?

8 - Vaut-il mieux faire de la NAT ou avoir un proxy ?
8.1 - Avantages du proxy
8.2 - Avantages de la NAT
8.3 - Alors ? NAT ou proxy ?

9 - La sᅵcuritᅵ et la NAT
9.1 - La NAT dynamique permet-elle d'amᅵliorer ma
sᅵcuritᅵ ?
9.2 - Est-ce utile pour la sᅵcuritᅵ d'utiliser un proxy ?
9.3 - La NAT est elle compatible avec IPSEC ?

10 - Utilitaires pour faire de la NAT
10.1 - Sous windows
10.2 - Sous Unix

11 - Mini lexique
11.1 - Modᅵle OSI
11.2 - IP
11.3 - TCP
11.4 - SNAT ou Source NAT
11.5 - DNAT ou Destination NAT

12 - Annexes
12.1 - Ressources utilisᅵes
12.2 - Remerciements
12.3 - Faq sur les masques de sous-rᅵseau
12.4 - Faq sur le routage

13 - Conclusion


=========================


1 - Introduction
----------------


1.1 - Objet de ce cours

Avec le dᅵveloppement croissant du monde de l'internet,
et notamment des liaisons ᅵ connexions permanentes comme le
cᅵble ou l'ADSL, de plus en plus de particuliers utilisent
de la NAT pour partager leur accᅵs Internet, parfois mᅵme
sans le savoir ;-)

Il m'a donc semblᅵ opportun de faire un petit cours
rassemblant les idᅵes principales qui tournent autour de la
NAT, et d'essayer de les clarifier. Ce cours se limitera ᅵ
l'ᅵtude de la NAT sur le modᅵle TCP/IP.

Pour comprendre les mᅵcanismes mis en oeuvre dans la NAT,
vous aurez besoin d'avoir quelques connaissances sur le
modᅵle TCP/IP, et notamment sur les couches 3 et 4 du
modᅵle OSI (IP et TCP/UDP)


1.2 - Rᅵutilisation de ce cours

Vous ᅵtes libre d'utiliser de courts extraits de ce cours
dans la mesure oᅵ vous incluez un lien permettant d'avoir
accᅵs ᅵ l'ensemble du document. Ceci dans le but de
permettre ᅵ vos lecteurs d'obtenir facilement un complᅵment
d'information.
De mᅵme, vous ᅵtes libre de copier le cours dans son
intᅵgralitᅵ, ᅵ condition cependant d'en avertir l'auteur,
et que cette utilisation soit exempte de tout caractᅵre
commercial (banniᅵres publicitaires incluses). Cette
restriction ᅵtant principalement due au plus ᅵlᅵmentaire
des respects : celui du temps que j'ai consacrᅵ ᅵ la
rᅵdaction de ce cours.
Toute autre utilisation devra faire l'objet d'un accord
prᅵalable avec l'auteur.


1.3 - Dᅵcharge

L'auteur dᅵcline toute responsabilitᅵ concernant la
mauvaise utilisation ou comprᅵhension du cours qui
engendrerait l'ᅵcroulement de votre rᅵseau ;-)


1.4 - Votre travail

La seule et unique tᅵche que je vous demanderai
d'accomplir sera de corriger mes erreurs (aussi bien dans
la cohᅵrence des ᅵlᅵments avancᅵs que pour l'orthographe),
me donner des conseils sur ce qui est mal expliquᅵ pour le
rendre plus accessible, ajouter des ᅵlᅵments qui ont
attrait ᅵ la NAT et rendent l'exposᅵ plus complet,
combler tout manque pour amᅵliorer ce cours.

2 - Dᅵfinitions
---------------

2.1 - L'identification des machines

Pour envoyer du courrier ᅵ un ami, vous utilisez son
adresse postale. Ainsi vous ᅵtes sᅵr que le paquet que vous
envoyez arrivera ᅵ la bonne personne.
Et bien pour les ordinateurs, c'est pareil. Quand vous
connectez votre ordinateur ᅵ un rᅵseau (Internet par
exemple), il possᅵde une adresse qui l'identifie d'une
faᅵon unique pour que les autres ordinateurs du rᅵseau
puissent lui envoyer des informations.


2.2 - L'adressage IP

Nous avons parlᅵ d'adresses pour les machines, il est
temps maintenant de dᅵfinir ces adresses.
On parle d'adresse IP (Internet protocol), car il s'agit du
protocole qui permet d'identifier les machines et de router
les informations sur Internet. Ces adresses sont codᅵes sur
4 octets, soit 32 bits. Ce qui nous permet d'avoir 2^32
adresses disponibles (un peu plus de 4 milliards
d'adresses)
Mᅵme si ce chiffre dᅵpasse de loin le nombre de machines
prᅵsentes sur Internet, nous allons bientᅵt manquer
d'adresses disponibles, notamment parce qu'un grand nombre
de ces adresses sont gᅵchᅵes.

En attendant un nouveau standard d'adressage qui permette
d'avoir plus d'adresses disponibles (IPv6), il a fallu
trouver des solutions temporaires. La NAT a notamment ᅵtᅵ
une rᅵponse ᅵ cette future pᅵnurie d'adresses.

Nous allons voir en quoi elle consiste, et quels sont ses
avantages et inconvᅵnients.


2.3 - Qu'est-ce que la NAT ?

Le terme barbare NAT reprᅵsente les initiales de "Network
Address Translation", ou "Traduction d'Adresse rᅵticulaire"
en franᅵais. Mais il est souvent utilisᅵ pour reprᅵsenter
diffᅵrents concepts que nous allons diffᅵrencier, notamment
NAT statique, NAT dynamique, PAT, IP masquerading...

Si l'on s'en tient intrinsᅵquement ᅵ la dᅵfinition du terme
NAT, cela reprᅵsente la modification des adresses IP dans
l'en-tᅵte d'un datagramme IP effectuᅵe par un routeur.
On verra par la suite quelles sont les diffᅵrentes
applications possibles.

On parlera de SNAT quand c'est l'adresse source du paquet
qui est modifiᅵe, et de DNAT quand il s'agit de l'adresse
destination. (Voir le mini lexique 11.4)


3 - La NAT statique
-------------------

3.1 - Le principe

La NAT statique, se base sur l'association de n adresses
avec n adresses. C'est ᅵ dire qu'ᅵ une adresse IP interne,
on associe une adresse IP externe.
Dans ce cas, la seule action qui sera effectuᅵe par le
routeur sera de remplacer l'adresse source ou destination
par l'adresse correspondante.


3.2 - Pourquoi je ne peux pas accᅵder ᅵ Internet avec une
adresse privᅵe ?

On prend l'exemple suivant:

Machine 1
10.0.0.1/24
|
|
Interface interne routeur
10.0.0.254/24
<ROUTEUR>
Interface externe routeur
193.22.35.42/24
|
|
Internet

La machine 1 veut envoyer un paquet sur Internet, vers
www.ohmforce.com, par exemple. Donc dans l'en-tᅵte IP,
l'adresse en destination est celle de www.ohmforce.com, et
en source c'est 10.0.0.1. Si jamais il n'y avait pas de
translation d'adresse, le paquet arriverait bien a la
machine www.ohmforce.com, mais celle-ci essaierait de
renvoyer sa rᅵponse a 10.0.0.1 qui n'est pas une adresse
routᅵe sur Internet !! (Elle fait partie d'une classe
d'adresses rᅵservᅵes pour les rᅵseaux privᅵs)
Et notre machine 1 n'obtiendrait jamais de rᅵponse...

Ainsi, une machine ayant une adresse privᅵe ne pourra pas
recevoir de rᅵponse ᅵ ses requᅵtes sans un mᅵcanisme
supplᅵmentaire.


3.3 - Le fonctionnement de la NAT statique

Nous avons vu qu'une machine ayant une adresse privᅵe ne
pouvait pas dialoguer sur Internet avec celle-ci, donc pour
rᅵsoudre ce problᅵme, on va lui donner une adresse publique
virtuelle qui va lui permettre d'accᅵder ᅵ Internet.
Ainsi, un routeur (la plupart du temps la passerelle
d'accᅵs ᅵ Internet) va modifier dans l'en-tᅵte IP du paquet
l'adresse source 10.0.0.1 pour mettre une adresse valide
sur Internet 193.22.35.43 (dans notre exemple)
Le paquet va donc arriver ᅵ sa destination, et celle-ci va
pouvoir le renvoyer ᅵ 193.22.35.43 qui est une adresse
valide sur Internet. Le paquet va arriver jusqu'au routeur
qui a fait l'association entre 193.22.35.43 et 10.0.0.1, il
va donc modifier l'adresse destination 193.22.35.43 et
mettre ᅵ la place 10.0.0.1, et renvoyer le paquet sur le
rᅵseau local.

Ainsi, la machine 1 est vue de l'Internet avec l'adresse
193.22.35.43. S'il s'agit d'un serveur web, il suffit
d'envoyer une requᅵte HTTP vers cette adresse pour obtenir
le site web.

La NAT statique nous a permis de rendre une machine
accessible sur Internet alors qu'elle possᅵdait une adresse
privᅵe.
On a simplement fait une association entre une adresse
privᅵe et une adresse publique: 10.0.0.1 <--> 193.22.35.43


3.4 - Avantages et inconvᅵnients de la NAT statique

En associant une adresse IP publique ᅵ une adresse IP
privᅵe, nous avons pu rendre une machine accessible sur
Internet. Par contre, on remarque qu'avec ce principe, on
est obligᅵ d'avoir une adresse publique par machine voulant
accᅵder ᅵ Internet. Cela ne va pas rᅵgler notre problᅵme de
pᅵnurie d'adresses IP...

D'autre part, tant qu'ᅵ donner une adresse publique par
machine, pourquoi ne pas leur donner cette adresse
directement plutᅵt que de passer par un intermᅵdiaire ?

A cette question, on peut apporter plusieurs ᅵlᅵments de
rᅵponse.
D'une part, il est souvent prᅵfᅵrable de garder un
adressage uniforme en interne et de ne pas mᅵler les
adresses publiques aux adresses privᅵes. Ainsi, si on
doit faire des modifications, changements, interventions
sur le rᅵseau local, on peut facilement changer la
correspondance entre les adresse privᅵes et les adresses
publiques pour rediriger les requᅵtes vers un serveur en
ᅵtat de marche.
D'autre part, on gᅵche un certain nombre d'adresses
lorsqu'on dᅵcoupe un rᅵseau en sous-rᅵseaux (adresse de
rᅵseau, adresse de broadcast...), comme lorsqu'on veut
crᅵer une DMZ pour rendre ses serveurs publiques
disponibles. Avec la NAT statique, on ᅵvite de perdre ces
adresses.

Malgrᅵ ces quelques avantages, le problᅵme de pᅵnurie
d'adresses n'a toujours pas ᅵtᅵ rᅵglᅵ. Pour cela, on va se
pencher sur la NAT dynamique (Pour ceux qui ne veulent pas
rentrer dans les dᅵtails techniques, vous pouvez
directement passer au paragraphe 4)


3.5 - Problᅵmes de routage liᅵs ᅵ l'utilisation de la NAT
statique (proxy ARP)

Les problᅵmes montrᅵs ne sont pas toujours rencontrᅵs lors
de l'implᅵmentation de la NAT statique.
Si celle-ci est bien faite, tous les mᅵcanismes dᅵcrits
devraient ᅵtre implᅵmentᅵs de faᅵon transparente pour
l'utilisateur.

Ce qui va suivre demande d'avoir quelques notions sur le
fonctionnement de la pile TCP/IP.

Un premier problᅵme rencontrᅵ est celui de la redirection
d'un paquet vers l'adresse virtuelle de la NAT statique.
On considᅵrera l'exemple prᅵcᅵdent auquel on ajoute le
premier routeur rencontrᅵ sur Internet.

Machine 1
10.0.0.1/24
|
|
Interface interne routeur
10.0.0.254/24
<ROUTEUR>
Interface externe routeur
193.22.35.42/24
|
|
Interface interne
193.22.35.254/24
<Routeur Internet>
Interface externe
|
|
Internet

La machine 1 fait une requᅵte vers le site
www.ohmforce.com.
Le paquet est NATᅵ au niveau du routeur avec comme adresse
source 193.22.35.43, ainsi, le site web www.ohmforce.com
renvoie sa rᅵponse vers cette adresse. Le paquet est routᅵ
sur Internet et arrive sur le routeur Internet (celui qui
prᅵcᅵde le routeur de l'entreprise ou du particulier)
Celui-ci regarde l'adresse de destination et observe
qu'elle se situe sur le mᅵme rᅵseau qu'une de ses
interfaces. Ainsi, elle a maintenant besoin de l'adresse
MAC de la machine 193.22.35.43 pour lui envoyer le paquet.
Elle fait donc une requᅵte ARP en demandant "Quelle est
l'adresse MAC de la machine ayant 193.22.35.43 comme
adresse IP ?"
Or, sur ce rᅵseau, aucune machine n'a cette adresse
puisqu'il s'agit d'une adresse virtuelle.
Il faut donc que le routeur (193.22.35.42) rᅵponde lui-mᅵme
ᅵ cette requᅵte ARP. C'est ce que l'on appelle faire proxy
ARP.
Quand vous faites de la NAT statique, le proxy ARP est
souvent automatiquement implᅵmentᅵ, cependant, il est bon
de connaᅵtre ce mᅵcanisme si ce n'est pas le cas.

Il y a plusieurs faᅵon de pallier ᅵ ce problᅵme.

Soit mettre en place soit mᅵme un mᅵcanisme de proxy ARP
sur la machine faisant la NAT statique.

Soit ajouter une entrᅵe statique dans la table ARP du
routeur Internet (pas le routeur faisant la NAT, mais le
premier routeur rencontrᅵ aprᅵs celui-ci sur Internet)
Commande arp sous windows.
arp -s 193.22.35.43 @MAC_routeur

Soit ajouter une route host statique pour chacune des
adresses virtuelles.
Sous windows:
route add -p 193.22.35.43 mask 255.255.255.255 193.22.35.42


3.6 - Problᅵmes de routage liᅵs ᅵ l'utilisation de la NAT
statique (routage sur la passerelle)

Un second problᅵme peur survenir sur l'ᅵquipement qui fait
la NAT. Revenons ᅵ l'exemple prᅵcᅵdent.
Le routeur Internet envoie le paquet au routeur de
l'entreprise. Celui-ci reᅵoit la trame ethernet, voit que
c'est son adresse MAC qui est en destination, il envoie
donc le contenu des donnᅵes ᅵ la couche IP. Celle-ci voit
que c'est l'adresse 192.22.35.43 (l'adresse virtuelle de
notre machine) qui est en destination. Il va voir dans la
table de routage, et lᅵ, il peut y avoir un problᅵme...

Soit une route spᅵcifique existe pour cette adresse pour
rediriger le paquet vers le rᅵseau interne, soit ce n'est
pas le cas, et il sera renvoyᅵ sur l'interface externe du
routeur, vu que l'adresse de destination appartient au mᅵme
rᅵseau que son interface externe 193.22.35.42 !!

Pour que la NAT fonctionne, il faut donc qu'il y ait une
route spᅵcifique vers le rᅵseau interne.
Dans notre cas:
route add -p 193.22.35.43 mask 255.255.255.255 10.0.0.1

Ainsi, quand le routeur recevra un paquet ᅵ destination de
l'adresse virtuelle 193.22.35.43, il le redirigera bien
vers l'adresse rᅵelle de la machine, 10.0.0.1.

Et hop, ᅵa marchera ;-)


4 - La NAT dynamique
--------------------

4.1 - Le principe

La NAT dynamique est aussi appelᅵe IP masquerading.
Contrairement ᅵ la NAT statique, la NAT dynamique associe
une seule adresse ᅵ n adresses (ou pour ᅵtre plus prᅵcis, m
adresses ᅵ n adresses, les adresses pour sortir ᅵtant
choisies dans un pool)
Ainsi, on peut associer une adresse publique ᅵ n adresses
privᅵes et permettre ainsi ᅵ un grand nombre de machines
ayant des adresses privᅵes d'accᅵder ᅵ Internet !!
Par contre, nous verrons que cette mᅵthode possᅵde quelques
inconvᅵnients. Et contrairement ᅵ la NAT statique, le
routeur qui effectue la NAT devra ᅵ la fois modifier les
adresses IP mais aussi les ports TCP/UDP (que l'on appelle
PAT, Port Address Translation)


4.2 - Le fonctionnement de la NAT dynamique

Le fonctionnement est un peu diffᅵrent de celui de la NAT
statique. Nous allons notamment voir pourquoi il faut faire
de la PAT et non pas une simple traduction des adresses IP.

Reprenons l'exemple prᅵcᅵdent:

Machine 1
10.0.0.1/24
|
|
Interface interne routeur
10.0.0.254/24
<ROUTEUR>
Interface externe routeur
193.22.35.42/24
|
|
Internet

Cette fois, c'est l'adresse publique de l'interface externe
du routeur 193.22.35.42 qui va ᅵtre utilisᅵe pour sortir.
Ainsi, lorsque le paquet arrive ᅵ la machine de
destination, www.ohmforce.com par exemple, celle-ci le
renvoie vers l'adresse 193.22.35.42.
Le routeur reᅵoit donc ce paquet et voit que l'adresse de
destination est lui-mᅵme !!

Comment peut-il alors savoir si le paquet est pour lui ou
une machine en interne ?

C'est grᅵce aux ports TCP/UDP qu'il va pouvoir faire la
diffᅵrence. Ainsi, si une machine en interne fait une
requᅵte avec comme port TCP source 2356, le routeur pourra
savoir que lorsqu'il recevra un paquet avec comme port
destination 2356, il faut le rediriger vers la machine en
interne qui a initialisᅵ la connexion.

Mais je vois dᅵjᅵ pointer les questions:
"oui, mais si deux machines du rᅵseau interne initialisent
des connexions avec le mᅵme port TCP/UDP ? hein ? alors ?
comment qu'on fait pour savoir qui est qui ? hein ?
alors ?"

Et vous auriez raison de vous les poser !
Mais tout a ᅵtᅵ prᅵvu pour pallier ᅵ ce problᅵme.
En fait, le routeur remplace le port TCP/UDP source par un
nouveau qu'il choisit lui-mᅵme. Ainsi, comme c'est lui qui
les choisit, il n'en choisira pas deux identiques, et
pourra identifier chacune des connexions, magisme...

On reprend donc depuis le dᅵbut le fonctionnement.

La machine 10.0.0.1 veut se connecter au site
www.ohmforce.com, elle envoie donc un paquet avec comme
adresse source la sienne, 10.0.0.1, et comme port source un
port quelconque supᅵrieur ᅵ 1024, soit par exemple 5987. Le
paquet arrive au routeur qui fait la NAT, il remplace donc
l'adresse IP source par la sienne 193.22.35.42, et la PAT
en remplaᅵant le port TCP/UDP source 5987 par un de son
choix, 10000 par exemple.
Il garde ces informations de correspondance bien au chaud
dans une table NAT.
Le paquet arrive a www.ohmforce.com qui le renvoie a
193.22.35.42. Le paquet arrive au routeur, il voit que
l'adresse destination est lui-mᅵme, il regarde donc le port
destination TCP/UDP qui est 10000. Il va regarder dans la
table NAT pour avoir la correspondance, et bingo !! il sait
qu'il faut envoyer ce paquet ᅵ 10.0.0.1, tout en ayant
modifiᅵ le port destination 10000 en 5987 qui est le port
sur lequel 10.0.0.1 a initialisᅵ la connexion.

Et voilᅵ.

On peut ainsi masquer autant de machines que l'on veut
derriᅵre une seule adresse publique !


4.3 - Avantages et inconvᅵnients de la NAT dynamique

Comme nous l'avons vu, la NAT dynamique permet ᅵ des
machines ayant des adresses privᅵes d'accᅵder ᅵ Internet.
Cependant, contrairement ᅵ la NAT statique, elle ne permet
pas d'ᅵtre joint par une machine de l'Internet.
Effectivement, si la NAT dynamique marche, c'est parce que
le routeur qui fait la NAT reᅵoit les informations de la
machine en interne (Adresse IP, port TCP/UDP)
Par contre, il n'aura aucune de ces informations si la
connexion est initialisᅵe de l'extᅵrieur...
Le paquet arrivera avec comme adresse de destination le
routeur, et le routeur ne saura pas vers qui rediriger la
requᅵte en interne.

La NAT dynamique ne permet donc _que_ de sortir sur
Internet, et non pas d'ᅵtre joignable. Elle est donc utile
pour partager un accᅵs Internet, mais pas pour rendre un
serveur accessible.

De plus, ᅵtant donnᅵ que l'on peut "cacher" un grand nombre
de machines derriᅵre une seule adresse publique, cela
permet de rᅵpondre ᅵ notre problᅵme de pᅵnurie d'adresses.

Par contre, les machines n'ᅵtant pas accessibles de
l'extᅵrieur, cela donne un petit plus au niveau de la
sᅵcuritᅵ ;-)


4.4 - Problᅵmes liᅵs ᅵ la NAT dynamique (ICMP)

La NAT dynamique demande l'utilisation des ports TCP/UDP,
cependant, tous les protocoles utilisᅵs sur un rᅵseau
n'utilisent pas obligatoirement ces ports, notamment les
protocoles ICMP, PPTP, Netbios...

Prenons par exemple le protocole ICMP. Se limitant ᅵ la
couche 3 il n'utilise pas de ports TCP ou UDP. Il n'est
donc pas possible de faire de la NAT dynamique de faᅵon
classique.

| Une mᅵthode spᅵcifique doit ᅵtre implᅵmentᅵe pour permettre
| la NAT du trafic ICMP.
|
| Pour cela, au lieu de se baser sur les ports TCP/UDP, on
| peut se baser sur l'identifiant ICMP prᅵsent dans l'en-tᅵte
| du message ICMP.
|
| Ainsi, le mᅵcanisme est exactement le mᅵme, mis ᅵ part que
| l'on utilise cet identifiant, plutᅵt que les ports TCP/UDP.
| Il faut donc implᅵmenter spᅵcifiquement ce type de NAT pour
| le protocole ICMP.
|
| Par ailleurs, certains paquets ICMP contiennent dans leur
| payload des informations concernant les datagrammes IP qui
| ont causᅵ l'erreur. Le routeur faisant la NAT doit donc
| aussi modifier les informations contenues dans le payload
| pour que l'information apportᅵe ᅵ la machine ᅵmettrice soit
| pertinente.


4.5 - Problᅵmes liᅵs ᅵ la NAT dynamique (FTP)

Le protocole ftp a un fonctionnement un peu particulier. Il
utilise deux connexions en parallᅵle. L'une pour le
contrᅵle de la connexion, l'autre pour le transfert des
donnᅵes.
Le ftp peut fonctionner selon deux modes diffᅵrents, actif
ou passif. En mode passif, pas de problᅵme, les connexions
sont initialisᅵes de l'intᅵrieur pour chacun de ces deux
canaux. Par contre, pour le mode actif, la connexion de
contrᅵle est d abord initialisᅵe de l intᅵrieur, et quand
des donnᅵes sont demandᅵes, c'est le serveur qui initialise
la connexion de donnᅵes ᅵ partir de l'extᅵrieur.
Et comme nous le savons, il n'est pas possible
d'initialiser de connexions ᅵ partir de l'extᅵrieur du
rᅵseau avec de la NAT dynamique.
Un autre problᅵme du protocole ftp est qu'il contient des
donnᅵes se rapportant aux adresses des machines. Ainsi
quand les adresses sont NATᅵes, cela pose problᅵme...

Donc pour que le ftp puisse fonctionner, on est obligᅵs
d'utiliser un module qui soit capable de lire les
informations contenues dans les donnᅵes ftp. Pour faire
cela, on utilise un proxy (Voir paragraphe 7) qui sera
capable de suivre la connexion et de modifier les donnᅵes
ftp pour la rendre possible.

Dans un cas comme celui-ci, ce n'est plus un simple module
NAT ᅵ ajouter, mais un proxy ᅵ part entiᅵre


5 - Statique ou dynamique ?
---------------------------

5.1 - Quand faire de la NAT statique ?

Nous avons vu que la NAT statique permettait de rendre
disponible une machine sur Internet, mais qu'il fallait par
contre une adresse IP pour que ce serveur soit joignable.

Il est donc utile d'utiliser la NAT statique quand vous
voulez rendre une application disponible sur Internet,
comme un serveur web, mail ou un serveur FTP.


5.2 - Quand faire de la NAT dynamique ?

La NAT dynamique permet d'une part de donner un accᅵs ᅵ
Internet ᅵ des machines possᅵdant des adresses privᅵes, et
d'autre part d'apporter un petit plus en terme de sᅵcuritᅵ.

Elle est donc utile pour ᅵconomiser les adresse IP, donner
un accᅵs ᅵ Internet ᅵ des machines qui n'ont pas besoin
d'ᅵtre joignables de l'extᅵrieur (comme la plupart des
utilisateurs)
D'autre part, mᅵme quand on possᅵde assez d'adresses IP, il
est souvent prᅵfᅵrable de faire de la NAT dynamique pour
rendre les machines injoignables directement de
l'extᅵrieur.

Par exemple, pour un usage personnel de partage de l'ADSL
ou du cᅵble, on utilise souvent la NAT dynamique pour
partager sont accᅵs, ᅵtant donnᅵ que les machines n'ont pas
besoin d'ᅵtre jointes de l'extᅵrieur.


5.3 - Puis-je combiner ces deux mᅵthodes ?

Oui, et c'est mᅵme souvent la meilleure solution lorsque
l'on a ᅵ la fois des machines offrant un service, et
d'autres qui n'ont besoin que de se connecter ᅵ Internet.

Ainsi, on ᅵconomisera les adresses IP grᅵce aux machines
NATᅵes dynamiquement, et on utilisera exactement le bon
nombre d'adresses IP publiques dont on a besoin.

Il est donc trᅵs intᅵressant de combiner ces deux mᅵthodes.


6 - Comment rendre joignables les machines de mon rᅵseau
local alors que je n'ai qu'une seule adresse publique ?
-----------------------------------------------------------

6.1 - Explication du problᅵme

Nous avons vu que dans le cas de la NAT dynamique, les
machines du rᅵseau local ne pouvaient pas ᅵtre jointes de
l'extᅵrieur. Cela est plutᅵt un plus pour la sᅵcuritᅵ, mais
si on doit offrir des services comme un serveur FTP ou web,
ca devient problᅵmatique.

C'est notamment le cas quand on possᅵde un accᅵs ADSL ou
cᅵble, une seule adresse publique vous est fournie, et il
devient alors compliquᅵ de rendre disponibles plusieurs
serveurs du rᅵseau local.

Une solution ᅵ ce problᅵme est le port forwarding.


6.2 - Le port forwarding, qu'est-ce que c'est ?

Le port forwarding consiste ᅵ rediriger un paquet vers une
machine prᅵcise en fonction du port de destination de ce
paquet.
Ainsi, lorsque l'on n'a qu'une seule adresse publique avec
plusieurs machines derriᅵre en adressage privᅵ. On peut
initialiser une connexion de l'extᅵrieur vers l'une de ses
machines (une seule par port TCP/UDP)

Prenons l'exemple prᅵcᅵdent et disons que la machine
10.0.0.1 possᅵde un serveur FTP. Maintenant, on configure
le routeur pour qu'il redirige les connexions arrivant sur
le port 21 vers la machine 10.0.0.1. Et hop, on rend notre
machine ayant une adresse privᅵe disponible depuis
l'extᅵrieur !!

Ainsi, le port forwarding nous a permis de rendre nos
machines du rᅵseau local joignables d'Internet, mᅵme si
l'on ne possᅵde qu'une seule adresse IP publique !!


6.3 - Le port mapping, qu'est-ce que c'est ?

Le port mapping est un peu ᅵquivalent au port forwarding.
Il consiste simplement ᅵ rediriger la requᅵte sur un port
diffᅵrent que celui demandᅵ.
Par exemple, si on fait tourner un serveur web sur le
rᅵseau local sur le port 8080 et qu'on veut le rendre
accessible pour les internautes. On redirige le port 80
vers notre serveur sur le port 8080. Ainsi, les clients
externes auront l'impression de s'adresser ᅵ un serveur sur
le port usuel pour le web, 80.


6.4 - Les limites du port forwarding

Hᅵ oui, le port forwarding ne peut pas non plus rᅵpondre
parfaitement ᅵ toutes les questions qu'amᅵne la NAT
dynamique.
Ainsi, on a vu que l'on ne pouvait associer qu'une adresse
de machine ᅵ un port donnᅵ. Si l'on possᅵde plusieurs
serveurs FTP en local et que l'on veut les rendre
accessibles, il faudra trouver une autre astuce...


7 - Les proxys
--------------

7.1 - Qu'est-ce qu'un proxy ?

Un proxy est un mandataire pour une application donnᅵe.
C'est ᅵ dire qu'il sert d'intermᅵdiaire dans une connexion
entre le client et le serveur pour relayer la requᅵte qui
est faite.
Ainsi, le client s'adresse toujours au proxy, et c'est lui
qui s'adresse ensuite au serveur.
Une proxy fonctionne pour une application donnᅵe, http,
ftp, smtp, etc. Il peut donc modifier les informations ᅵ
envoyer au serveur, ainsi que celles renvoyᅵes par
celui-ci.
La contrepartie est qu'il faut un proxy par application.
Cependant, beaucoup de proxys sont en fait des multi-proxys
qui sont capables de comprendre la plupart des applications
courantes.


7.2 - Qu'est-ce qu'un proxy n'est pas ?

Un amalgame est souvent fait entre les fonctionnalitᅵs
qu'on peut apporter ᅵ un proxy, et au proxy lui-mᅵme.
Ainsi, on pense souvent qu'un proxy doit faire de la NAT,
ou serveur de cache, mais ce ne sont que des
fonctionnalitᅵs ajoutᅵes.
Effectivement, il est souvent utile d'ajouter des fonctions
de cache ᅵ un proxy vu que c'est lui qui centralise l'accᅵs
au web. Ainsi, si 15 personnes demandent le mᅵme site web,
il ne sera chargᅵ qu'une fois puis gardᅵ dans le cache du
proxy.
D'autre part, la NAT est elle aussi souvent indispensable
pour qu'un proxy fonctionne, vu qu'il est censᅵ ᅵtre un
intermᅵdiaire, il faudra qu'il modifie l'adresse source du
paquet pour que la rᅵponse passe par lui. Cependant, mᅵme
si c'est ce qui est le plus souvent utilisᅵ, ce n'est pas
obligatoire.

Si ces fonctionnalitᅵs sont souvent utiles et utilisᅵes, ce
n'est pas pour autant qu'il faut penser qu'elles sont
synonymes de proxy.


8 - Vaut-il mieux faire de la NAT ou avoir un proxy ?
-----------------------------------------------------

8.1 - Avantages du proxy

Comme nous l'avons vu, un proxy est dᅵdiᅵ ᅵ un protocole
(une application) particulier. Ainsi, il est capable
d'interprᅵter le trafic et notamment de cacher les
informations. On diminue ainsi le trafic et augmente la
bande passante de la mᅵme occasion.
On peut aussi autoriser ou non l'accᅵs ᅵ certaines partie
d'un site, ᅵ certaines fonctionnalitᅵs, etc.
On a donc un bon contrᅵle de ce qui transite sur le rᅵseau,
et on sait quels protocoles peuvent circuler.

8.2- Avantages de la NAT

Contrairement au proxy, la NAT est indᅵpendante des
applications utilisᅵes. On peut donc faire passer la
plupart des protocoles que l'ont veut.


8.3 - Alors ? NAT ou proxy ?

La rᅵponse est bien sur... ᅵa dᅵpend !!
Vous ᅵtes dᅵᅵus ? Il ne faut pas, car si vous avez bien lu
et compris ce qui prᅵcᅵde, vous devriez ᅵtre en mesure de
faire votre choix vous mᅵme en fonction de ce que vous avez
(adresses, matᅵriel, etc.) et de ce que vous voulez faire
(applications, politique de sᅵcuritᅵ, etc.)

Personnellement, j'ai une petite prᅵfᅵrence pour la NAT car
elle ne limite pas ce que je peux faire sur le rᅵseau, je
n'ai donc pas de mauvaises surprises quand j'utilise un
nouveau protocole un peu exotique ;-)


9 - La sᅵcuritᅵ et la NAT
-------------------------

9.1 - La NAT dynamique permet-elle d'amᅵliorer ma sᅵcuritᅵ ?

La NAT dynamique permet de rendre les machines d'un rᅵseau
local inaccessibles directement de l'extᅵrieur, on peut
donc voir cela comme une sᅵcuritᅵ supplᅵmentaire. Mais cela
n'est pas suffisant et il est indispensable d'utiliser un
filtrage si l'on veut obtenir un bon niveau de sᅵcuritᅵ.
La NAT dynamique seule ne peut pas ᅵtre considᅵrᅵe comme
une sᅵcuritᅵ suffisante.


9.2 - Est-ce utile pour la sᅵcuritᅵ d'utiliser un proxy ?

Un proxy travaille au niveau 7 du modᅵle OSI, c'est ᅵ dire
qu'il est capable d'interprᅵter et de modifier les
informations du protocole sur lequel il travaille. Ainsi,
il peut vᅵrifier le contenu de ce qui est reᅵu de la part
du serveur et en interdire ou modifier le contenu selon la
politique choisie.
L'utilisation d'un proxy pour des protocoles critiques est
donc souvent utile si on veut avoir une bonne vision de ce
qui se passe.

9.3 - La NAT est elle compatible avec IPSEC ?

Si on veut ᅵtre prᅵcis, la rᅵponse est oui. Cependant, la
norme IPSEC ayant diffᅵrentes implᅵmentations, ce n'est pas
toujours le cas. D'ailleurs la plupart des constructeurs
ont crᅵᅵ leur propres solutions IPSEC pour traverser de la
NAT.

Le problᅵme vient de l'encryption de l'en-tᅵte IP par les
participants au tunnel IPSEC. Si l'adresse IP est modifiᅵe
pendant le trajet du paquet, elle ne sera pas la mᅵme ᅵ
l'arrivᅵe que celle qui a ᅵtᅵ encryptᅵe au dᅵpart, et aprᅵs
comparaison, le paquet sera dᅵtruit.

Cependant, en se plaᅵant en mode ESP et en faisant du
tunneling, c'est la totalitᅵ du paquet qui est encryptᅵe,
et une nouvelle en-tᅵte est ajoutᅵe ᅵ celui-ci. Ainsi, la
comparaison ne se fera pas sur l'en-tᅵte modifiᅵe, mais sur
celle contenue dans les donnᅵes du paquet.
Mais cette solution n'est pas toujours possible.

Je ne crois pas qu'il existe de norme pour rᅵsoudre ce
problᅵme, mais une solution semble apporter une rᅵelle
satisfaction au problᅵme citᅵ. Elle est aujourd'hui
utilisᅵe par beaucoup de constructeurs, la NAT traversal ou
NAT-T.
Il s'agit d'encapsuler les donnᅵes dans un tunnel UDP.
Ainsi, de la mᅵme faᅵon qu'en mode tunnel et ESP, l'en-tᅵte
modifiᅵe par la NAT ne sera pas utilisᅵe pour le test
d'authentification.

Ainsi, il est souvent possible de mettre en place un VPN
IPSEC, mᅵme si on utilise de la NAT.


10 - Utilitaires pour faire de la NAT
-------------------------------------


10.1 - Sous windows

Voici quelques noms de produits qui permettent entre autres
de faire de la NAT, une prᅵsentation plus prᅵcise sera
peut-ᅵtre faite par la suite si cela s'avᅵre utile.
Je n'ai pas testᅵs ces produits, vos remarques et
expᅵriences sont donc les bienvenues ;-)

Wingate, winroute lite, NAT32, TCPrelay...


10.2 - Sous Unix

IPchains, ipfilter, netfilter...


11 - Mini lexique
-----------------

11.1 - Modᅵle OSI

Le modᅵle OSI a ᅵtᅵ crᅵᅵ dans le but d'uniformiser les
rᅵseaux et de permettre l'interopᅵrabilitᅵ entre systᅵmes
hᅵtᅵrogᅵnes.
Il dᅵfinit sept couches ayant chacune un rᅵle spᅵcifique.
Ces couches permettent donc de rendre un service les unes
par rapport aux autres, tout en ᅵtant chacune indᅵpendante
des autres.


11.2 - IP

IP est un protocole de couche 3 qui permet principalement
d'identifier les machines ᅵ l'aide d'adresses et de router
les informations entre rᅵseaux logiques. Il permet aussi de
faire de la fragmentation de paquets.


11.3 - TCP

TCP est un protocole de couche 4 qui permet d'identifier et
de contrᅵler les connexions entre machines. La gestion des
flux et des erreurs est aussi intᅵgrᅵe ᅵ ce protocole.


11.4 - SNAT ou Source NAT

Le Source NAT correspond ᅵ la modification de l'adresse
source dans un paquet translatᅵ. Il est notamment
utilisᅵ pour la NAT dynamique, mais aussi pour la NAT
statique lorsqu'on veut sortir du rᅵseau local.


11.5 - DNAT ou Destination NAT

Le Destination NAT correspond ᅵ la modification de
l'adresse destination dans un paquet translatᅵ. Il est
utilisᅵ pour la NAT statique, lorsqu'on veut accᅵder ᅵ un
serveur sur un rᅵseau local.


12 - Annexes
------------

12.1 - Ressources utilisᅵes

Je n'ai pas utilisᅵ beaucoup de documents aussi bien en
ligne que sur papier. Les rᅵponses et connaissances
apportᅵes proviennent en majeure partie des informations
que j'ai pu glaner en furetant sur le net, et notamment sur
les newgroups fr.comp.reseaux.ip et
fr.comp.reseaux.ethernet.

Je me suis quand mᅵme inspirᅵ de la RFC 1631

Et notamment de l'excellente faq sur les firewalls de
Stᅵphane Catteau dont je me suis inspirᅵ pour la mise en
forme.
Disponible sur:
<http://fr.comp.securite.free.fr/firewall.txt>
N'hᅵsitez pas ᅵ la consulter, on y apprend plein de choses.


12.2 - Remerciements

Je remercie notamment les personnes suivantes pour leur
lecture assidue de la faq durant sa rᅵalisation et leurs
conseils prᅵcieux.

Diane Guinnepain, Pep, Ifragu, Cᅵdric Blancher.


12.3 - Faq sur les masques de sous-rᅵseau

Si cette faq vous a plu et que vous avez appris des choses,
j'en ai fait une autre sur les masques de sous rᅵseau
disponible lᅵ:
<http://www.lalitte.com/masques>


12.4 - Faq sur le routage

Si cette faq vous a plu et que vous avez appris des choses,
j'en ai fait une autre sur le routage disponible lᅵ:
<http://www.lalitte.com/routage>


13 - Conclusion
---------------

La NAT est aujourd'hui un ᅵlᅵment important en rᅵseau ᅵtant
donnᅵ son ᅵnorme dᅵploiement ᅵ travers le monde suite ᅵ
l'annonce de la pᅵnurie d'adresses IPv4.
J'ai essayᅵ de rendre la comprᅵhension de cette technique
la plus accessible possible. Cependant, il faut
impᅵrativement avoir quelques notions en rᅵseau pour
pouvoir bien comprendre les points dᅵlicats qu'elle
engendre.
Il y a et il y aura sᅵrement encore beaucoup de choses ᅵ
dire sur le sujet. Vos remarques sont donc encore et
toujours les bienvenues, aussi bien pour y ajouter des
idᅵes, que pour enlever le superflu.
Maintenant, si je revois passer des questions sur la NAT,
j'aurai au minimum un droit de flagellation sur les
personnes incriminᅵes ;-)


--
Document publiᅵ par MaintDoc depuis le 2008-04-07.
Reponsables : ᅵric Lalitte.

0 new messages