Hyper-V Port Mirroring – захват внешнего трафика с физического интерфейса

Мне несколько раз задавали вопрос, позволяет ли Hyper-V настроить Port Mirroring таким образом, чтобы трафик с физического интерфейса, поверх которого создан виртуальный коммутатор, целиком отправлялся в зеркалирующую виртуальную машину для анализа. VMware это умеет, а Hyper-V Port Mirroring по умолчанию захватывает лишь трафик, попавший внутри виртуального коммутатора – естественно, внешний трафик, не предназначенный конкретной ВМ, туда просто не попадает. Увы, не помню, с кем вел переписку по данному вопросу – еще во времена работы в команде Microsoft. Задача редкая и никак не документированная. Недавно было найдено решение этой проблемы.

Предлагаемый ниже метод работает на узлах с Windows Server 2012 R2. Для Windows Server 2012 должно быть установлено обновление 2885541

Итак, потребуется настроить Port Mirroring в режиме Destination для машины в которую будем направлять внешний трафик.

Для виртуального коммутатора требуется включить NDIS Capture.

В качестве источника трафика настроить внешний порт виртуального коммутатора при помощи данных команд PowerShell:

$a = Get-VMSystemSwitchExtensionPortFeature  -Name “Ethernet Switch Port Security Settings”

$a.SettingData.MonitorMode = 2

Add-VMSwitchExtensionPortFeature -ExternalPort –SwitchName  <v-switch name>  -VMSwitchExtensionFeature $a

Буду рад, если это кому-то поможет.