На коммутаторах SNR серий S2989G, S2995G, S3850G, начиная с версии ПО V705R002C011B029, был добавлен функционал защиты от флаппинга MAC-адресов - MAC-address-flapping prevention.
Что такое флаппинг MAC-адресов
MAC-flapping - это явление, при котором один и тот же MAC-адрес периодически изучается на разных портах коммутатора. Например, за портом коммутатора 1/0/1 существовал MAC1, а затем этот же MAC1 по какой-то причине появился за портом 1/0/2. Flapping MAC-адресов может возникать по разным причинам: петля в сети, или неправильно настроенное / неисправное клиентское оборудование, неправильно сконфигурированная сеть, или даже атака злоумышленников.
И если у нас в сети по какой-то из ранее указанных причин начался флаппинг MAC-адресов, то до устранения причины этого инцидента MAC-адреса так и будут изучаться то на одном, то на другом порту. Для борьбы с этим на помощь приходит функционал MAC-address-flapping prevention.
Настройка MAC-address-flapping prevention на коммутаторах SNR
Чтобы данный функционал работал, необходимо сперва включить изучение MAC-адресов средствами CPU: 'mac-address-learning cpu-control' в режиме глобальной конфигурации (по умолчанию отключен).
Если один и тот же MAC-адрес изучился на разных портах, но в разных VLAN, это НЕ считается за флаппинг MAC-адресов. Функционал MAC-address-flapping prevention работает в каждом экземпляре VLAN отдельно.
Защита от флаппинга между портами с одинаковым приоритетом
Самый простой вариант - использовать защиту от флаппинга между всеми портами с одинаковым приоритетом. Для этого необходимо использовать команду из режима глобальной конфигурации:
(no) mac-address-learning priority X allow-flapping
По умолчанию разрешен флаппинг между портами со всеми одинаковыми приоритетами: и 0, и 1, и 2, и 3.
То есть на коммутаторе такие значения по умолчанию (все сразу):
mac-address-learning priority 0 allow-flapping mac-address-learning priority 1 allow-flapping mac-address-learning priority 2 allow-flapping mac-address-learning priority 3 allow-flapping
И поскольку это значения по умолчанию, то при просмотре текущей конфигурации коммутатора мы не увидим эти строки.
Командой 'no mac-address-learning priority X allow-flapping' мы запрещаем разрешенный флаппинг по умолчанию между портами с приоритетом X. Можно запретить только для одного конкретного приоритета, а можно для всех разом, тогда в конфигурации появятся следующие записи:
no mac-address-learning priority 0 allow-flapping no mac-address-learning priority 1 allow-flapping no mac-address-learning priority 2 allow-flapping no mac-address-learning priority 3 allow-flapping
В данном случае, когда на сети начнется флаппинг, если MAC-адрес на порту с одним приоритетом хотя бы один раз поступит на другой порт с таким же приоритетом, он не будет там изучен, а останется за первоначальным портом.
По умолчанию все порты на коммутаторе без настроек имеют приоритет 0, поэтому для минимальной защиты необходимо использовать команду:
no mac-address-learning priority 0 allow-flapping
Защита от флаппинга между определенными портами (опционально)
Если стоит цель не допустить флаппинг MAC-адреса между какими-то определенными портами, то необходимо использовать команду из режима конфигурации порта:
mac-address-learning priority X
(как было сказано ранее, по умолчанию на всех портах включено 'mac-address-learning priority 0', вернуться к этому значению можно командой 'no mac-address-learning priority').
При этом необязательно запрещать флаппинг MAC-адресов в глобальной конфигурации между одинаковыми приоритетами: данные команды могут работать как вместе, так и по отдельности.
Защита заключается именно в НЕизучении MAC-адресов, и это актуально только тогда, когда у нас MAC-адреса есть в таблице коммутации. Однако если MAC-адрес пропадет из таблицы до того, как случится флаппинг, а затем он появится на другом порту через какое-то время, это НЕ будет считаться флаппингом.
Например, если мы отключили устройство от одного порта, линк пропал, MAC-адрес также был удален из таблицы, и далее мы подключим устройство с этим же MAC-адресом в другой порт (пусть даже с более низким приоритетом), это будет вполне нормальная ситуация, и это не является флаппингом MAC-адресов.
Отключение порта при флаппинге
Для работы данного функционала важно также не забыть настроить в режиме глобальной конфигурации команду: 'mac-address-table notification'
Мы можем не просто запретить флаппинг MAC-адресов, но и запретить вредоносную активность злоумышленников путем отключения порта с помощью команды в режиме конфигурации порта (по умолчанию функционал отключен):
mac-notification moved shutdown
Есть примеры и другого функционала, где при какой-либо сработке, которая свидетельствует о нарушении со стороны клиента, порт автоматически административно выключается (переходит в состояние shutdown), например, в port-security, LBD и т.д. Здесь принцип аналогичный. Однако есть некоторые тонкости.
В данном функционале механизм shutdown срабатывает только тогда, когда обнаруживается миграция MAC-адресов.
Миграция MAC-адресов - это изучение MAC-адреса на другом порту при его флаппинге с порта с более низким приоритетом на порт с более высоким приоритетом, ЛИБО при флаппинге между портами с одинаковым приоритетом. На порт с более низким приоритетом миграция невозможна.
После того, как порт переходит в состояние shutdown, он в нем останется до тех пор, пока его не включить вручную.
В будущих релизах ПО будет добавлена возможность автоматического восстановления - recovery (по аналогии с другим функционалом, например, как в port-security, rate-violation и т.д.), а также будет добавлено логирование таких событий.