Лабораторная работа. STP BPDU GUARD.

Cегодня разберем еще один способ защиты протокола STP. До этого я показывал лабы по STP Root Guard и Loop Guard.
Что позволяет делать функция BPDU Guard? Она позволяет блокироватьвыключать порт при получение на этом порту BPDU.

Чем эта функция отличается от Root Guard?

 
Обе эти функиции похожи между собой. Но BPDU Guard отключает порт даже если он находится в режиме PortFast, то есть игнорирует состояния прослушиванияобучения, а сразу участвует в передаче фреймов. Это эффективно работает, если за такими портами находятся устройства, которые случайно могут участвовать в STP-протоколе. При отключение порта, его надо будет включать потом вручную или же настроить интервал времени ожидания до включения(по-умолчанию 300 сек.). Если по истечение интервала времени BPDU бегают снова на этом порту, то порт включается и сразу же происходит отключение.
 Root Guard работает несколько иначе. Там позволяется хождение в сети BPDUшек, но до тех порт, пока кто-то из коммутаторов не попытается стать корневым. Тогда порт блокируется, но восстановление будет проходить автоматически.

Теперь рассмотрим небольшой пример. Делаем как обычно на реальных железка, в GNS3 и PT такое сделать нельзя.
Топология такая:


Свитч CORE у нас работает, например, в корпоративной сети. Порт у него в Portfast режиме, чтобы включить туда просто рабочую станцию или, к примеру, принтер. Но кто-то по ошибке (или специально) включил туда L2 свитч, назовем его BadSW. На CORE свиче на порту 0/1 нам априори не нужны никакие участники в процессе STP.
Включаем функцию защиты BPDU Guard. На свичах у нас режим spanning-tree mode rapid-pvst.

На CORE включаем:

interface FastEthernet0/1
 spanning-tree portfast
 spanning-tree bpduguard enable

И еще режим восстановления и интервал:

errdisable recovery cause bpduguard
errdisable recovery interval 100

Интервал сделали 100 сек.

На BadSW переводим порт fa 0/1 в режим транка:

interface FastEthernet1/0/1
 switchport trunk encapsulation dot1q
 switchport mode trunk

И смотрим, что произошло на CORE:

20:50:43: %SPANTREE-2-BLOCK_BPDUGUARD: Received BPDU on port FastEthernet0/1 with BPDU Guard enabled. Disabling port.
20:50:43: %PM-4-ERR_DISABLE: bpduguard error detected on Fa0/1, putting Fa0/1 in err-disable state
20:50:45: %LINK-3-UPDOWN: Interface FastEthernet0/1, changed state to down


Срабатывание защиты! Смотрим интервал:

CORE#sh errdisable recovery
ErrDisable Reason    Timer Status
—————–    ————–
udld                 Disabled
bpduguard            Enabled
security-violatio    Disabled
channel-misconfig    Disabled
vmps                 Disabled
pagp-flap            Disabled
dtp-flap             Disabled
link-flap            Disabled
l2ptguard            Disabled
psecure-violation    Disabled
gbic-invalid         Disabled
dhcp-rate-limit      Disabled
unicast-flood        Disabled
storm-control        Disabled
arp-inspection       Disabled
loopback             Disabled

Timer interval: 100 seconds

Interfaces that will be enabled at the next timeout:

Interface    Errdisable reason    Time left(sec)
———    —————–    ————–
Fa0/1        bpduguard                78

Видно, что пошел отсчет секунд до восстановления. Теперь когда время истечет – будет принята попытка восстановления порта из состояния err-disable. Ждем и видим в консоли попытку восстановить порт:

 CORE#
20:55:27: %PM-4-ERR_RECOVER: Attempting to recover from bpduguard err-disable state on Fa0/1
20:55:31: %LINK-3-UPDOWN: Interface FastEthernet0/1, changed state to up
20:55:32: %SPANTREE-2-BLOCK_BPDUGUARD: Received BPDU on port FastEthernet0/1 with BPDU Guard enabled. Disabling port.
20:55:32: %PM-4-ERR_DISABLE: bpduguard error detected on Fa0/1, putting Fa0/1 in err-disable state
20:55:34: %LINK-3-UPDOWN: Interface FastEthernet0/1, changed state to down

Но, так как у нас BPDU продолжают бегать, порт опять ушел в состояние err-disable и выкл.

Вывод: на портах в режиме PORTFAST включайте функцию защиты. Конечно спасает и port-security  и dot1x защита, но есть ситуации, когда нужно избежать BPDU на таких портах.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *