В Windows Server 2012 Hyper-V появилась новая функция — зеркалирование портов (port mirroring), позволяющая мониторить трафик виртуальных машин без необходимости захватывать трафик непосредственно внутри самой гостевой ОС. По сути, эта функция то же самое, что и аппаратный port mirroring, но на уровне виртуального коммутатора Hyper-V. Зеркалирование портов можно использовать в системах на базе Hyper-V для поиска неисправностей в сети, тестирования, мониторинга, анализа сетевого трафика и перенаправления трафика на анализ в IDS системы (системы обнаружения вторжений). Попробуем настроить зеркалирование трафика в Hyper-V 2012 на конкретном примере.
Системные требования для организации мирроринга портов в Hyper-V 2012:
- Система с Windows Server 2012 Hyper-V и административного доступа к ней
- Как минимум один виртуальный коммутатор (vSwitch)
- Как минимум две виртуальные машины: трафик первой мы будет дублировать на вторую
Настройка зеркалирования портов с помощью GUI
- Откройте консоль управления Hyper-V Manager
- Перейдите в настройки виртуальной машины, трафик которой будем зеркалировать (Settings)
- В окне параметров виртуальной машины найдите сетевой адаптер, на котором необходимо включить захват трафика и перейдите в раздел расширенных настроек (Advanced Features)
- В разделе Port mirroring найдите параметр Mirroring Mode и измените его значение на Source (тем самым мы на уровне виртуального коммутатора Hyper-V включим зеркалирование данного порта)
- Если в вашей конфигурации Hyper-V используется более одного виртуального коммутатора, необходимо запомнить его имя (в нашем примере это Hyper-V-Guests).
Следующий этап – настройка виртуальной машины, на которую будет дублироваться трафик с первой. Для удобства анализа сетевого трафика рекомендуется в данную машину добавить отдельную виртуальную сетевую карту (vNIC), подключенную к тому же виртуальному коммутатору. Выделенная карточка позволяет получить максимально полный дамп сетевого трафика за счет отключения ненужных служб и протоколов в гостевой ОС (подробнее об этом ниже). Для этого:
- Погасите виртуальную машину, которая будет выступать в качестве приемника «захватываемого» трафика
- Перейдите в ее настройки (Settings) и добавьте новое оборудование (Add Hardware) типа Network Adapter
- Если используется несколько коммутаторов, включите новую сетевую карту именно в тот, в котором находилась первая виртуальная машина (коммутатор Hyper-V-Guests). В расширенных свойствах новой сетевой карты в разделе Port mirroring укажите, что сетевая карта будет выступать в качестве приемника сетевого трафика Mirroring Mode – Destination.
- Включите виртуальную машину
Далее перейдем к настройке зеркалирования в гостевой Windows, являющейся приемником трафика.
- Зайдите на машину через консоль Hyper-V или по rdp.
- В панели управления сетевыми подключениями найдите добавленную ранее сетевую карту и для упрощения дальнейшей идентификации переименуйте ее (например, в Hyper-V-Guests-Mirror-Port).
- Откройте свойства данного сетевого подключения и отключите все протоколы и службы. Тем самым мы добьемся «чистоты» захватываемого трафика, который ничем не фильтруется и не ограничивается, поступая в точно таком же виде, в каком он попадает на mirror порт.
Далее можно переходить непосредственно к работе с перенаправленным трафиком: это может быть некая IDS система или система захвата и анализа сетевого трафика (Packet Capture), например Microsoft Network Monitor, Message Analyzer, Wireshark или т.п.
Port Mirroring с помощью Powershell
В Windows Server 2012 Hyper-V управлять настройками зеркалирования трафика можно и с помощью Powershell.
В следующем примере мы с помощью Powershell включим port mirroring на виртуальной машине с именем VMWin2008Source и направим трафик на виртуальную машину с именем VMWin2008Monitor:
Set-VMNetworkAdapter –VMName VMWin2008Source –PortMirroring Source
Set-VMNetworkAdapter –VMName VMWin2008Monitor –PortMirroring Destination
Информация: Кроме того, полезными могут быть следующе команды:
- Add-VMNetworkAdapter — добавить новый сетевой адаптер в виртуальную машину
- Get-NetAdapter — получить список сетевых карт (NIC)
- Rename-Netadapter — переименовать сетевую карту
Но есть и небольшая ложка дегтя – порт мирроринг работает в пределах только одного сервера Hyper-V (который, кстати, может работать непосредственно с USB флешки). Это означает, что если виртуальная машина, трафик которой зеркалируется, смигрировала на другой сервер кластера Hyper-V, то зеркалирование трафика перестает работать (на втором хосте также придется настроить отдельную машину для захвата трафика).