VLAN et Trunk 802.1q

En relisant quelques anciens billets, je me suis rendu compte que je n’avais pas abordé précisément la notion de vlan et de trunk dans une architecture réseau.

Corrigeons donc cela rapidement.

Un VLAN est un réseau Virtuel. Dans un réseau local physique, vous pouvez donc mettre en place des réseaux logiques, séparés les uns de autres, on parle alors de « segmentation ».

Pour pouvoir mettre cela en place, il vous faut donc un switch qui supporte cette fonctionnalité.

Si maintenant vous désirez propager plusieurs VLANs sur un même lien physique, il faut configurer un « trunk » et la norme établie est la 802.1q aussi appelé couramment : dot1q.

Pour cela, il faudra que vos paquets soit « taggués », c’est à dire qu’ils contiennent dans leurs en-têtes le numéro du vlan (VLAN ID) pour lequel ils sont destinés.

(Cisco supporte bien évidemment cette norme sur ses équipements, mais également sa propre norme propriétaire, ISL « Inter Swtich Link », dont je ne parlerais pas ici).

En situation, nous aurons quelque chose de ressemblant a ceci :

Outre un switch supportant les VLANs, il vous faudra bien évidemment un routeur pour les routages inter-vlan (ou un pc faisant office de routeur).

Bref, a la fin, vous risquez de vous retrouvez avec cela (vous avez de la chance, je vous ouvre les arcanes de mon installation personnelle :-) )

Réseau Perso Guiguiabloc

Réseau Perso Guiguiabloc

(Vous trouverez un billet sur la naissance de cette baie ICI )

Les exemples suivants se basent sur un Switch Catalyst 2924 XL et un Routeur 2611-XM, mais ils restent standard pour tout IOS récent (comprendre qui n’a pas 10 ans…)

La création d’un VLAN sur le switch est très simple :

catalyst#vlan database
catalyst(vlan)#vlan 2 name vlan_base_de_donnees
VLAN 2 added:
Name: vlan_base_de_donnees

Sur l’interface du switch où est branché votre pc/serveur, vous définissez alors sur quel VLAN il est relié :

catalyst#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
catalyst(config)#int fastEthernet 0/1
catalyst(config-if)# switchport mode access
catalyst(config-if)# switchport access vlan 2
 
Ce qui donne :
 
interface FastEthernet0/1
 description serveur Mysql
 port block multicast
 switchport access vlan 2
 spanning-tree portfast
 no cdp enable

La variable « switchport access » définit le droit d’accès au VLAN.

Attention : Il existe un VLAN un peu particulier, le VLAN 1, qui est le VLAN de Management des équipements Cisco. Eviter donc d’y mettre des machines accessibles par tous.

Certains recommandent de déplacer le VLAN 1 sur un autre VLAN, personnellement, ça ne m’a pas porté chance de jouer à cela, donc un peu de rigueur suffit en changeant les vlans natifs sur les interfaces.

Sachez que sur le Catalyst 2924, il existe une petite commande sympa et peu documentée :

switchport mode multi
swichport multi vlan 1,2,3

Cela permet a une machine d’accéder à plusieurs VLANs sans avoir à tagguer ses trames.

Dans ce mode de configuration, les machines connectées aux interfaces du switch n’ont pas besoin de tagguer leurs paquets, donc une configuration réseau toute basique (avec en passerelle l’interface définit dans votre routeur par exemple).

La connectivité entre notre routeur et notre switch par contre sera différente.

Nous avons 1 (voire 2) interfaces physiques sur le Cisco 2600 et c’est sur cette interface que nous allons faire passer l’ensemble des VLANs afin de permettre au routeur de… router ;-)

Coté Switch :

interface FastEthernet0/2
description Trunk fastEthernet 0/0 rt-2611
duplex full
speed 100
switchport trunk encapsulation dot1q
switchport mode trunk
spanning-tree portfast
no cdp enable

Ici, le mode du switch est « trunk » et l’encapsulation, 802.1q.
Sans spécifications particulières, nous passons l’intégralité des VLANs définis sur le switch sur cette interface.

Vous pouvez bien sur être plus restrictif sur cette configuration :

switchport trunk allowed vlan 2,3   # autorise que l'accès aux VLANS 2 et 3

Attention : Dans ce genre de configuration, un paquet non taggué partira dans le vlan par défaut qui est le VLAN 1.

N’oubliez donc pas d’indiquer explicitement le VLAN par défaut en cas de trames non tagguées :

switchport trunk native vlan 2     # on envoie sur le vlan 2 si pas de tag

Côté Routeur 2600 :

interface FastEthernet0/0.1
encapsulation dot1Q 1 native
ip address 192.168.0.254 255.255.255.0
ip virtual-reassembly
no cdp enable

Il ne vous reste plus qu’a définir vos interfaces « virtuelles » sur votre routeur Cisco :

Pour le VLAN 2 par exemple :

interface FastEthernet0/0.2
encapsulation dot1Q 2
ip address 192.168.2.254 255.255.255.0
no cdp enable

NB : Si vous voulez faire sortir vos machines par votre passerelle générale (exemple le pix :-p) n’oubliez pas les nat inside/outside sur vos interfaces, ainsi que des ACL bien placées.

Côté Linux :

Si vous voulez faire du trunk sur Linux, il suffit d’activer le support 802.1q dans le noyau.

Sous Debian, apt-get install vlan
Sous RedHat, le support est natif

Création de l’interface :

Debian :

vconfig add eth0 2 (pourt créer le VLAN 2)

Modification du fichier /etc/network/interfaces :

 auto eth0.2
 iface eth0.2 inet static
 address 192.168.2.254
 netmask 255.255.255.0
 network 192.168.2.0
 broadcast 192.168.2.255
 vlan_raw_device eth0

RedHat :

Création du fichier /etc/sysconfig/network-scripts/ifcfg-eth0.2

DEVICE=eth0.2
BOOTPROTO=static
HWADDR=XX:XX:XX:XX:XX:XX
IPADDR=192.168.2.254
NETMASK=255.255.255.0
NETWORK=192.168.2.0
ONBOOT=yes
TYPE=Ethernet
VLAN=yes

Rédémarrage des services réseaux bien entendu.

Dans les 2 cas, pour supprimer l’interface, il faudra passer un :

vconfig rem eth0.2

(ps: l’écriture d’un alias d’une interface « vlan » se note : eth0.2:1 par exemple)

Côté OpenBSD :

création du fichier /etc/hostname.vlan2 (vlandev étant votre interface réseau physique)

inet 192.168.2.254 255.255.255.0 vlan 2 vlandev sis0

Sous Windows, ce n’est absolument pas natif, tout dépend de la carte réseau et du pilote du fabricant fourni… (en même temps, qui voudrait faire un routeur avec windows ;-) )

Voilà, j’espère que ces explications vous aideront a mettre en oeuvre des VLANs chez vous, et surtout à l’utiliser car en cloisonnement, c’est quand même l’idéal.

Ce billet a été posté dans architecture, cisco, linux, OpenBSD, réseau et taggé , , , , . Bookmark ce permalink.

19 commentaires sur “VLAN et Trunk 802.1q

  1. ici je vien de faire deux vlan sur ma debian qui est raccorde a un port tagger sur le switch mais je recoi aucun paquet sur le second vlan cree

  2. normal alors, c’est que les vlans marchent bien…

    le switch doit etre en mode trunk et non access

  3. Bonjour,

    Je trouve très intéressant ton exposé sur le fonctionnement du Vlan et cela m’a aidé à comprendre beaucoup.
    En effet, je suis aussi confronté à un problème,
    j’ai un switch Dell, avec lequel je dois partager la connexion au sous sol et au bureau.
    Je me demande si j’ai forcément besoin d’un routeur ?
    Car quand je branche le fil de la fibre optique sur le Switch, la connexion est coupée au bureau et vice versa.
    Y a t il quelque chose que j’aurais oubliée ?

  4. Les vlans agissent au niveau 2, donc je ne vois pas l’interet d’un routeur… (sauf si tu dois.. router…)
    Si ca coupe, ca sent le spanning-tree.. en quel etat est ton interface a ce niveau ?

  5. Bonsoir,
    En fait c’est la première fois que je configure un tel switch, je découvre donc les notions, notamment à partir de ton tuto.

    Je m’explique:
    Je pense n’avoir rien touché au spanning-tree.
    C’est celui par défaut du matériel fourni.
    Dois-je modifié quelque chose ?
    C’est quoi le spanning-tree.

    J’ai bien l’interface de configuration sur Vlan 1.
    J’ai donc créé deux Vlan 2, et 3.
    J’ai aussi remarqué que quand je branche mon routeur ou mon interface (RJ-45) sur switch, je me connecte à Internet, si j’avais ton mail je pourrais t’envoyer le schéma du réseau.
    Au fait l’utilisation des fibres optique LC 50/125 peut il etre configuré dans les switch ?

    Ce qui se passe, c’est que il y a une
    entrée venant du fournisseur vers mon switch et une sortie du switch vers le switch du bureau.

    Quand je fais ce branchement, le switch du bureau ne reçoit plus de connexion.

    Merci pour ta réponse,

    GM!

  6. Le spanning-tree est un protocole permittant d’éviter les boucles dans une topologie réseau.
    Mon mail est dans la page « A propos ».
    Les interfaces fibre doivent être configurées comme une interface cuivre, en mode trunk pour un lien de switch a switch.
    Vérifier que le sens des fibres est bon, vérifier l’état de l’interface (connected/up) etc..

  7. Salut,
    Je remercie pour ta réponse.
    Je viens de regarder de plus prêt, les interfaces du fibre sont à « up » et le sens j’ai tourné dans tous les sens, c’est soit mon switch qui est connecté ou celui du prestataire. C’est un dell PowerConnect 2824.
    J’ai meme fait le « trunk » implémenté sous le nom « LAG » mais cela ne donne rien.

    Par contre j’ai lu ça sur le site de DELL:
    REMARQUE: vous ne pouvez utiliser qu’un seul connecteur physique d’un port Combo à la fois….

    http://support.ins.dell.com/support/edocs/network/pc28xx/fr/ug/hardware.htm

    Ce que je ne comprend pas trop, car je me dis que si les données doivent passées d’un swicth à l’autre, les DEL doivent l’indiquer. Mais pourquoi cette remarque ? Mon switch n’est t il pas adapté ? Ou faut il faire autrement ?

    Best,

    GM!

  8. ouhla, attention un LAG n’est pas un trunk !
    L’appelation LAG est équivalente a etherchannel chez Cisco.
    De plus, le protocole est peut etre différent entre les deux switchs (lacp etc..).
    Bref, virer tout ce qui concerne le LAG, c’est surement pour cela que rien ne passe. Au pire, essayer en ne passant qu’un seul vlan.

  9. OK ! Je vais essayer et je te tiens au courant.
    Mais en fait dans la doc, je ne vois rien faisant allusion au TRUNK … Ni LACP etc.
    J’avais lu quelque part que LAG –> TRUNK mais implémenté différemment. Bref tu dois avoir raison.

    GM!

  10. Bonjour,

    Je viens de réessayer mais rien du tout.
    J’ai tout viré, j’ai même créé un trunk (je suis tombé sur un forum Dell qui expliquait comment faire) mais toujours rien.

    Vu qu’il y deux switch et que je ne peut accéder qu’au mien, serait t il possible que celui du prestataire soit à l’origine du non fonctionnement ?

    Je te remercie de consacrer du temps à me répondre.

    GM!

  11. ca peut etre tout et n’importe quoi, je ne connais pas les switchs dell. le test simple est de brancher un pc avec une ip du vlan 1 sur le switch C et le pinguer depuis le switch B (le lien entre les deux switch en mode access et non trunk).
    Le vlan1 etant le vlan par défaut (sauf s’il a était modifier) ca doit pinguer et donc verifier ta connexion entre les deux switches.

  12. Je te remercie,

    Je vais contacter mon prestataire et je te tienir au courant.

    Abientot,

    GM!

  13. Bonjour,

    J’ai contacté mon fournisseur …
    Il a donc inversé les fibres qui étaient reliées …
    J’ai descendu mon routeur au sol et j’ai la connexion en haut et au sous sol.
    Par contre, j’ai un autre problème, étant donné que j’avais deux routeurs, les utilisateurs n’ont plus accès à celui qui est resté en haut. Même si je le descend, toujours rien. Que dois je faire pour accès aux machines de ce routeur ?

    Merci d’avance,

    GM!

  14. Bonjour,

    Un PC qui ne supporte pas dot1q peut-il lire une trame tagguée ou en d’autres termes, existe t-il une fonction qui permette de « nettoyer » une trame taguée pour quelle soit compatible en 802.3 (exemple d’un PC windows)

    Merci d’avance.

  15. ???
    Une carte reseau qui ne fait pas de dot1q branchée sur un port trunk prendra le « native vlan » par défaut.

  16. Bonjour
    je bloque à l’étape :
    vconfig rem eth0.2

    (ps: l’écriture d’un alias d’une interface « vlan » se note : eth0.2:1 par exemple)

    Pouvez vous être un peu plus explicite ?