Partage d'une connexion à Internet

  1. Introduction
  2. Les conséquences du modèle TCP/IP
  3. La notion de ports d'écoute
  4. Approfondissement sur le transport IP
  5. La solution par serveur proxy
  6. La solution par routeur NAT


1. Introduction

Voilà ! Vous avez connecté vos PC (2, 3, 10, plus !...) entre eux, et vous êtes devenus un véritable Terminator de Quake II en réseau.
Maintenant vous vous dites que vous avez assez joué, et que vous pourriez faire quelque chose de plus utile de votre réseau. Vous êtes par exemple un mordu du web, mais vous êtes continuellement dérangé par votre petit frère qui veut sans cesse discuter sur IRC. Vous vous dites alors : "Et si je connectais tout mon LAN sur Internet", et vous pensez à l'unique connexion réseau que vous avez acquise chez un provider (modem ou câble).

L'idée est excellente; elle est même tout à fait réalisable, mais pas nécessairement aussi facilement que vous l'auriez pensé.

Up

2. Les conséquences du modèle TCP/IP

Supposons que vous ayez suivi les quelques notions que je vous expose aux chapitre mise en place d'un réseau local et le protocole TCP/IP et Internet, vous avez retenu ceci :

  1. 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.
  2. 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).
  3. Vous avez retenu que les paquets IP que vous envoyez ou recevez sur Internet contiennent les adresses IP des l'expéditeur et du destinataire.

Si vous réfléchissez un peu à ces trois points, vous comprenez tout doucement le gravissime problème qui va se poser :

Vous ne pouvez pas identifier de manière univoque tous vos ordinateurs sur Internet, ce qui est une condition obligatoire (puisque le paquet IP doit contenir l'adresse de l'expéditeur et du destinataire).

En effet, seul l'ordinateur de votre LAN qui est connecté directement à Internet (l'ordinateur sur lequel le modem est connecté) possède un "numéro de téléphone" valable sur Internet (l'unique adresse IP attribuée par votre ISP). Les autres ordinateurs de votre LAN ont des adresses "bidons" de type 192.168.0.x qui sont sûrement utilisées par des milliers d'autres utilisateurs dans le monde qui, comme vous, ont créé un réseau local chez eux. C'est bien pour cela que ces adresses ne sont pas routées par les ISP.

Vous pourriez vous croire malin en attribuant la même adresse IP à tous les ordinateurs. Vous devriez cependant vous rendre compte qu'un tel système n'est pas possible, car une information entrante sur votre IP ne "saurait" quel ordinateur du LAN rejoindre. De toute façon, Windows interdit d'attribuer une même adresse IP à plus d'une machine sur un même réseau; le problème est donc réglé.

Vous vous retrouvez donc avec une architecture de ce type :

Architecture générale d'un LAN devant être relié à Internet

Vous constatez que la machine de gauche est "à cheval" sur deux réseaux :

  1. le réseau local 192.168.0.0
  2. le réseau Internet 195.44.56.0

Cette machine un peu particulière qui est capable de jouer sur les deux réseaux est appelée la passerelle (gateway).

Routage possible

vous pourriez simplement faire du "routage", c'est à dire que l'ordinateur à cheval sur les deux réseaux n'aurait qu'à faire transiter les paquets IP du réseau Internet sur le réseau local, et inversément. Les ordinateurs du LAN ayant des adresses IP bien attribuées sur le réseau Internet, les paquets IP n'auraient pas de peine à retrouver leur chemin.

Cette machine indispensable peut être soit un serveur proxy soit un routeur NAT.

Up

3. La notion de ports d'écoute

Cette section décrit la manière particulière dont fonctionnent les applications Internet. Ces dernières, lorsqu'elles doivent communiquer sur Internet, utilise un paramètre supplémentaire en plus de l'adresse IP de l'expéditeur et du destinataire : le port de l'application. Généralement, chaque application travaille sur un port spécifique.
Une bonne approche des ports (dits aussi "sockets") pourrait être de les comparer au fonctionnement des lignes numériques (type ISDN) de nos téléphones actuels : vous savez que ces téléphones peuvent recevoir plusieurs appels sur votre seul numéro (par exemple, vous pouvez téléphoner avec un ami, surfer sur Internet et recevoir un fax, le tout simultanément). On peut faire l'analogie avec TCP/IP :

La comparaison s'arrête là, car autant votre téléphone ISDN peut recevoir simultanément au plus 8 lignes, autant votre connexion à Internet comporte plusieurs milliers de ports d'écoute !

Ces ports ne sont pas totalement aléatoires : les différents types d'applications travaillent généralement sur des ports bien définis (même si, exceptionnellement, cela peut varier).

Je vous donne ci-dessous une liste non-exhaustive des applications réseaux les plus courantes.

Application/Service

Port usuel

HTTP

80

FTP

21

POP3

110

SMTP

25

NNTP (News)

119

Telnet

23

SOCKS

1080

Real Audio

1090

VDO Live

9000

XDMA

8000

DNS

53

Bien évidemment, certaines personnes font parfois tourner certains de ces services sur d'autres ports. Par exemple, si vous tapez dans votre browser l'adresse :

http://www.serveur.com:8080

cela veut dire que vous essayez de vous connecter à un serveur web tournant sur le port 8080 au lieu du port 80 usuel.

Up

4. Approfondissement sur le transport IP

A côté du système proxy, il existe une autre solution pour partager une connexion à Internet : le routage NAT (Network Address Translation). L'utilisation d'un routeur NAT est une solution très élégante et transparente. 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.

Vous devez savoir que lorsqu'un ordinateur transmet des données sur Internet, les paquets IP qui circulent contiennent tous les informations suivante :

  1. l'adresse IP du "destinataire" (serveur)
  2. le socket de l'application serveur
  3. l'adresse IP de "l'expéditeur" (votre ordinateur)
  4. 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). Dans le paragraphe précédent, je vous indiquais certains ports usuels. 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.

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.

Up

5. La solution par serveur proxy

Il est temps maintenant d'expliquer un des façon de partager une connexion à Internet. Voici donc la manière dont fonctionne un serveur proxy.
Considérons un réseau local connecté à un serveur proxy lui-même connecté à Internet :

Partage d'une connexion à Internet par serveur proxy

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é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 double connexion.
L'avantage d'un serveur proxy est de pouvoir stocker dans un cache local les pages web visitée. Ainsi, si un ordinateur du LAN désire voir une page qui a déjà été téléchargée préalablement, le proxy est capable de fournir la page demandée directement depuis son cache local, ce qui est beaucoup plus rapide et économise le trafic sur Internet.

D'une manière plus générale, vous comprenez que la tâche du serveur proxy est de rester attentif à toute connexion entrant chez lui sur des ports bien précis que vous avez configurés. Vous pouvez aussi voir cela d'une autre façon : le serveur proxy "n'écoute" pas toutes les connexions; il ne s'intéresse qu'à celles pour lesquelles il a été configuré. Cette limitation a des avantages et des désavantages :

Dans la partie 'Pratique', j'explique comment mettre en place un serveur proxy sur un système Microsoft (Windows 9x ou NT).

Up

6. La solution par routeur NAT

Il existe à mon goût une manière plus simple et plus élégante de partager une connexion à Internet que l'utilisation d'un serveur proxy : le routage 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).

Partage d'une connexion à Internet par routeur NAT

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 :

  1. l'adresse IP de l'expéditeur pour y mettre sa propre adresse (l'IP "légale" de votre connexion
  2. 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 :

  1. Les routeurs NAT travaillent souvent sur des ports "élevés". A titre d'exemple, le logiciel Winroute utilise des ports de 61000 à 61600.
  2. 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.
  3. 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.

Dans la partie 'Pratique', j'explique comment mettre en place un routeur NAT sur un système Microsoft (Windows 9x ou NT).

Up


(C) 02/02/2008 - Dernière modification : 30/10/2013 - F4CVM / Pascal