On Mon, 7 Oct 2002 15:44:15 +0200
Edgar Bonet <guilde@???> wrote:
> Le lundi 7 octobre, Jérôme KIEFFER a écrit :
> > 1) le NAT n'est pas dificile a reconnaitre que cela : l'adresse IP
> > interne (non routable) est encapsulée.
>
> On la trouve à quel niveau de protocole ? Dans quel champ ?
J'ai raconté une connerie : voici un datagramme d'une requette http sur
www.guilde.org naté chez moi :
ip interne =192.168.3.4 == C0A8 0304
ip guilde.org = 130.94.22.254 == 825E 16FE
ip publique = 217.128.128.248 == D980 80F8
19:22:43.324142 217.128.128.248.32954 > 130.94.22.254.80: P [tcp sum ok]
0:101(1
01) ack 1 win 5840 <nop,nop,timestamp 4125987 484485614> (DF) (ttl 63,
id 6178,
len 153)
4500 0099 1822 4000 3f06 2f68 d980 80f8
825e 16fe 80ba 0050 3806 ed34 3782 c533
8018 16d0 44cb 0000 0101 080a 003e f523
1ce0 a9ee 4745 5420 2f20 4854 5450 2f31
2e30 0d0a 5573 6572 2d41 6765 6e74 3a20
5767 6574 2f31 2e38 2e32 0d0a 486f 7374
3a20 7777 772e 6775 696c 6465 2e6f 7267
0d0a 4163 6365 7074 3a20 2a2f 2a0d 0a43
6f6e 6e65 6374 696f 6e3a 204b 6565 702d
416c 6976 650d 0a0d 0a
Comme on le voit : pas de trace de l'adresse interne dans le datagramme.
Et puis dans :
http://www.usenet-fr.net/fur/comp/reseaux/nat.html
on trouve :
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 !
--
Jérôme @taz : Morgan 1200 + 512Mo DDR in a 10L SS40G
"Windows 95 is a 32-bit shell for a 16-bit extension to an 8-bit
operating system designed for a 4-bit microprocessor by a 2-bit company
that can't stand one bit of competition."