-
Récapitulatif
-
Rappel sur le partage d'une connexion unique
-
Approfondissement sur le transport IP
-
Le fonctionnement d'un routeur NAT
-
Mise en place de Winroute
-
Configuration des machines clientes
-
Particularités de configuration
1. Récapitulatif sur le serveur proxy
Résumons la manière dont fonctionne un
serveur proxy.
Considérons un réseau local connecté à
un serveur proxy lui-même connecté à Internet :
Admettons qu'un ordinateur du réseau local veuille télécharger
une page web sur Internet. Pour cela il ouvre une connexion vers le proxy,
sur le port d'écoute (socket) défini pour le service concerné
(ici http), et lui fait la demande de la page web. A son tour, le proxy
ouvre une nouvelle connexion vers le serveur d'Internet concerné
par la demande, récupère l'information et la retransmet aussitôt
à l'ordinateur local.
Dans ce schéma, vous constatez que nous sommes en présence
d'une connexion double. Comme je l'ai déjà mentionné,
le modèle proxy, par principe, a de nombreuses limitations. Tous
les services que l'on veut utiliser (http, ftp, pop, smtp, etc.), pour
autant qu'ils soient possibles, doivent être configurés un
par un sur le serveur proxy (avec un certain port d'écoute et des
règles de "redirection" sur Internet), et toutes les applications
sur les ordinateurs du réseau local doivent être en mesure
d'utiliser le proxy et être configurées dans ce sens. Comme
je l'avais déjà mentionné, de nombreuses applications
ne peuvent utiliser un proxy; il s'agit généralement des
applications travaillant simultanément sur plusieurs sockets, surtout
si certains de ces derniers sont ouverts dynamiquement (par ex. Netmeeting,
gaming-zones sur Internet, etc.). De même, toutes les commandes ICMP
(par ex. ping) s'arrêtent net au proxy.

2. Rappel sur le partage d'une connexion unique
Si vous avez bien lu mon chapitre sur le
protocole TCP-IP et le point 2 de la mise
en place d'un serveur proxy, vous avez compris le gros problème
qui survient dans le partage d'une connexion unique vers Internet, puisque
vous ne pouvez identifier de manière univoque sur Internet les ordinateurs
du LAN.
A ce problème, il existe deux solutions bien différentes
:
-
Mettre en place un serveur proxy
-
Mettre en place un routeur NAT (Network Address Translation)
C'est de cette deuxième solution, très élégante,
dont je vais traiter ici.
Cependant, avant de se lancer immédiatement dans le vif du sujet,
il me faut détailler un peu plus la manière dont les ordinateurs
s'échangent des données sur Internet.
3. Approfondissement sur le transport IP
Si vous avez lu le point 6 de la mise
en place d'un serveur proxy, vous avez compris qu'une connexion Internet
contient les paramètres suivants :
-
l'adresse IP du "destinataire" (serveur)
-
le socket de l'application serveur
-
l'adresse IP de "l'expéditeur" (votre ordinateur)
-
le socket de l'application client
Notez que je n'aime pas trop les termes "destinataire" et "expéditeur",
vu que toute connexion sur Internet voit des paquets IP aller dans les
deux sens.
Exemple : vous ouvrez une page web dans votre navigateur (ex.
http://www.joliepageweb.fr). Votre browser tente alors de se connecter
à l'adresse IP du serveur distant (résolue par le serveur
DNS) sur le port 80 (généralement utilisé par les
serveurs web). A titre indicatif, je vous rappelle ici les ports les plus
courants.
Application/Service |
Port usuel |
HTTP |
80 |
FTP |
21 |
POP3 |
110 |
SMTP |
25 |
NNTP (News) |
119 |
Telnet |
23 |
DNS |
53 |
Voici une liste plus exhaustive
pour les intéressés.
Vous noterez que je n'ai pas encore précisé le port utilisé
par l'application cliente. Contrairement à ce que vous auriez pu
penser, le port sur lequel l'application cliente fait sa requête
n'a pas à être identique au port de l'application serveur.
-
D'une manière générale, on peut dire qu'une grande
majorité d'applications serveurs tournent sur un port inférieur
à 1024 (http : 80, ftp : 21, telnet : 23, pop3 : 110, etc.).
Avec des exceptions toutefois, par exemple ders serveurs FTP "pirates"
(tournant sur des ports exotiques) ou certains serveurs web (port 8080
par exemple).
-
D'une manière générale, les applications clientes
font leur requête sur un port supérieur à 1024.
Par exemple, un paquet IP envoyé par votre navigateur au site Microsoft
aurait les paramètres suivants :
IP du destinataire : 207.46.131.135 (Microsoft)
port serveur web : 80
IP de l'expéditeur : 195.2.200.149 (votre adresse IP)
port client web : 7597
Ces quelques points un peu éclaircis, il me reste encore à
vous dire quelques mots sur les types de protocoles IP présents
sur Internet. Comme vous ne le savez peut-être pas, il y a deux types
fondamentaux de protocoles IP : le protocole TCP et le protocole UDP.
-
Les paquets IP les plus courants sur Internet sont les paquets TCP
(Transmission Control Protocol). Ce protocole est utilisé pour une
transmission fiable de données, c'est à dire sans
pertes. C'est donc le protocole de la majorité des applications
(http, ftp, mail, irc, etc.).
J'ai déjà évoqué grossièrement le
mécanisme de ce protocole. Rajoutons que dans ce protocole aucune
donnée n'est transmise avant qu'une connexion n'ait été
mise en place (à l'aide d'un flag (SYN)) entre les deux ordinateurs
(qui font une sorte d'accord bilatéral de connexion). De même,
lorsque toutes les données ont été transmises, la
connexion est "officiellement" fermée. D'une manière analogue,
un des ordinateurs peut, pour une raison ou pour une autre, clore la connexion
(TCP reset; rappelez-vous du message "le serveur a réinitialisé
la connexion" que vous avez sûrement vu quelquefois).
-
Parallèlement, il circule sur le net des paquets UDP (User
Datagram Protocol) qui sont utilisés pour des transmissions non
fiables de données, c'est à dire où la perte de
certains paquets IP est tolérée. Ce sont particulièrement
les paquets émis par des serveurs de type Real Audio, MS Netshow,
etc., bref toutes les applications qui vous permettent d'écouter
du son ou voir de la vidéo en direct sur Internet. Dans ce cas,
une fiabilité 100%, en d'autres termes la réception de l'intégralité
des données, n'est pas exigée (au détriment bien évidemment
de la qualité de réception). Lorsque vous utilisez ce genre
de programmes, vous pouvez d'ailleurs voir le nombre de paquets perdus
(souvent indiqués en %).
Notez que le protocole UDP, au contraire de TCP, n'exige pas l'établissement
d'une connexion : le serveur envoie comme bon lui semble les paquets IP
à l'adresse IP et sur le port de son choix.

4. Le fonctionnement d'un routeur NAT
Il vous est maintenant facile de comprendre comment fonctionne un routeur
NAT (Network Address Translation).
Le routeur NAT, tout comme un serveur proxy, est une machine à
cheval sur le réseau Internet et sur le réseau local que
vous voulez y connecter; il fait office de passerelle (gateway).
Le routeur NAT, comme son nom l'indique, fait réellement du routage
de paquets IP, c'est à dire qu'il transmet bien les paquets reçus
par un ordinateur du LAN vers Internet (et inversément), contrairement
à un serveur proxy qui ouvre une seconde connexion.
L'ingéniosité du routage NAT vient de sa manière
de gérer plusieurs ordinateurs locaux d'adresses IP de type 192.168.0.x,
de transmettre leurs paquets spécifiques vers Internet, et de leur
redistribuer spécifiquement les paquets reçus. L'astuce est
la suivante :
Lorsque le routeur NAT reçoit un paquet IP d'un des ordinateurs
du LAN, il en modifie :
-
l'adresse IP de l'expéditeur pour y mettre sa propre adresse (l'IP
"légale" de votre connexion
-
le port de l'application cliente par une valeur particulière
Le routeur NAT logge ensuite ces informations dans une table.
Lorsque le serveur d'Internet répond à la requête
et renvoie des paquets IP sur le routeur, ce dernier vérifie dans
ses tables qu'il possède bien l'entrée correspondante (par
rapport au port de l'application cliente), puis y réécrit
les coordonnées (IP + socket) de l'ordinateur du LAN. Le paquet
IP peut ainsi rejoindre sa destination dans le LAN.
Exemple : votre ordinateur du LAN d'adresse IP 192.168.0.7 veut
accéder à la page web du serveur www.machin.com (d'adresse
IP 124.40.67.43) via un routeur NAT travaillant sur l'IP 192.168.0.1 (locale)
et l'IP 195.200.2.149 (Internet). Les deux tableaux suivants montrent précisément
ce qui se passe.
Etablissement de la connexion
Ordinateur |
Interface |
Coordonnées du paquet IP |
ordinateur |
192.168.0.7 |
destinataire : 124.40.67.43, 80 |
expéditeur : 192.168.0.7, 7364 |
LAN |
 |
|
routeur NAT |
192.168.0.1 |
destinataire : 124.40.67.43, 80 |
expéditeur : 192.168.0.7, 7364 |
195.200.2.149 |
destinataire : 124.40.67.43, 80 |
expéditeur : 195.200.2.149,
61005 |
Internet |
 |
|
www.machin.com |
124.40.67.43 |
destinataire : 124.40.67.43, 80 |
expéditeur : 195.200.2.149, 61005 |
Transfert des données
Ordinateur |
Interface |
Coordonnées du paquet IP |
www.machin.com |
124.40.67.43 |
destinataire : 195.200.2.149, 61005 |
expéditeur : 124.40.67.43, 80 |
Internet |
 |
|
routeur NAT |
195.200.2.149 |
destinataire : 195.200.2.149, 61005 |
expéditeur : 124.40.67.43, 80 |
192.168.0.1 |
destinataire : 192.168.0.7,
7364 |
expéditeur : 124.40.67.43, 80 |
Internet |
 |
|
ordinateur |
192.168.0.7 |
destinataire : 192.168.0.7, 7364 |
expéditeur : 124.40.67.43, 80 |
Quelques remarques s'imposent :
-
Les routeurs NAT travaillent souvent sur des ports "élevés".
A titre d'exemple, le logiciel Winroute (http://www.winroute.com) utilise
des ports de 61000 à 61600.
-
On peut se demander pourquoi le routeur NAT modifie le port de l'expéditeur
puisqu'il retient de toute façon le port sur lequel l'application
cliente a fait sa requête. En fait, cette modification est nécessaire
pour éviter des désagréments dans le cas où
plusieurs ordinateurs du LAN feraient une requête sur le même
port.
-
L'inconvénient du routeur NAT est d'être très pointilleux
sur les connexions entrantes : si le routeur NAT n'a pas dans ses tables
une entrée concernant une connexion, il ne laisse rien "entrer".
C'est en quelque sorte une mesure de sécurité, et aussi une
conséquence de sa façon de fonctionner : si vous voulez faire
tourner sur un ordinateur du LAN un serveur (par ex. http ou ftp) qui soit
accessible par Internet, il vous faudra configurer le routeur NAT pour
accepter et rediriger correctement une connexion entrante.
Trêve de bavardages, installons sans tarder un routeur NAT sur notre
gateway !

5. Mise en place de Winroute
Sachez tout d'abord que vous pouvez acquérir un routeur NAT hardware
pour un prix relativement modique. Pour la suite de ce chapitre, c'est
d'un routeur NAT logiciel dont je vais parler : il s'agit de Winroute,
disponible sur le site http://www.winroute.com.
Comme je le disais pour Wingate (serveur proxy), je n'ai nullement envie
de faire de la réclame pour le produit Winroute; j'utilise uniquement
ce programme à titre d'exemple. La page http://www.winfiles.com/apps/nt/servers-proxy.html
valable pour les solutions proxy permet aussi de trouver des routeurs NAT
(même si ces solutions sont moins nombreuses). Pour ne pas faire
de jaloux, allez voir aussi le produit de Vicomsoft qui doit être
tout à fait équivalent (et est disponible pour Macintosh).
Je continue avec Winroute parce que c'est le premier programme que j'ai
découvert et parce que je le trouve facile à mettre en place.
Notez tout de suite que Winroute tourne aussi bien sur Windows 9x que
sous Windows NT. Sous ce dernier, Winroute fonctionne comme un service
(et non un programme), tout comme le fait Wingate. Bien évidemment,
je vous recommande toujours d'utiliser NT sur le gateway pour des raisons
de stabilité. Cela dit, je n'ai pas encore testé Winroute
sur Windows 9x; j'attends donc que quelqu'un m'infirme ou me confirme sa
stabilité sous ce système.
Retenez encore qu'il vaut mieux ne pas faire cohabiter Wingate et Winroute;
choisissez l'un ou l'autre, Winroute ayant la fâcheuse tendance de
crasher Wingate (du moins chez moi).
Préliminaires
Avant d'installer Winroute, je suppose que vous avez lu mon chapitre
sur la mise en place d'un serveur
proxy, et que les points suivants sont respectés :
-
Comme TCP-IP est le langage d'Internet, vous avez correctement configuré
votre LAN sous ce protocole après avoir assigné à
chaque ordinateur une adresse IP propre de type 192.168.0.1, 192.168.0.2,
etc... (masque de sous-réseau : 255.255.255.0) et créé
le fichier host adéquat sur chaque ordinateur.
-
Vous savez que votre ISP (Internet Service Provider) vous attribue une
et une seule adresse IP lorsque vous vous connectez à Internet.
Cette adresse est souvent fixe (on dit "statique") dans le cas d'un
câble-opérateur, et variable (on dit "dynamique") dans le
cas d'une connexion par modem (votre ISP a une fourchette d'adresses IP
disponibles et vous en attribue une de libre lorsque vous vous connectez).
Installation de Winroute
Vous pouvez maintenant installer Winroute sur votre gateway. Il n'y
a pratiquement rien à y configurer.
NB : les explications et illustrations qui suivent concernent l'utilisation
de Winroute sur un ordinateur connecté à Internet par une
carte réseau (câble). Si vous faites cette installation avec
un modem, la mise en place est légèrement plus compliquée
(configuration RAS), mais ne change pas dans le fond.
-
Enclenchez simplement le routage NAT sur l'interface Internet de la façon
suivante : dans Winroute, allez sur Settings->Interface
Table...->'Votre interface Internet (carte réseau
ou ligne modem), et activez le routage NAT :
-
Activez le service DNS. Winroute fournit en effet le service de serveur
DNS nécessaire aux applications du LAN pour "retrouver leur chemin"
sur Internet. Ce service s'active par : Settings->DNS Server.
Vous y introduisez les valeurs DNS de votre provider.
C'est tout !
Si vous êtes un peu parano, vous pouvez donner des règles
plus strictes sur le routage des paquets IP. Référez-vous
pour cela au manuel on-line (très clair) de Winroute, chapitre "Packet
filtering".
Notez aussi que vous pouvez faire en sorte que Winroute ne fasse pas
de NAT pour certains ordinateurs. Cela peut être utile si une partie
de votre LAN possède des adresses IP règlementaires sur Internet.
Dans ce cas, Winroute peut agir comme un routeur simple (sans translation
d'adresses). Je ne parle pas ici de ces réglages très particuliers,
mais le manuel on-line est très clair sur ces points.
NB : Point curieux que je me dois de vous signaler. Si vous êtes
câblé sur Internet, et que vous utilisez un modem HF connecté
à votre carte réseau, il se peut que vous deviez faire
un reset sur ce dernier après avoir installé Winroute
pour le "recalibrer" sur les nouveaux réglages de la carte Ethernet
(Winroute travaillant "très proche" de la carte Ethernet).
6. Configuration des machines clientes
Contrairement aux réglages parfois subtils qu'il fallait faire pour
chaque application des ordinateurs du LAN si vous utilisiez Wingate, il
n'y a presque rien à faire si vous utilisez Winroute. Il vous faut
simplement spécifier au système le serveur DNS et la passerelle.
-
Dnas les propriétés du protocole TCP-IP (Panneau de configuration->Réseau->Protocole
TCP-IP), sélectionnez l'onglet 'Configuration DNS' et ajouter l'adresse
IP (LAN) de l'ordinateur qui fait tourner Winroute.
-
Dans l'onglet 'Passerelle', ajouter l'adresse IP (LAN) de l'ordinateur
qui fait tourner Winroute.
C'est tout ! Rebootez la machine; vous êtes sur Internet !
6. Particularités de configuration
-
Si vous voulez faire tourner un serveur (http, ftp, ...) sur une des machines
de votre LAN et que vous voulez que ce dernier soit accessible depuis Internet,
vous devez spécifier à Winroute un "mapping TCP" sur le port
concerné vers l'IP de la machine du LAN.
Exemple : vous voulez faire tourner un serveur web en port 80
sur la machine 192.168.0.4 de votre LAN.
Dans Winroute, choisissez Settings->Advanced->Port
Mapping->Add, et rajouter un mapping TCP sur le port 80
:
Notez que les deux ports (sur le routeur et sur l'ordinateur du LAN) n'ont
pas besoin d'être identiques. Vous pourriez très bien faire
tourner sur l'ordinateur 192.168.0.4 un serveur web sur le port 8080 (accessible
sur ce port dans l'intranet), mais accessible sur le port usuel 80 depuis
Internet, et inversément.
-
les logiciels susceptibles d'être "appelés" depuis Internet
doivent être configurés en conséquence. Le cas le plus
connu est ICQ.
Si vous voulez pouvoir être contacté par ICQ, vous devez
procéder de la manière suivante :
-
Sur Winroute, établissez un mapping TCP (voir ci-dessus) sur un
intervalle ("port range") de 5000 à 5011 vers l'ordinateur du LAN
voulant utiliser ICQ
Pour chaque ordinateur du LAN voulant bénéficier d'ICQ, vous
devez créer un intervalle similaire (par exemple, 5012-5023, 5024-5035,
etc.)
-
Sur le client ICQ de la machine du LAN, allez dans Preferences, onglet
connexion, puis choisissez :
Internet Connection Type->I am behind a firewall or
proxy.
Puis dans les "Firewall settings", choisissez 'I don't use a SOCKS Proxy
server on my firewall or I am using another Proxy server', puis 'Use the
following TCP listen ports for incoming events', et introduisez l'intervalle
adéquat (par ex. 5000 to 5011) :
Voilà, je m'arrête ici. Si vous avez des questions plus
spécifiques, n'hésitez pas à me les
poser.
© Pierre, 1998 - pierre.delavallaz
bigfoot.com