Устранение сетевых петель в виртуальных средах VMware vSwitch и Hyper-V
- Броадкаст-шторм в сети датацентра, утилизирующий 100% полосы аплинков физических коммутаторов.
- Массовая блокировка транковых портов защитными механизмами
BPDU GuardилиLoopback Detection. - Постоянный флаппинг MAC-адресов виртуальных машин между физическими портами (MAC flap notification).
- Потеря управления гипервизором (ESXi Host Disconnected в vCenter) и изоляция сетевых адаптеров VM.
1. Архитектура защиты виртуальных коммутаторов от петель
Виртуальные коммутаторы VMware (VSS/VDS) и Hyper-V не запускают протокол Spanning Tree (STP) и не обрабатывают BPDU-пакеты. Защита от петель в них построена на фундаментальном правиле: кадр, пришедший из физического аплинка, никогда не отправляется обратно в другой физический аплинк того же виртуального свитча.
2. Причины возникновения петель в виртуализации
- Объединение двух интерфейсов одной VM в программный мост (Linux bridge / Windows Network Bridge), когда оба интерфейса подключены к одному vSwitch / порт-группе.
- Использование некорректных политик Teaming: включение режима IP Hash (LACP) на vSwitch без настройки соответствующего Port-Channel / Static LAG на физическом коммутаторе (или наоборот).
- Проброс виртуальных коммутаторов через вложенную виртуализацию (Nested Virtualization) с включенным Promiscuous Mode и Forged Transmits.
3. Настройка защитных политик на VMware vSwitch / vDS
Установите строгие политики безопасности на уровне Port Group:
# Настройка политик безопасности порт-группы (vSphere CLI / PowerCLI)
Get-VirtualPortGroup -Name "VM_VLAN_10" | Get-SecurityPolicy | Set-SecurityPolicy \
-AllowPromiscuous $false \
-MacChanges $false \
-ForgedTransmits $false4. Конфигурация Teaming и аплинков (VMware vSwitch)
Если на физическом коммутаторе НЕ настроен LACP, политика балансировки vSwitch должна быть установлена строго в «Route based on originating virtual port ID» или «Route based on source MAC hash»:
# PowerCLI команда для исправления Teaming Policy
Get-VirtualSwitch -Name "vSwitch0" | Get-NicTeamingPolicy | Set-NicTeamingPolicy \
-NetworkFailoverDetectionPolicy BeaconProbing \
-Policy RouteBasedOnVirtualPortId5. Защита физического коммутатора (Cisco IOS-XE / NX-OS)
Изолируйте физические порты, смотрящие в сторону гипервизоров, от случайных BPDU, генерируемых внутри гостевых ОС:
interface range GigabitEthernet1/0/1 - 4
description TO_ESXI_HOST_NICS
switchport mode trunk
switchport trunk allowed vlan 10,20,30,100
spanning-tree portfast trunk
spanning-tree bpduguard enable
spanning-tree guard root Частые вопросы (FAQ)
Почему включение режима Promiscuous Mode может вызвать сетевую петлю?
В режиме Promiscuous виртуальный адаптер ВМ получает копии всех пакетов своего L2-сегмента. Если внутри гостевой ОС настроена маршрутизация или мост между двумя такими адаптерами, виртуальная машина замыкает кольцо и начинает транслировать полученные широковещательные кадры обратно в сеть.
Что произойдет, если включить LACP на стороне физического коммутатора, но забыть настроить LACP на vDS?
Физический коммутатор будет ожидать пакеты согласования LACPDU и заблокирует порты (suspended/unbundled), либо начнет раскидывать пакеты по хешу, вызывая сброс одноадресных сессий и постоянный флаппинг MAC-адресов.
Что такое Beacon Probing в VMware ESXi?
Это специальный механизм обнаружения обрывов линков в распределенных сетях без STP. Виртуальный коммутатор отправляет контрольные Ethernet-кадры во все свои аплинки. Если один из адаптеров перестает слышать эти маяки, он признается изолированным и исключается из работы.
Как защитить Hyper-V Switch от петель, создаваемых виртуальными маршрутизаторами?
Включите функцию Guarded Host / MAC Address Spoofing Protection и DHCP Guard в свойствах сетевого адаптера виртуальной машины через PowerShell: Set-VMNetworkAdapter -VMName 'RouterVM' -MacAddressSpoofing Off -DhcpGuard On.