BPDU Guard
Course Contents
1. Qu’est-ce que le BPDU Guard ?
Vous êtes-vous déjà demandé ce qu’est le BPDU Guard et comment il protège votre réseau ?
Simplifions les choses et commençons par un exemple.

Dans le diagramme ci-dessus, nous voyons une topologie STP typique avec trois commutateurs principaux : SW1, SW2 et SW3.
- SW1 est le Root Bridge, avec le Bridge ID 32769:AABB.CCDD.EE01
- SW2 a un port (G0/2) configuré avec PortFast, normalement destiné aux appareils finaux comme les PCs.
Mais voilà le problème :
Un commutateur malhonnête se connecte à ce port d’accès !
Au lieu de rester silencieux, il envoie des BPDU avec une Bridge Priority inférieure : 4096:AABB.CCDD.EE10
C’est mieux que le Root Bridge actuel !
Et comme le BPDU Guard n’est pas activé, le commutateur accepte le BPDU et SW2 le laisse entrer dans la topologie STP…
Sans BPDU Guard
Regardez maintenant ce qui se passe :

C’est le commutateur erroné qui l’emporte.
Parce qu’il annonce une meilleure priorité, il est maintenant sélectionné comme nouveau Root Bridge.
Le résultat ?
Toute votre topologie Spanning Tree est compromise et tout cela est parti d’un simple port d’accès mal sécurisé.
C’est exactement ce que BPDU Guard est censé empêcher : des appareils malveillants qui tentent de prendre le contrôle de votre réseau STP.
Solution : Activation de BPDU Guard
Pour éviter cette situation, la fonction BPDU Guard est appliquée au port activé par PortFast.
Lorsqu’il est activé, tout BPDU entrant est immédiatement rejeté et le port est placé dans un état de err-disable state (down/down).
Cela garantit que les ports d’accès généralement connectés à des appareils d’utilisateur final tels que des PC ou des imprimantes ne peuvent pas participer au STP.
Après : Avec BPDU Guard
Voici un exemple où la fonction BPDU Guard est activée sur l’interface connectée au commutateur défaillant.

Si vous vous demandez toujours ce qu’est le BPDU Guard en action, regardez ci-dessus ! Cette fonction détecte les BPDU entrants et désactive immédiatement le port pour protéger le réseau.
*Dec 8 12:58:28.065: %SPANTREE-2-BLOCK_BPDUGUARD: Received BPDU on port Gi0/2 with BPDU Guard enabled. Disabling port.
*Dec 8 12:58:28.066: %PM-4-ERR_DISABLE: bpduguard error detected on Gi0/2, putting Gi0/2 in err-disable state
*Dec 8 12:58:29.073: %LINEPROTO-5-UPDOWN: Line protocol on Interface GigabitEthernet0/2, changed state to down
*Dec 8 12:58:30.109: %LINK-3-UPDOWN: Interface GigabitEthernet0/2, changed state to down
J’espère que votre question sur ce qu’est le BPDU Guard est maintenant claire, vous avez vu le risque, la réaction et l’impact.
2. Configuration de BPDU Guard
Avant de plonger dans la configuration, clarifions un point important : BPDU Guard et PortFast sont des fonctions distinctes.
Bien qu’elles soient souvent utilisées ensemble, elles peuvent être configurées indépendamment en fonction des besoins de votre réseau.
Si vous souhaitez que les appareils des utilisateurs finaux (comme les PC ou les imprimantes) accèdent instantanément au réseau et soient protégés contre les commutateurs malveillants, vous devez activer PortFast et BPDU Guard sur le même port.
Dans cet exemple, nous allons configurer :
- PortFast accélérer le délai STP habituel.
- BPDU Guard pour arrêter le port en cas de réception d’un BPDU inattendu.
Nous l’appliquerons à l’interface G0/2 sur le commutateur SW2.

BPDU Guard peut être configuré de deux manières :
- Sur les ports individuels : Appliqué manuellement à un port spécifique.
- Global : Automatiquement appliqué à toutes les interfaces configurées avec PortFast.
Activation de BPDU Guard sur des ports individuels
Étapes de configuration :
- Entrez dans le mode de configuration de l’interface :
SW2(config)# interface GigabitEthernet0/2
2. Activer la BPDU Guard sur l’interface :
SW2(config-if)# spanning-tree bpduguard enable

Vérification de l’état de BPDU Guard
Pour confirmer que la fonction BPDU Guard est activée et active, utilisez les commandes suivantes :
SW2(config-if)# show spanning-tree interface g0/2 detail
Port 3 (GigabitEthernet0/2) of VLAN0001 is designated forwarding
Port path cost 4, Port priority 128, Port Identifier 128.3.
Designated root has priority 32769, address 50e2.aa04.6b00
Designated bridge has priority 32769, address 50e2.aa04.6b00
Designated port id is 128.3, designated path cost 0
Timers: message age 0, forward delay 0, hold 0
Number of transitions to forwarding state: 1
The port is in the portfast edge mode
Link type is point-to-point by default
Bpdu guard is enabled
BPDU: sent 3, received 0
Comme vous pouvez le voir dans la sortie, le BPDU Guard est activé !
Cette configuration garantit que si des BPDU sont reçus sur ce port, celui-ci s’arrêtera immédiatement et passera à l’état Err-disable.
Comportement lors de la réception d’un BPDU
Si un BPDU est détecté, l’interface est immédiatement arrêtée et placée dans un état err-disabled.

Vous pouvez le vérifier en utilisant :
SW2# show interfaces g0/2 GigabitEthernet0/2 is down, line protocol is down (err-disabled) !output omitted
Comme vous pouvez le voir, le port est désactivé avec l’option err-disabled ! Hacker tu ne pourras pas détruire ma topologie STP 🙂
Désactivation de BPDU Guard sur des ports individuels
Dans certaines situations, il peut s’avérer nécessaire de désactiver BPDU Guard sur une interface spécifique. Cette opération peut être effectuée directement en mode de configuration de l’interface :

SW2(config)# int g0/2 SW2(config-if)# spanning-tree bpduguard disable
Cette commande supprime la protection BPDU Guard du port sélectionné uniquement.
Activation globale de BPDU Guard
BPDU Guard peut être activé globalement, ce qui permet de l’appliquer automatiquement à toutes les interfaces configurées avec PortFast.
SW2(config)# spanning-tree portfast bpduguard default
3. Comprendre l’état ErrDisable
Lorsque BPDU Guard détecte un BPDU, il ferme immédiatement le port pour protéger le réseau. L’interface entre dans l’état err-disabled avec un statut down/down.
Dans le diagramme ci-dessous, l’interface G0/2 sur SW2 reçoit un BPDU d’un dispositif errant. En conséquence, le commutateur désactive le port :

⚠️ Important : Ne réactivez pas le port immédiatement !
Tout d’abord, identifiez et supprimez l’appareil qui envoie le BPDU.
Sinon, le port s’éteindra à nouveau…
Nous allons maintenant voir comment récupérer le port une fois le problème résolu.
4. Récupération des ports à partir de l’état ErrDisable
Une fois que la cause de l’état err-disabled a été supprimée, le port peut être restauré manuellement ou automatiquement.
Récupération manuelle
Vous pouvez réinitialiser le port manuellement en suivant les étapes suivantes :
SW2(config)# interface g0/2 SW2(config-if)# shutdown SW2(config-if)# no shutdown
Vérifiez ensuite que l’interface est à nouveau en ligne :
SW2# show interfaces g0/2 GigabitEthernet0/2 is up, line protocol is up (connected) !output omitted
Récupération automatique (Récupération ErrDisable)
Les commutateurs peuvent également récupérer les ports automatiquement à l’aide de la fonction de errdisable recovery.
Par défaut, ce mécanisme est désactivé. Vous pouvez vérifier son état actuel à l’aide de la commande suivante :
SW2# show errdisable recovery
ErrDisable Reason Timer Status
----------------- --------------
arp-inspection Disabled
bpduguard Disabled
!output omitted
Timer interval: 300 seconds
Interfaces that will be enabled at the next timeout:
Activation de la récupération automatique
Pour activer ErrDisable Recovery pour une cause spécifique, telle que BPDU Guard :
SW2(config)# errdisable recovery cause bpduguard

Vérifiez que ErrDisable Recovery a été activée :
SW2# show errdisable recovery ErrDisable Reason Timer Status ----------------- -------------- arp-inspection Disabled bpduguard Enabled !output omitted Timer interval: 300 seconds Interfaces that will be enabled at the next timeout: Interface Errdisable reason Time left(sec) --------- ----------------- -------------- Gi0/2 bpduguard 299
Dans cet exemple, Gi0/2 est programmé pour se rétablir dans 299 secondes.
Ce qui se passe pendant le Recovery
Une fois le délai expiré, le port est automatiquement rétabli dans l’état « up/up ». Les journaux suivants illustrent le processus de rétablissement :
*Dec 8 15:30:45.261: %PM-4-ERR_RECOVER: Attempting to recover from bpduguard err-disable state on Gi0/2 *Dec 8 15:30:47.290: %LINK-3-UPDOWN: Interface GigabitEthernet0/2, changed state to up *Dec 8 15:30:48.290: %LINEPROTO-5-UPDOWN: Line protocol on Interface GigabitEthernet0/2, changed state to up
Réglage du Recovery Timer
Le délai de récupération par défaut est de 300 secondes. Vous pouvez le modifier pour une valeur comprise entre 30 et 86400 secondes.
Pour vérifier la plage disponible :
SW2(config)# errdisable recovery interval ? <30-86400> timer-interval(sec)
Pour définir un intervalle personnalisé, par exemple 30 secondes :
SW2(config)# errdisable recovery interval 30
Ce paramètre s’applique à toutes les causes de récupération errdisable actives.
5. Conclusion
Qu’est-ce que le BPDU Guard ?
BPDU Guard désactive un port immédiatement s’il reçoit un BPDU, tant que BPDU Guard est activé sur ce port.
Cela empêche les commutateurs non autorisés d’interférer avec la topologie Spanning Tree.
Tout au long de cette leçon, vous avez appris :
- Pourquoi c’est important
Un seul BPDU sur un port d’accès peut perturber le STP. BPDU Guard l’arrête instantanément. - Comment il se comporte
Lorsqu’il est déclenché, le port est placé dans l’état err-disabled (down/down). - Comment le configurer
- Par port : spanning-tree bpduguard enable
- Globalement : spanning-tree portfast bpduguard default
- Comment récupérer le port
- Manuellement : en utilisant shutdown / no shutdown
- Automatiquement : avec errdisable recovery cause bpduguard