====== Passerelles ====== ===== C'est quoi, une passerelle ? ===== {{:routage:interco1.gif |Interconnexion de réseaux}} Nous allons dire que c'est un élément qui permet d'inter-connecter plusieurs réseaux de manière à permettre le passage de l'information d'un réseau à l'autre. Je n'ai volontairement pas précisé s'il s'agissait de réseaux logiques ou physiques, parce que tout est possible dans ce domaine.
===== Les principales techniques ===== Nous n'allons pas parler de tous les types de passerelles que l'on peut rencontrer, il y en a beaucoup trop. Nous allons regarder d'un peu plus près deux types courants que sont les ponts et les routeurs. Ils ne travaillent pas au même niveau du modèle OSI et ne servent pas tout à fait à la même chose, bien qu'ils soient tous les deux des éléments d'interconnexion. Comme nous avons vu qu'il existe deux adresses pour un nœud donné: l'une matérielle (adresse MAC) qui est utilisée au niveau 2 et l'autre logicielle (IP le plus souvent) utilisée au niveau 3, nous pouvons nous attendre à trouver des passerelles travaillant aux niveaux 2: Les ponts, ou au niveau 3: Les routeurs. ===== Les ponts ===== Nous avons deux réseaux physiques Ethernet totalement disjoints. Ces deux réseau utilisent TCP/IP et les hôtes disposent d'adresses IP dans la même classe, avec le même masque de sous réseau. Cependant, il n'existe aucun doublon dans les adresses entre les deux réseaux. ^ Réseau A ^^ Réseau B ^^ | Adresses IP | 192.168.0.1 -> 192.168.0.50 | Adresses IP | 192.168.0.128 -> 192.168.0.170 | | Masque de sous réseau | 255.255.255.0 | Masque de sous réseau | 255.255.255.0 | Nous désirons raccorder ces deux réseaux physiques pour n'en faire plus q'un et nous allons le faire avec un pont {{ :routage:pont.gif |Pont Ethernet}} ==== Qu'est-ce qu'un pont ? ==== {{ :routage:pont1.gif |Pontage au niveau de la couche liaison}} === Description générale === Un pont dispose d'un pied dans chaque réseau. Il agit au niveau 2, sur la couche de liaison. Il est capable de laisser passer les trames d'un réseau à l'autre, mais ne le fait pas bêtement. Un pont, après une période d'apprentissage, sait repérer les adresses MAC des nœuds de chaque côté du pont. Il ne laissera passer d'un côté à l'autre que les trames qui ont réellement besoin de passer; si bien que le trafic sur chaque côté se trouve optimisé, à la condition bien entendu que l'architecture générale ait été pensée dans ce sens. Un pont est très efficace si les deux réseaux A et B  communiquent peu entre eux. Si le réseau A utilise principalement les services des serveurs du réseau B et réciproquement, le pont perd  complètement son intérêt, autant le remplacer par un bout de câble. === Particularités === * Un pont, travaillant au niveau 2, est indépendant des couches réseau supérieures. En d'autres termes, un pont fonctionnera aussi bien avec TCP/IP qu'avec un protocole non routable (pas d'adresses logiques) comme NetBEUI. * Il faut **impérativement** que les protocoles réseau soient les mêmes de chaque côté du pont, l'échange se faisant au niveau des trames.  * Un pont ne pourra pas interconnecter un réseau Ethernet avec un réseau Token Ring par exemple. * Un pont ne pourra pas interconnecter deux réseaux Ethernet, l'un utilisant TCP/IP et l'autre un autre protocole (IPX/SPX par exemple). * Deux réseaux physiques pontés apparaissent ** comme un seul réseau physique**. Au niveau de la couche réseau (et des couches supérieures), le pont est transparent. Ceci est un détail fondamental. Le principe du pont est repris dans les "switches", que l'on pourrait considérer comme des HUBS évolués. === Conclusion === Un pont est une passerelle particulière, que l'on utilise au sein d'un même réseau physique, pour optimiser le trafic des trames sur ce réseau. ===== Les routeurs ===== Nous avons ici aussi deux réseaux physiques Ethernet totalement disjoints. Ces deux réseau utilisent TCP/IP mais les hôtes disposent d'adresses IP de réseau différentes (ou de même réseau, mais avec des masques de sous réseaux différents, ce qui introduirait la notion de sous réseau logique. ^ Réseau A ^^ Réseau B ^^ | Adresses IP | **192.168.0**.1 -> **192.168.0**.50 | Adresses IP | **192.168.1**.1 -> **192.168.1**.50 | | Masque de sous réseau | 255.255.255.0 | Masque de sous réseau | 255.255.255.0 | Nous désirons raccorder ces deux réseaux physiques pour qu'ils puissent communiquer, nous allons le faire avec un routeur. {{ :routage:routeur.gif |Routage entre deux réseaux IP différents}} ==== Qu'est-ce qu'un routeur ? ==== {{ :routage:routeur1.gif |Routage au niveau de la couche réseau}} Un routeur agit au niveau de la couche réseau, d'IP par exemple. Le résultat peut paraître similaire à celui d'un pont, il n'en est rien. === Description générale === Le routeur lui aussi dispose d'un pied dans chaque réseau, mais son fonctionnement est plus évolué.  Alors que le pont utilise les adresses MAC, le routeur utilise les adresses réseau (IP en ce qui nous concerne). === Particularités === * Les tables de routage ne sont pas construites par un simple apprentissage, comme dans un pont, mais sont mises en place soit à la main, soit automatiquement au moyen de protocoles plus évolués. * Les deux réseaux raccordés restent deux réseaux physiques différents, les adresses MAC d'un côté restent totalement inconnues de l'autre côté, ce qui n'est pas le cas du pont. (Nous le comprendrons mieux avec les manips qui suivent). * Les réseaux A et B peuvent être de nature différente. * Le protocole réseau (TCP/IP par exemple) doit tout de même être identique des deux côtés et doit être routable (ce qui n'est pas nécessaire avec un pont). Notez q'un routeur peut interconnecter plus que deux réseaux, il lui suffit de disposer d'un pied dans chaque réseau à interconnecter. (Des ponts multivoies  existent cependant aussi). D'autres solutions basées sur un principe comparable existent et permettent d'interconnecter des réseaux ayant des protocoles différents, mais ce n'est pas l'objet de cet exposé. === Conclusions === Un routeur permet de faire communiquer deux réseaux logiques différents. Nous verrons plus loin ce que cela induit dans le transport des données. Si l'on interconnecte deux réseaux physiques avec un routeur, il faudra absolument que ces deux réseaux physiques soient également des réseaux (ou sous réseaux) logiques différents (NetID différents). Un routeur conservera la notion de réseaux physiques différents. C'est très important, surtout lorsque l'on utilise des dispositifs comme DHCP pour attribuer des adresses IP aux hôtes du réseau. Un DHCP a une portée limitée à son réseau physique, autrement dit, un DHCP ne peut pas fournir d'adresse à un hôte situé de l'autre côté d'un routeur. Ah, mais alors, comment se fait-il que chez nous, câblés de Marseille, il n'existe qu'un seul serveur DHCP (62.161.120.11) et qu'il y a pourtant au moins quatre réseaux logiques et qu'en plus, le DHCP n'est dans aucun de ces réseaux? C'est parce qu'il existe une exception à cette règle, si l'on utilise un agent de relais DHCP. Ce dispositif permet, s'il est installé sur un routeur, de distribuer des adresses IP sur les réseaux inter-connectés par ce routeur avec un seul DHCP situé sur l'un de ces réseaux; à la condition bien entendu, que ce DHCP dispose de plages d'adresses correspondant à chacun de ces réseaux, ce qui est le cas pour FTCI. Dans la pratique, l'agent de relais "intercepte" les requêtes des clients DHCP et les retransmet au(x) serveur(s)  indiqué(s) dans sa configuration. Vous trouverez plus de détails sur le fonctionnement de DHCP dans le chapitre qui lui est dédié dans ce site ===== Mais encore... ===== Il existe bien d'autres dispositifs capables par exemple d'interconnecter des réseaux utilisant des supports différents (optique, cuivre), des protocoles de transport différents (Ethernet, Token Ring) et même des protocoles différents (TCP/IP, IPX/SPX). Nous n'en parlerons pas. ==== Le masquage d'adresse ==== En revanche, il existe une technique de passerelle intéressante qui est le masquage d'adresse. Cette technique est bien utile lorsque l'on souhaite interconnecter un réseau privé pour qu'il devienne **client** d'un réseau public. (Client, parce que ça fonctionne bien dans un sens, beaucoup moins bien dans l'autre et nous allons vite comprendre pourquoi). Ici, le routeur dispose d'une fonction particulière de changement d'adresse logique (IP). Le principe en est détaillé dans le chapitre « Partage de connexion internet ». Disons simplement ici que: * D'un côté, nous avons un réseau privé, avec des adresses IP prises dans un bloc réservé à cet effet, par exemple 192.168.0.0 Un routeur sur l'Internet qui voit passer une telle adresse doit immédiatement mettre le paquet à la poubelle, ces adresses sont réservées à un usage privé. * De l'autre côté nous avons une connexion à l'Internet. * La passerelle entre les deux va disposer: * D'une adresse privée du côté du réseau privé (par exemple 192.168.0.250) * D'une adresse IP publique, attribuée par le fournisseur d'accès (par exemple 213.56.56.250) Cette passerelle va permettre à un hôte du réseau privé d'envoyer une requête à un serveur de l'Internet en mettant au passage son adresse publique à la place de l'adresse privée du client. Vu du dehors, on ne verra qu'un seul hôte: la passerelle, c'est la raison pour laquelle ce type d'interconnexion ne permet pas de placer des serveurs publics dans le réseau privé, sauf avec des artifices pas toujours simples, voire impossible à mettre en oeuvre, suivant le produit utilisé. (Linux 2.2.x le permet de façon assez complexe, Linux 2.4.x, avec IPTables, le permet de façon beaucoup plus simple). Cette solution est celle que j'utilise pour connecter mes 4 hôtes privés à l'Internet et qui va intervenir dans les manipulations que nous ferons plus loin, c'est la raison pour laquelle j'en parle ici. Hormis ce phénomène de changement d'adresse logique, tout va se passer comme avec un « vrai » routeur.