Configuration avancée de trunks dot1q

Un trunk est une configuration d’une liaison, généralement entre deux switches mais pas uniquement, permettant d’y véhiculer le trafic de plusieurs VLANs. Sur les switches Cisco, par défaut tous les VLANs présents sur le switches seront autorisés à passer par le trunk en question. Toutefois il est parfois nécessaire, d’un point de vue sécurité mais aussi de performance, de limiter la propagation des VLANs sur certaines liaisons… Voici comment faire …

La topologie

 

trunk-advanced

Nous avons donc ici deux switches d’accès (ASW1 et ASW2) interconnectés par un switch de distribution (DSW1) auquel est également raccordé R1 dont le rôle sera de prendre en charge le routage inter-vlan.

Comme le montre le schéma, ASW1 n’a de machines connectées que dans le VLAN 10 et dans le VLAN 20. De son côté ASW2 lui dispose de machines connectées dans les VLAN 20 et VLAN 30.

Configuration de base

La première chose à faire bien entendu c’est de créer les VLANs, de placer les interfaces dans les bons VLANs (pour ASW1 et ASW2), de configurer les trunks avec leur paramètres par défaut (sur ASW1, ASW2 et DSW1), et ensuite configurer R1 pour prendre en charge le routage inter-vlan (création de sub-interfaces dot1q).

La première chose à noter, c’est qu’il n’est pas nécessaire, dans le cas présent, de créer tous les vlans sur tous les switches. ASW1 n’a besoin que du VLAN10 et 20, ASW2 uniquement des VLANS 20 et 30. Toutefois ce n’est pas une erreur des les configurer. Bien au contraire, si on souhaite modifier la topologie dans le future, par exemple placer une machine dans le VLAN30 sur ASW1, il suffira alors de placer les interfaces concernées dans le VLAN en question.

Configuration des VLANs etc. sur ASW1

ASW1#configure terminal

! Création des VLANS 10, 20 et 30
ASW1(config)#vlan 10,20,30
ASW1(config-vlan)#exit

! Configuration du trunk vers DSW1
ASW1(config)#interface gigabitEthernet 1/0/1
ASW1(config-if)#switchport trunk encapsulation dot1q
ASW1(config-if)#switchport mode trunk
ASW1(config-if)#exit

! Configuration des 12 premiers interfaces fastEthernet dans le VLAN 10
ASW1(config)#interface range fastEthernet 1/0/1-12
ASW1(config-if-range)#switchport mode access
ASW1(config-if-range)#switchport access vlan 10
ASW1(config-if-range)#exit

! Configuration des 12 interfaces suivantes dans le VLAN 20
ASW1(config)#interface range fastEthernet 1/0/13-24
ASW1(config-if-range)#switchport mode access
ASW1(config-if-range)#switchport access vlan 20
ASW1(config-if-range)#end
ASW1#

Configuration des VLANs etc. sur ASW2

ASW2#configure terminal

! Création des VLANS 10,20 et 30
ASW2(config)#vlan 10,20,30
ASW2(config-vlan)#exit

! Configuration du trunk vers DSW1
ASW2(config)#interface gigabitEthernet 3/0/1
ASW2(config-if)#switchport trunk encapsulation dot1q
ASW2(config-if)#switchport mode trunk
ASW2(config-if)#exit

! Configuration des 12 premières interfaces fastEthernet dans le VLAN 20
ASW2(config)#interface range fastEthernet 3/0/1-12
ASW2(config-if-range)#switchport mode access
ASW2(config-if-range)#switchport access vlan 20
ASW2(config-if-range)#exit

! Configuration des 12 interfaces suivantes dans le VLAN 30
ASW2(config)#interface range fastEthernet 3/0/13-24
ASW2(config-if-range)#switchport mode access
ASW2(config-if-range)#switchport access vlan 30
ASW2(config-if-range)#end
ASW2#

Configuration des VLANs etc. sur DSW1

DSW1#configure terminal

! Création des vlans 10,20,30
DSW1(config)#vlan 10,20,30
DSW1(config-vlan)#exit

! Configurations des interfaces vers ASW1, ASW2 et R1 en trunk dot1Q
! gigabitEthernet 1/0/1 => ASW1
! gigabitEthernet 1/0/2 => ASW2
! fastEthernet 1/0/1 => R1
DSW1(config)#interface range gigabitEthernet 1/0/1 - 2, fastEthernet 1/0/1
DSW1(config-if-range)#switchport trunk encapsulation dot1q
DSW1(config-if-range)#switchport mode trunk
DSW1(config-if-range)#end
DSW1#

Configuration de R1

R1#configure terminal

! Activation de l’interface physique
R1(config)#interface fastEthernet 0/0
R1(config-if)#no shutdown

! Création de la sub-interface pour le VLAN 10
! prise en charge du tag dot1Q 10
R1(config)#interface fastEthernet 0/0.10
R1(config-subif)#encapsulation dot1Q 10
R1(config-subif)#ip address 10.0.10.1 255.255.255.0
R1(config-subif)#exit

! Création de la sub-interface pour le VLAN 20
! prise en charge du tag dot1Q 20
R1(config)#interface fastEthernet 0/0.20
R1(config-subif)#encapsulation dot1Q 20
R1(config-subif)#ip address 10.0.20.1 255.255.255.0
R1(config-subif)#exit

! Création de la sub-interface pour le VLAN 30
! prise en charge du tag dot1Q 30
R1(config)#interface fastEthernet 0/0.30
R1(config-subif)#encapsulation dot1Q 30
R1(config-subif)#ip address 10.0.30.1 255.255.255.0
R1(config-subif)#end
R1#

Limiter la propagation des VLANs

L’idée ici est de faire en sorte que le trafic d’un VLAN ne se propage que là où c’est nécessaire. Par exemple, ASW1 doit recevoir le trafic des VLANs 10 et 20 mais pas du VLAN30 (il n’a pas de machine connectées dans ce VLAN). Il en va de même pour ASW2, qui n’a besoin du trafic uniquement pour les VLANS 20 et 30, vu qu’il n’a pas de machine connectée dans le VLAN 10.

Dés lors, on peut, au niveau de la configuration des trunks, définir quels VLANs sont autorisés à être véhiculés dessus. Deux raisons majeures justifient ce genre de configuration:

  1. On évite la propagation inutile de trames de broadcast (destination: FF:FF:FF:FF:FF:FF) ainsi que des trames pour lesquelles l’adresse MAC de destination n’est pas encore connue du switch, puisqu’il ne sert à rien par exemple qu’un broadcast (ou une trame de destination inconnue) circulant dans le VLAN 10 arrive à ASW2, celui-ci n’ayant aucune interface dans ce même VLAN.
  2. On accroît la sécurité de l’infrastructure en empêchant l’accès à un VLAN là où il n’est pas utilisé.

Même s’il suffit de limiter les VLANs autorisés uniquement d’un côté d’un trunk pour que cela prenne effet, il est bien entendu plus propre d’appliquer une configuration similaire aux deux extrémités de la liaison.

Configuration des restrictions sur DSW1

DSW1#configure terminal

! Limitation des VLANS autorisés vers ASW1
DSW1(config)#interface gigabitEthernet 1/0/1
DSW1(config-if)#switchport trunk allowed vlan 10,20
DSW1(config-if)#exit

! Limitation des VLANS autorisés vers ASW2
DSW1(config)#interface gigabitEthernet 1/0/2
DSW1(config-if)#switchport trunk allowed vlan 20,30
DSW1(config-if)#end
DSW1#

Configuration des restrictions sur ASW1

ASW1#configure terminal

! Limitation des VLANS autorisés vers DSW1
ASW1(config)#interface gigabitEthernet 1/0/1
ASW1(config-if)#switchport trunk allowed vlan 10,20
ASW1(config-if)#end
ASW1#

Configuration des restrictions sur ASW2

ASW2#configure terminal
ASW2(config)#interface gigabitEthernet 3/0/1
ASW2(config-if)#switchport trunk allowed vlan 20,30
ASW2(config-if)#end
ASW2#

Vérifications

Il convient maintenant de vérifier si les trunks ont le comportement souhaité. Pour cela, rien de tel que la commande « show interfaces trunk« …

DSW1#show interfaces trunk

Port        Mode             Encapsulation  Status        Native vlan
Fa1/0/1     on               802.1q         trunking      1
Gi1/0/1     on               802.1q         trunking      1
Gi1/0/2     on               802.1q         trunking      1

Port        Vlans allowed on trunk
Fa1/0/1     1-4094
Gi1/0/1     10,20
Gi1/0/2     20,30

Port        Vlans allowed and active in management domain
Fa1/0/1     1,10,20,30
Gi1/0/1     10,20
Gi1/0/2     20,30

Port        Vlans in spanning tree forwarding state and not pruned
Fa1/0/1     1,10,20,30
Gi1/0/1     10,20
Gi1/0/2     20,30
DSW1#

La section de l’affichage qui nous intéresse ici ce sont les « Vlans allowed on trunk ». Comme cela a été configuré, l’interface Fa1/0/1 (vers R1) adopte son comportement par défaut et laisse donc passer tous les vlans (1-4094). De plus les interfaces Gi1/0/1 et Gi1/0/2 quant à elles, n’autorisent que les VLANs nécessaires, soit les VLANS 10,20 vers ASW1 et VLANS 20,30 vers ASW2.

Un VLAN qui n’est pas autorisé sur un trunk, n’apparaîtra donc plus dans les deux sections suivantes. Pour rappel, c’est la dernière section qui représente les VLANs qui circulent réellement sur le trunk en question, c’est à dire les vlans autorisés, qui sont de surcroit actifs (qui ont au moins une interface active, trunks compris) et qui n’ont pas été soit bloqués par Spanning-Tree pour prévenir une boucle, soit bloqués dynamiquement par VTP (pruned).

Remarque:

Lors de la configuration de base des trunks, j’ai utilisé la commande « switchport trunk encapsulation dot1q ». Cette commande n’existe que sur les switches qui supportent à la fois dot1q et ISL. Si vous testez cette configuration sur des modèles comme les WS-C2950 ou WS-C2960, cette commande n’est pas nécessaire, ils ne supportent que dot1Q.

 

7 Comments on “Configuration avancée de trunks dot1q

  1. 1. J’aimerai savoir quelle est la commande qui remplace « switchport trunk encapsulation dot1q » dans un switch c2960-8Ports?
    2. Est ce que sans la commande « switchport trunk encapsulation dot1q » la liaison trunk ne peut pas se formée ou fonctionnée dans le même équipement ci-dessus?

    • Sur un ws-c2960 cette commande n’existe pas. Ils ne supporte que dot1q et donc il n’est pas nécessaire de le spécifier.
      Un simple « switchport mode trunk » suffit et le trunk se formera.

  2. Bonjour, la configuration d’un stack est sensiblement la même. La seule différence est que tu vois les ports de tout les switchs du stack. Les ports seront numérotés selon l’ordre des switchs (master : 1, Backup : 2, etc ..).
    Pour le reste de la configuration, elle est géré par le switch master. 🙂

  3. Merci pour ces précisions … justement j’aimerai comprendre comment rendre des switch stackable .. de manière générale cela se présente comment au niveau de la configuration ?

  4. Bonjour Steve,

    J’aimerai comprendre à quoi correspondent les fameux int gigabitEthernet 1/0/1 ?

    Merci

    • Sur le modèle de switch utilisé, à savoir des ws-c3750 il s’agit des interfaces au format SFP avec un module fibre optique inséré. Le fait qu’elle se nomme 1/0/1 est du au fait qu’il s’agit d’un modèle Stackable. Mais ça ne change rien au fonctionnement, c’est juste un nom