Virtual switch или коммутаторы Hyper V нужны для работы сети в виртуальных машинах. На примерах мы рассмотрим как создавать и настраивать эти коммутаторы.
Коммутатор или switch - это оборудование канального уровня или Layer 2 в модели OSI. То есть у коммутатора нет IP, но имеет MAC. Такое оборудование помогает устанавливать связь между хостами.
Первое что нужно понять, что в Hyper V есть три типа свитчей:
- Внешний (External) - виртуальные хосты подключенные к этому свитчу могут общаться с машинами вне хоста Hyper V, выходить в интернет и общаться с другими виртуальными машинами на этом хосте.
- Внутренний (Internal) - виртуальные машины с этим свитчем не могут выходить в интернет, но им доступен хост Hyper V и другие виртуалки с этим адаптером.
- Частный (Private) - виртуалки с этим свитчем не могут выходить в интернет и обращаться к хосту Hyper V. Виртуальные хосты под этим свитчем общаются только между собой.
По сути мы создаем внешний виртуальный коммутатор Hyper V чаще всего, он имеет и доступ к внешнему DNS и DHCP. Если мы захотим протестировать DHCP сервер, например, отличным кандидатов будет приватный свитч.
Для создания первого свитча нужно нажать следующие кнопки:
В новом окне у нас появится выбор выше описанных свитчей с кнопкой создания.
Hyper V не создает коммутаторов по умолчанию. Если в диспетчере виртуальных коммутаторов вы видите имя default switch , то скорее всего кто-то поленился написать название.
Можно выбрать любой, так как на следующем шаге этот выбор останется. Нажимаем кнопку 3:
На следующем окне мы можем установить название свитча(1) и выбрать область его работы (2) и установить, если есть, идентификатор VLAN (3). Идентификаторы VLAN могут иметь свитчи кроме приватного.
Если на количество приватных и внутренних свитчей ограничений нет, то на внешний есть. Внешний свитч может создаваться один на каждый физический адаптер. Кроме этого внешний Hyper V виртуальный коммутатор имеет две дополнительные настройки:
- Разрешить управляющей операционной системе предоставлять общий доступ к этому сетевому адаптеру (Allow management OS to share this network adapter) - хост с ролью Hyper V перестанет использовать этот сетевой адаптер. Его смогут использовать только виртуалки. Рекомендации любого вендора иметь отдельный адаптер для хоста виртуализации и отдельный для виртуальных машин.
- Виртуализация ввода-вывода с единым корнем (Enable Single Root I/O Virtualization SR-IOV) - по сути эта технология позволяет миновать лишний расход ресурсов и направлять трафик с адаптера в виртуальную машину. Работа SR-IOV возможна с Windows Server 2012 и на виртуальных машинах с Windows Server 2012 и 8, при наличии физической поддержки со стороны сетевого адаптера, BIOS и процессора. Такая опция может быть включена только при создании свитча, но не после.
Если вы выбрали внешний коммутатор, у вас единственный адаптер и включена опция "Allow management OS to share this network adapter", то вы можете обратить внимание что на хосте Hyper V у вас два адаптера в "Сетевые подключения". Один физический, работающий на канальном уровне, а другой, новый, через который работает хост Hyper V.
Виртуальную машину можно подсоединено ко множеству свитчей. Это делается либо при создании виртуальных машин в этом окне:
Либо у существующей виртуальной машины. Начиная с Windows Server 2016 адаптеры можно добавлять на работающую машину. Для того что бы это сделать нужно зайти в свойства машины:
Затем добавить сетевой адаптер:
Затем выбрать новый адаптер и подключить к настроенному коммутатору Hyper V:
После этого у хостов появится подключение.
Создание виртуальных коммутаторов Hyper V в Powershell
Для создания свитчей в Powershell у нас есть команда New-VMSwitch. Так как в этой команде доступен ключ ComputerName мы можем выполнять эту операцию удаленно. Командой ниже я создам приватный свитч:
New-VMSwitch -Name 'Private Hyper V Switch' -SwitchType Private -ComputerName 'AD1'
В SwitchType мы можем указать коммутаторы описанные выше:
- External
- Internal
- Private
Так как внешний свитч не создается без физического адаптера мы должны получить его имя:
Get-NetAdapter
А затем создать свитч:
New-VMSwitch -ComputerName 'AD1' -Name 'Ext Test' -EnableIov $true -Notes 'For testing' -AllowManagementOS $true -NetAdapterName 'Ethernet0'
Где:
- Notes - описание коммутатора. Не обязательно заполнять.
- AllowManagementOS - опция описанная выше. Позволяет пользоваться коммутатором хосту Hyper V.
- EnableIov - включает SR-IOV
Есть дополнительные ключи, но они не часть этой темы:
- EnableEmbeddedTeaming - нужен для создания Switch Embedded Teaming
- EnablePacketDirect - нужна физическая поддержка. Позволяет ускорять работу адаптеров.
- MinimumBandwidthMode - минимальная пропускная способность коммутатора.
Теперь добавим адаптер к виртуальной машине. Список всех виртуальных машин можно получить так:
Get-VM
Для добавления нам нужно указать имя свитча и машины:
Add-VMNetworkAdapter -SwitchName 'Ext Test' -VMName 'CentOS'
...
Подписывайтесь на наш Telegram канал
Теги: #hyper-v