Hyper-V Extensible Switch – ключевая компонента Hyper-V в Windows Server 2012– представляет собой расширяемый управляемый коммутатор второго уровня. Расширяемость означает возможность создания разработчиками модулей, встраиваемых в Hyper-V и модифицирующих/расширяющих штатный функционал анализа, фильтрации и форвардинга пакетов. Управляемость подразумевает наличие целого набора настроек, доступных администратору через PowerShell или консоль Hyper-V Manager, обеспечивающих требуемый уровень изоляции, безопасности и мониторинга запущенных виртуальных машин (ВМ). В одном из предыдущих постов я описывал реализацию технологии Private VLAN (PVLAN)в Hyper-V Extensible Switch. Сегодня посмотрим на ряд дополнительных возможностей.
С точки зрения терминологии понятие Hyper-V Switch (или Virtual Switch) пришло на смену понятию виртуальной сети (Virtual Network) в Windows Server 2008/2008 R2. Если раньше, чтобы обеспечить взаимодействие ВМ между собой или с внешним миром, вы создавали виртуальную сеть одного из трех типов – External, Internal, Private – то теперь вы создаете Virtual Switch, который может быть тех же трех типов и обладает всеми возможностями, описанными ниже. Причем эти возможности задаются для конкретного порта виртуального свича (см. рис.), а порт, в свою очередь, идентифицируется именем виртуальной машины, которая к этому порту подключена, точнее, именем виртуального сетевого адаптера, поскольку таких адаптеров у ВМ может быть несколько.
Далее рассматриваемые настройки Hyper-V Extensible Switch я разбил на три категории: безопасность и изоляция, мониторинг, отказоустойчивость.
Безопасность и изоляция
В консоли Hyper-V Manager в свойствах виртуального сетевого адаптера появился новый подраздел Advanced Features. Первые три настройки в этом окне непосредственно связаны с безопасностью и изоляцией.
Спуфинг MAC-адреса (MAC address spoofing)
По умолчанию Hyper-V запрещает спуфинг МАС-адреса. Иными словами, если ВМ пытается в исходящих пакетах заменить МАС-адрес отправителя, то есть свой МАС-адрес, ассоциированный с виртуальным сетевым адаптером этой машины, на другой МАС-адрес, Hyper-V блокирует такие пакеты. Установка верхнего чекбокса, соответственно, спуфинг разрешает. Как всегда, все, что можно сделать в консоли Hyper-V Manager и даже больше, можно сделать в PowerShell. Для приведенной на рисунке ВМ с именем SRV4 включение спуфинга MAC-адреса реализуется следующей командой:
Set-VMNetworkAdapter -VMName srv4 -MacAddressSpoofing On
Защита DHCP (DHCPGuard)
Данную настройку необходимо использовать для блокировки неавторизованного сервера DHCP, запущенного внутри ВМ. Технически при установке данного чекбокса Hyper-V блокирует пакеты DHCP acknowledge от данной ВМ и предотвращает возможность получения DHCP-клиентами настроек IP от данной ВМ.
Set-VMNetworkAdapter -VMName srv4 -DhcpGuard On
Защита маршрутизатора (RouterGuard)
По аналогии с DHCP Guard установка этого чекбокса блокирует пакеты редиректа и объявления маршрутизатора (redirection и router advertisement) от данной ВМ. Тем самым ВМ не сможет повлиять на таблицы маршрутизации других компьютеров сети.
Set-VMNetworkAdapter -VMName srv4 -RouterGuard On
Списокуправлениядоступомпорта (Port Access Control List, Port ACL)
Для каждого порта Hyper-V Extensible Switch вы можете настроить один или несколько списков управления доступом (ACLs), чтобы задать дополнительные правила безопасности и уровень изоляции ВМ. Все настройки ACL задаются только через PowerShell, в консоли Hyper-V Manager управление списками недоступно. Просмотреть текущее состояние списков можно командой:
Get-VMNetworkAdapterAcl -VMName srv4
Добавление и удаление списка выполняется командами Add-VMNetworkAdapterAclи Remove-VMNetworkAdapterAclсоответственно. Синтаксис обеих команд одинаков. Для каждого списка ACL необходимо указать:
- Локальный или удаленный IP-адрес или MAC-адрес
- Направление действия: входящий трафик, исходящий трафик, оба направления (Inbound, Outbound, Both)
- Собственно действие: разрешить, запретить, измерить (Allow, Deny, Meter)
По умолчанию, никакие ACLs не заданы, и, таким образом, разрешен любой трафик. Пример ниже запрещает для ВМ с именем SRV4 любой трафик с/на IP-адрес 192.168.1.143:
Add-VMNetworkAdapterAcl -VMName srv4 -RemoteIPAddress 192.168.1.143 -Direction Both -Action Deny
Применительно к IP-адресам можно указывать не только конкретный адрес, но и подсеть:
Add-VMNetworkAdapterAcl -VMName srv4 -RemoteIPAddress 192.168.1.0/24 -Direction Both -Action Deny
Если заданы ACLs и для подсети, и для конкретного адреса из этой подсети, то ACL для адреса имеет больший приоритет, то есть «более конкретное» правило имеет большую силу. Например, ниже показан результат выполнения команды Get-VMNetworkAdapterAcl:
Как видно, задан запрет на подсеть 192.168.1.0/24, и при этом разрешен трафик для адреса 192.168.1.143. В результате, IP-трафик возможен только на один 143-й адрес из всей подсети.
Действие Meter позволяет измерять объем входящего и/или исходящего трафика для указанного IP- или MAC-адреса с момента создания соответствующего ACL, например, следующая команда включает измерение входящего трафика с адреса 192.168.1.143:
Add-VMNetworkAdapterAcl -VMName srv4 -RemoteIPAddress 192.168.1.143 -Direction Inbound -Action Meter
Результат можно увидеть с помощью все той же Get-VMNetworkAdapterAcl:
Мониторинг
Мониторинг трафика можно реализовать благодаря механизму зеркалирования порта (port mirroring). Для настройки зеркалирования необходимо указать источник информации, в Hyper-V Manager это делается здесь:
И затем в настройках нужной ВМ, которая и будет осуществлять мониторинг трафика, выбрать в таком же поле значение Destination. В PowerShell это делается параметрами команды Set-VMNetworkAdapter:
Set-VMNetworkAdapter -VMName srv4 -PortMirroring Destination
После чего весь трафик, входящий и исходящий, на порт ВМ SRV3 копируется и перенаправляется на порт ВМ SRV4. Останется только установить в SRV4 необходимое ПО для анализа трафика. Важное условие, обе ВМ должны быть подключены к одному виртуальному свичу.
Отказоустойчивость
Последняя опция в расширенных свойствах виртуального сетевого адаптера относится к отказоустойчивости, а именно к технологии группирования сетевых адаптеров (NIC Teaming).
NIC Teaming – штатная возможность Windows Server 2012, заслуживающая, вообще говоря, отдельного поста. Эта возможность позволяет объединить несколько физических сетевых адаптеров в группу и обеспечить, с одной стороны, отказоустойчивость сетевого трафика при выходе какой-либо «сетевушки» из строя, с другой стороны, агрегирование пропускной способности адаптеров, включенных в группу.
По разным причинам вы можете не захотеть включать тиминг на хостовой машине. Тем не менее, если на хосте более одного физического сетевого адаптера, можно использовать NIC Teaming внутри гостевой ОС. Представим, что на хосте две сетевые карточки. Если в некоторой ВМ два виртуальных сетевых адаптера, эти адаптеры через два виртуальных свича типа external подключены к, соответственно, двум физическим карточкам, и внутри ВМ установлена ОС Windows Server 2012, то вы можете сконфигурировать NIC Teaming внутри гостевой ОС. И такая ВМ сможет воспользоваться всеми преимуществами тиминга, и отказоустойчивостью, и повышенной пропускной способностью. Но для того, чтобы Hyper-V понимал, что при выходе из строя одного физического адаптера, трафик для этой ВМ нужно перебросить на другой физический адаптер, как раз и нужно установить упомянутый чекбокс в свойствах каждого виртуального NIC, входящего в тиминг. В PowerShell аналогичная настройка задается следующим образом:
Set-VMNetworkAdapter -VMName srv4 -AllowTeaming On
Все рассмотренные выше настройки могут быть заданы для запущенных ВМ и вступают в силу немедленно. Разумеется, это не весь функционал Hyper-V Extensible Switch. Просмотрев перечень доступных в Hyper-V командлетов, вы сможете найти еще много интересного.
В заключении хочу заметить, что 26 ноября в Москве пройдет бесплатный семинар из серии IT Camp, посвященный Windows Server 2012 и System Center 2012. Семинар будут проводить мои коллеги – Георгий Гаджиев и Саймон Перриман (Редмонд). Вы сможете посмотреть на продукты живьем и задать возникшие вопросы.
Надеюсь, материал был полезен.
Спасибо!