Théorie

Les bases

Un LAN

Nous sommes ici, c'est sous-entendu tout au long de cet exposé, sur un réseau Ethernet.

Un LAN est un réseau local dans lequel toutes les trames Ethernet sont visibles depuis tous les n?uds si le LAN est construit avec un HUB. Si nous avons affaire à un SWITCH, seules les trames de diffusions (broadcast) seront visibles depuis tous les n?uds, le SWITCH agissant comme un pont Ethernet entre chaque n?ud du LAN.

Aujourd'hui, les HUBS ont quasiment disparu des catalogues des constructeurs. Compte tenu de l'usage grandissant des réseaux, il est clair que le HUB ne peut être considéré comme une bonne solution que sur les touts petits réseaux.

Au dessus de tout ceci, nous construirons un réseau IP, mais c'est à la limite assez peu notre problème ici. Que le réseau de niveau 3 soit IP, NetBEUI ou AppleTalk n'a aucune importance. Bien entendu, dans la suite, nous n'utiliserons qu'IP.

Ce qu'il est fondamental de comprendre, c'est que nous raisonnons au niveau Ethernet, que nous ne parlons que d'adresses MAC.

Un SWITCH, c'est le composant que nous utiliserons par la suite, à l'exclusion des HUBs, est capable d'apprendre et de retenir la ou les adresses MAC qui se présentent sur chacun de ses ports. Hormis les trames de diffusion qui seront systématiquement répercutées sur tous les ports, le SWITCH ne laissera communiquer entre eux que les ports concernés par un dialogue entre deux n?uds. C'est sa fonction principale de pont Ethernet.

Deux LANS (ou plus)

Lorsque nous avons deux LANs et que nous souhaitons les interconnecter, tout en conservant dans chaque LAN les mêmes propriétés au niveau Ethernet, nous devons faire appel à la couche 3 (IP) pour assurer l'interconnexion. Il nous faut donc un routeur.

Le routeur agit au niveau 3 (IP). Ce qu'il est absolument fondamental de comprendre, c'est qu'au niveau Ethernet, le LAN bleu ignore complètement l'existence du LAN vert, et réciproquement. Les trames Ethernet, qu'elles soient de la diffusion ou non, n'iront jamais dans l'autre LAN. Il y a isolation complète des deux LANs au niveau Ethernet et la présence du routeur n'y change rien. Les trames Ethernet qui transportent des données depuis le LAN vert dans le LAN bleu ne seront rien d'autre que des trames Ethernet issues du routeur côté LAN bleu (et réciproquement). Comme dans un roman de science-fiction de bonne facture, les mondes Ethernet bleu et vert sont des mondes parallèles, avec de temps en temps, une porte mystérieuse qui s'ouvre pour laisser passer des choses d'un monde à l'autre, mais en leur faisant perdre la mémoire de leur origine réelle (nous sommes au niveau 2, n'oublions pas).

Il faut monter au niveau de conscience supérieur (niveau IP), pour commencer à démythifier le fonctionnement de ces portes.

Mais à cette hauteur, les détails lointains s'estompent. Ce qu'il y a exactement dans chaque LAN au niveau Ethernet importe finalement assez peu. A première vue, le panorama serait plutôt le suivant :

Parce que, finalement, lors de l'interconnexion de réseaux, peu importe ce qu'il y a dans chaque réseau, ce sont les routes qui importent le plus.

Entendons par là que les équipements utilisés pour construire chaque LAN, qu'il s'agisse de HUBs ou de SWITCHs ou d'un mélange des deux n'a aucune importance.

Où intervient le virtuel

Jusqu'ici, un SWITCH appartenait à un et un seul LAN. L'idée de base est de pouvoir assigner certains ports du SWITCH à un LAN, certains autres ports à un autre LAN etc :

Sur un même SWITCH physique, nous allons pouvoir créer plusieurs LANS et assigner certains de ses ports aux divers LANs créés. Ici, nous avons un LAN bleu et un LAN vert. Le port orangé est un peu spécial, il appartient à la fois aux deux LANs, mais il ne va pas nous servir tout de suite.

Tout va (presque) se passer comme si l'on avait découpé notre SWITCH en deux morceaux (sans pour autant le détruire).

Dans une première approche, notre maquette deviendrait ceci :

Le SWITCH a été virtuellement coupé en deux. Les deux VLANs sont complètement étanches au niveau Ethernet (Un SWITCH est en principe un outil qui ne va pas au delà du niveau 2). Pour interconnecter ces deux LANs, un routeur est toujours nécessaire.

Pourquoi faire ?

Il y a bien entendu quelques avantages à pratiquer de la sorte. Nous pouvons au moins en citer deux :

  • optimisation du matériel. En effet, c'est évident sur l'illustration, nous n'avons plus besoin que d'un seul SWITCH, là où il nous en fallait deux au départ,
  • passer un poste de travail d'un LAN à l'autre devrait pouvoir se faire de façon « soft ». Plutôt que de débrancher puis de rebrancher ailleurs le lien du poste, nous pourrons le faire par l'outil de configuration du SWITCH.

Voilà pour le principe de base. Vous devinez que si je prends la peine de rédiger un chapitre sur les VLANs, c'est qu'il y a d'autres choses encore derrière ce concept. Jusqu'ici, c'est assez simple. Les choses vont maintenant se compliquer progressivement pour arriver à des solutions qui peuvent vite devenir un casse tête. Il faudra alors résister à la tentation de réaliser des « usines à gaz » là où ce n'est pas nécessaire. Les solutions les plus simples, pourvu qu'elles répondent au cahier des charges, sont toujours les meilleures.

802.1q (ou l'art du tag)

Ici, l'idée serait d'arriver à ce que certains ports du switch puissent être assignés à plusieurs VLANs, ça fera économiser du câble (et aussi des ports sur le SWITCH).

Le principe consiste à ajouter dans l'en-tête de la trame Ethernet un marqueur qui va identifier le VLAN. Il existe quelques solutions propriétaires pour réaliser ceci, mais le système s'est avéré tellement intéressant qu'une norme a été définie, il s'agit de la norme 802.1q.

Alors qu'une trame Ethernet « normale » est constituée comme ceci :

Une trame modifiée par la norme 802.1q se trouve allongée de 4 octets :

Il n'est peut-être pas nécessaire de détailler le contenu de ces deux nouveaux champs. Pour l'instant, retenons que le VID (Identifiant du VLAN) est codé sur 12 bits, ce qui laisse une latitude confortable.

Il est aussi nécessaire de rappeler qu'une trame Ethernet ne doit pas dépasser 1518 octets et que donc, quatre octets de plus dans l'en-tête risquent d'aboutir à une fragmentation des trames, ce qui n'est jamais bien bon. Si l'on doit avoir recours à des VLANS « tagués », il sera sans doute nécessaire de prévoir ce détail.

Au final, notre SWITCH a donc la possibilité d'ajouter ces marqueurs aux trames Ethernet. Si c'est le cas, il sera alors possible théoriquement d'assigner un même port à 212 VLANS différents. Grâce au VID de chaque VLAN, les données seront acheminées correctement.

Si nous appliquons cette technique à notre maquette, nous obtenons ceci :

Que les esprits sensibles gardent leur sérénité. Il n'y a effectivement qu'un seul câble qui relie l'unique swith au routeur, et pourtant, nous allons effectivement router les données entre les deux LANs. Il y a tout de même une condition à respecter : le routeur doit être « 802.1q compliant », c'est-à-dire qu'il doit savoir lire les tags que le SWITCH a posé sur au moins l'un des deux VLANs.

Explications

Au niveau 2

Le port orangé, marqué « trunk » appartient à la fois aux deux VLANs bleu et vert. Sur ce port, il faut bien sûr qu'au moins l'un des deux VLANs soit « tagué ».

Sur le câble relié à ce port, il circulera donc à la fois les trames du VLAN bleu et celles du VLAN vert. Il n'y aura pas de problèmes tant qu'à chaque bout du câble, l'interface Ethernet sera capable de trier les trames en fonction du tag. Ceci impose donc naturellement que le routeur soit compatible avec la norme 802.1q, c'est-à-dire que son interface soit capable d'exploiter ces tags.

Sous Linux, c'est tout à fait possible, il existe sur les distributions modernes un module spécialisé : le module 8021q (testé sur Debian Sarge et Etch).

Attention tout de même, ce lien va supporter le trafic des deux VLANs, il faut veiller à ce qu'il ne soit pas engorgé.

Au niveau 3

Le SWITCH n'a (en principe) rien à faire du niveau 3. Chacun des VLANs se trouvera avec un plan d'adressage IP qui lui est propre, mais le SWITCH n'est pas concerné, si ce n'est par le fait que pour l'administrer, il faudra bien y accéder par IP. Pour ce faire, le SWITCH disposera d'une adresse IP sur au moins l'un des VLANs, et la machine d'administration devra pouvoir accéder à ce VLAN. Il y aura quelques problèmes de sécurité à envisager à ce niveau, mais nous n'y sommes pas encore.

Au niveau du routeur, en revanche, il faudra que l'interface Ethernet physique puisse présenter autant d'interfaces virtuelles qu'il y a de VLANs sur le « trunk », chacune avec une adresse IP dans le VLAN concerné.

Attribution d'un port à un VLAN

Il y a plusieurs façons de s'y prendre. Vous trouverez sans doute de nombreuses pages qui traitent ce sujet, en vous parlant des VLANs de niveau 1, 2, voire 3. Nous allons essayer de voir ceci de façon plus pragmatique.

Attribution statique (niveau 1)

C'est la méthode la plus simple et aussi la moins souple, qui consiste, comme nous l'avons sous entendu jusqu'ici, à attribuer un port du SWITCH à un VLAN donné, en configurant statiquement le SWITCH. Nous n'avons besoin de rien d'autre que d'un SWITCH administrable.

Attribution dynamique (niveaux > 1)

Ici, nous ferons appel à 802.1x et à un procédé d'authentification. Dans ce qui suit, nous disposerons d'un SWITCH capable d'envoyer à un serveur d'authentification (typiquement RADIUS) l'adresse MAC de la station connectée à un port, en guise de « login/password ». Si l'adresse MAC est connue (authentification réussie), le serveur pourra envoyer au SWITCH le numéro de VLAN attaché à la station. Attention, tous les SWITCHs 802.1q ne savent pas forcément réaliser cette opération.

Cette méthode est plus souple, puisqu'une station donnée pourra se connecter sur n'importe quel port, elle se retrouvera toujours sur le VLAN qui lui convient.

Il est possible d'utiliser cette méthode avec autre chose que l'adresse MAC (login/password, certificat x509, smartcard…), il faudra alors mettre en ?uvre un « supplicant » sur la station. Nous ne verrons pas cette possibilité dans l'étude du réseau filaire, nous nous contenterons des adresses MAC.