Outils pour utilisateurs

Outils du site


doc:vlan

Un réseau local virtuel, communément appelé VLAN (pour Virtual LAN), est un réseau informatique logique indépendant. De nombreux VLAN peuvent coexister sur un même commutateur réseau (switch).

Un VLAN, pour quoi faire ?

Il est parfois nécessaire d'isoler certains réseaux les uns des autres, par exemple pour isoler les ordinateurs des adhérents, des ordinateurs des non-adhérents (qui ne doivent pas accéder aux services internes). Il peut aussi être nécessaire d'isoler les serveurs, qui peuvent avoir besoin de communiquer entre eux sur un lien de communication dédié (c'est le réseau ADM).
Pour cela, on peut imaginer avoir trois réseaux physiques distincts, c'est-à-dire gérer trois types de switchs différents, de sorte qu'un switch d'un type n'est interconnecté qu'à des switchs du même type. Ainsi, pour isoler une machine non-adhérente, il suffirait de brancher son câble réseau sur le switch du réseau des non-adhérents, et les serveurs sur le switch des serveurs.

Cette solution est souvent trop chère (acheter trois fois plus de matériel) et peu flexible: quand on veut déplacer une machine, il faut aller physiquement modifier les branchements: ceci impose qu'il y ait des prises innocupées avant et après le rebranchement. On préfère donc marquer les paquets réseaux (trames ethernet) d'un numéro supplémentaire :
sur le réseau interne, les switchs s'échangent toutes les trames ethernet sans regarder le marquage (tagging) associé.

En périphérie du réseau, les switchs sont configurés pour ne laisser passer, sur la prise d'un ordinateur terminal, qu'une liste déterminée de tags (numéros). Ils peuvent également retirer le tag d'une trame avant de la transmettre au PC et rajouter automatiquement un tag aux trames envoyées par l'ordinateur. Ainsi, l'ordinateur n'a pas besoin de rajouter lui-même le marquage (pas de configuration côté client).

Typiquement, pour une prise d'ordinateur adhérent, le switch se comporte de cette façon :
* pour les paquets entrants sur la prise :

  • si le paquet n'a pas de marquage, on rajoute le tag adhérent et on le transmet
  • si le paquet possède un marquage, on le jette

* pour les paquets sortants :

  • si le paquet est marqué adh, on le transmet
  • si le paquet possède un tag différent, on le jette

Après, on peut ajouter plus de vlans sur la prise (wifi, etc..)

Le comportement d'une prise de switch peut être soit configuré statiquement, soit déterminée dynamiquement à l'authentification, par exemple à l'aide du protocole radius filaire, utilisé au Cr@ns par exemple.

Rajout d'un tag: principe

Voir la page wikipedia la 802.1q.

En résumé: on utilise le champ “Len/Etype” de la trame ethernet pour indiquer qu'il s'agit d'un paquet taggué, et préciser le numéro du TAG. Le véritable champ “Len/Etype” est déplacé juste après, dans le début du contenu du champ “data”. La somme de contrôle de la trame est mise à jour en conséquence.

Initialement, le champ “data” d'une trame ethernet possède une taille maximale de 1500 octets (hors jumbo paquets). En rajoutant le contenu du champ “Len/Etype”, codé sur 4 octets, la quantité d'information utile effectivement transportée n'est alors plus que de 1496 octets.

Cette information est importante à prendre en compte: lorsqu'un switch reçoit une trame contenant déjà 1500 octets de donnés et qu'il doit la tagguer, il ne peut que tronquer le champ data et ainsi perdre les 4 derniers octets d'informations. Ceci est problématique, car la plupart des protocoles de couches supérieurs ne sont pas tolérants à ces problèmes de transmission, et lorsqu'ils le sont, réessayent un envoi, toujours de taille 1500 octets, qui échoue de nouveau. Il est donc important d'indiquer à l'ordinateur qu'il ne doit pas envoyer de paquets de taille supérieure à 1496 octets, ceci se fait en général via le paramètre “mtu” (message-transfert-unit}) d'un lien réseau. Ce paramètre peut-être configuré automatiquement à l'aide du dhcp ou des Router Advertisements en IPv6.

Se connecter à un vlan (taggué) sous linux

Sous debian, il faut installer le paquet vlan et charger le module 8021q (optionnel, chargé à la première utilisation). La connexion à un vlan se fait par la création d'une interface virtuelle qui étend une interface physique.

Par exemple, si l'interface physique est eth0, la connexion au vlan 3 se fera via l'interface eth0.3. Il est important de remarquer que l'interface physique (par ex. eth0) doit rester activée (même sans adresse ip) afin que l'interface virtuelle (par ex. eth0.3) fonctionne.

Création manuelle

On utilise l'utilitaire vconfig:

#!
sudo vconfig add eth0 3 #Ajout du vlan 3 (création de eth0.3)
#WARNING:  Could not open /proc/net/vlan/config.  Maybe you need to load the 8021q module, or maybe you are not #using PROCFS??
#Added VLAN with VID == 3 to IF -:eth0:-

Pour supprimer une interface: vconfig rem eth0.3

Création via fichier interfaces

Avec un fichier interfaces (debian), il suffit de configurer l'interface (par exemple eth0.3) comme une interface physique.

Dans le cas d'une interface virtuelle qui ne devrait pas avoir d'ip (par exemple pour arpwatch), le plus simple est de créer l'interface manuellement:

#!
# Interface sur vlan 1132 sans adresse ip (pour écoute silencieuse)
auto eth0.1132
iface eth0.1132 inet manual
    pre-up vconfig add eth0 1132
    post-down vconfig rem eth0.1132
    up ip l set eth0.1132 up
    down ip l set eth0.1132 down

Créer un vlan

Il faut le propager sur le backbone et les switchs si besoin est, pour ca, revoir la config des switchs.

Ensuite sur les virtualiseurs, il faut éditer *à la main* le network/interfaces, en rajoutant un bridge à la suite de ceux qui existent.

Puis lancer un sudo ifup vmbr12 par exemple si vous venez d'ajouter le vlan 12. (ce qui aura pour effet de faire en une seule commande :

sudo  vconfig add eth0 12 # ajout du vlan 12 eth0.12
sudo ifconfig eth0.12 up # on active eth0.12
sudo brctl addbr vmbr12  # on ajoute le bridge 12
sudo brctl addif vmbr 12 eth0.12   # on met eth0.12 dans le bridge
sudo ifconfig vmbr12 up # on active le bridge
doc/vlan.txt · Dernière modification: 2015/06/27 19:15 par chirac