Les Vlans : les protocoles de transport et de contrôle

Le VMPS (VLAN Membership Policy Server)

Qu'est ce que le VMPS ?

La gestion de Vlans est devenu fastidieuse et rébarbative sur grand site hétérogène, il a alors fallu trouver une solution pour automatiser cette gestion. Le Vmps est un service, crée par Cisco, chargé de faire correspondre un Vlan à une (ou plusieurs) adresse Mac et s'impose donc comme la solution.

Comprendre le VMPS

La gestion dynamique des Vlans passe tout d'abord par la compréhension d'une architecture réseau basé sur les Vlans de niveau 2, du protocole VTP (Vlan Trunking Protocol), puis par l'étude du protocole VQP (Vlan Query Protocol).



Le protocole VTP (Vlan Trunking Protocol)

L'utilisation du protocole VTP est obligatoire sur le réseau sur lequel on veut déployer une solution VMPS. EN effet, ce dernier utilisera le nom de domaine VTP lors de l'échange de paquets entre le serveur VMPS et les commutateurs clients.

Le protocole VQP

Le protocole VQP est un protocole qui permet au switch client d'interroger un serveur VMPS avec des informations sur les stations enregistrées et leur Vlan associé. Ainsi le switch client pourra associer le port avec le bon VLAN. Le serveur VMPS est le plus souvent un switch ou un routeur Cisco, mais il existe également des serveurs " libres " (dont le code source est consultable et modifiable) destiné aux machines Unix (Linux et Solaris).

Le Vmps est donc basé sur une architecture client/serveur et permet de gérer dynamiquement les assignations de Vlan en fonction d'adresses MAC (Media Access Control). Lorsqu'une machine se connecte à un port, le switch récupère son adresse MAC et se connecte au serveur VMPS afin de vérifier le droit d'accès de cette machine. Lorsque celle-ci est autorisée, le serveur envoie au client le Vlan dans lequel cette machine doit se connecter. Le switch place donc le port dans le bon Vlan et la machine a donc accès au réseau.

Le serveur VMPS peut être accompagné de serveur secondaire pour prendre le relai en cas de panne ou pour simplement équilibrer la charge (load-balancing).

Le serveur utilise une base de données contenant les adresses MAC des clients, le Vlan correspondant et d'autres règles permettant de donner le droit à un utilisateur de se connecter. Normalement cette base de données est téléchargée par le serveur VMPS à partir d'un serveur TFTP (Trivial File Transfert Protocol), qui peut être situé n'importe où sur le réseau. Cette base de données est chargée dans le serveur à chaque démarrage/redémarrage de celui-ci.

Le serveur VMPS

Le fonctionnement du serveur

Une base de données contenant des adresse MAC et le nom du vlan correspondant est téléchargé depuis un serveur TFTP par le serveur VMPS. A partir de ce moment le serveur est prêt à répondre aux requêtes des clients. A chaque démarrage ou redémarrage du serveur, cette base de données est à nouveau téléchargée.

Le VMPS ouvre un socket, c'est à dire un espace mémoire réservé par l'application ouvert sur le réseau pour accueillir les connexions entrantes et sortante. Le protocole UDP est utilisé. Contrairement à TCP il ne garantit pas l'acheminement des paquets mais en revanche est beaucoup plus rapide.

Lorsque le serveur reçoit une requête valide d'un client, il recherche dans sa base de données, l'adresse MAC correspondante et le numéro de Vlan associé. Si le Vlan choisi est autorisé sur le port, le nom du Vlan est envoyé au client (le switch). Si le Vlan n'est pas autorité sur le port, il y a 2 solutions :

le serveur VMPS est en mode open, il renvoie un message avertissant que l'accès au réseau est refusé,
le serveur VMPS est en mode secure, le port du switch est alors refermé.



Les options disponibles

Il est possible de configurer un Vlan par défaut, appelé Vlan Fallback. Ainsi lorsqu'une requête contenant une adresse MAC ne se trouvant pas dans la base de données arrive au serveur, ce dernier renvoie le nom de ce Vlan par défaut et le switch ouvre l'accès au réseau. Si la configuration d'un Vlan par défaut n'a pas été faite et que l'adresse MAC n'est pas trouvée, le serveur envoie un message annonçant que l'accès est refusé ou referme le port si le serveur est en mode secure.

Dans la configuration du serveur, une option permet de filtrer les adresses MAC auxquelles on ne souhaite pas donner l'accès en ne spécifiant aucun Vlan. C'est l'option -NONE- qui doit se trouver là où se trouve usuellement le nom du Vlan. Dans ce cas, selon le mode de configuration du serveur, le port est fermé (mode secure) ou un message de refus de connexion est envoyé.

Une dernière option permet de créer des groupes de ports associés à un Vlan. Lors d'une connexion sur un de ces ports, le Vlan est récupéré dans la base de données en fonction de l'adresse MAC puis le serveur le compare à celui associé aux ports. Si les deux noms de Vlans concordent, le port est ouvert et placé dans le bon Vlan. Sinon, le serveur envoie un message annonçant que l'accès est refusé ou referme le port si le serveur est en mode secure.

Un port en configuration dynamique ne peut donc être associé qu'à un seul Vlan. Les connexions multiples sur un port (via un doubleur ou un hub) ne sont possible que lorsque toutes les adresses MAC des machines sont dans le même Vlan.

Si un port est déjà affecté à un Vlan et qu'une nouvelle demande de connexion, dans un autre Vlan, a lieu, le serveur envoie un message annonçant que l'accès est refusé ou referme le port si le serveur est en mode " secure ".

Configuration du serveur openVMPS

Le serveur openVMPS respecte le protocole décrit précédemment de façon à rester compatible avec les commutateurs Cisco.La différence principale se situe au niveau de la base de données. Elle n'est pas stockée sur un serveur TFTP mais directement sur le serveur. On peut la trouver dans le fichier de configuration, avec les options générales du serveur. La syntaxe est la même que pour les commutateurs serveur VMPS. Par défaut, le fichier utilisé est vmpsd.conf, il se trouve dans le répertoire /etc. Cependant il est possible d'utiliser un autre fichier lors du lancement du serveur en utilisant l'option " -c ".

Dans la configuration les mots se trouvant après le caractère " ! " sont considérés comme des commentaires. Cela permet d'obtenir un fichier plus clair et lisible :

!
! --- Init ---				Bloc d'initialisation des options
!

!Choix du mode secure ou open
vmps mode open

!Nom du domaine VTP
vmps domain DOMAIN_NAME

!Action par défaut lorsqu'une requête sans nom de domaine arrive au serveur,
!ici on refuse le traitement
vmps no-domain-req deny

!Vlan par défaut si l'adresse MAC n'est pas trouvée
vmps fallback VMPSRogue


!
! --- Mac Address Section ---		Bloc équivalent à la base de données
!

vmps-mac-addrs				!Début de liste des adresses MAC


!
! --- VLAN Admin ---			!Nom du Vlan concerné
!

!Cette ligne contient le mot clé address suivi de l'adresse MAC de la machine concernée,
!puis le mot clé vlan-name suivi du nom du Vlan dans laquelle cette machine doit être placée. 
!En fin de ligne on trouve un commentaire avec le nom de la machine.
address 0000.0000.0001 vlan-name Admin ! machine1
                                                                !

!
! --- VLAN Compta ---
!
address  0000.0000.0002 vlan-name Compta ! machine2

...

!
! --- VLAN Serveur ---
!
address 0000.0000.0003 vlan-name Serveur ! machine3

!
! --- VLAN Poubelle ---
!
!Une section pour le Vlan par défaut peut être créée afin d'y placer volontairement des machines

Configuration des commutateurs clients

La configuration des commutateurs clients se fait en 2 étapes : la configuration générale du Vmps et celle des ports concernés.



Configuration générale

Une fois connecté au switch, il faut passer en mode enable, puis en mode configuration du terminal. On peut ensuite saisir les adresses IP des serveurs VMPS avec les commandes suivantes :

pour le serveur principal:
adresse IP du serveur VMPS principal
switch(conf)# vmps server 192.168.0.1 primary
pour les serveurs secondaires:
adresse IP du serveur VMPS secondaire
switch(conf)# vmps server 192.168.0.2

Il est possible de choisir le temps entre deux requêtes au serveur :

switch(conf)# vmps reconfirm 120

Une dernière option permet de spécifier le nombre de requêtes à effectuer sur le serveur principal avant de passer au serveur secondaire :

switch(conf)# vmps retry 3

A tout moment, il est possible de vérifier les paramètres VMPS précédemment décrit grâce à la commande suivante :

switch# show vmps
VQP Client Status:
--------------------
VMPS VQP Version:   1
Reconfirm Interval: 120 min
Server Retry Count: 3
VMPS domain server: 192.168.0.2
                    192.168.0.1 (primary, current)

On retrouve bien les adresses des serveurs ainsi que le temps entre les requêtes (Reconfirm Interval) et le nombre d'essai par serveur (Server Retry Count).

Configuration des ports des commutateurs

La configuration des ports est assez simple: la commande est la même que pour assigner un Vlan à un port, il suffit d'écrire le mot dynamic à la place du numéro du Vlan.

Il faut se connecter au switch, passer en mode enable, puis en mode configuration, se placer sur l'interface désirée et entrer la commande suivante :

switch(conf)# interface GigabitEthernet 0/1
switch(conf-if)# switchport access vlan dynamic

Il est possible d'observer la configuration de l'interface pour vérifier que la commande a bien été enregistrée :

switch# sh ru int gi 0/1
!
interface FastEthernet0/1
 switchport access vlan dynamic
!