Создание виртуальной машины и подключение к виртуальной сети или виртуальной локальной сети клиента

Область применения: Windows Server 2022, Windows Server 2019, Windows Server 2016, Azure Stack HCI, версии 21H2 и 20H2

В этом разделе вы создадите виртуальную машину клиента и подключите ее к виртуальной сети, созданной с помощью виртуализации сети Hyper-V или виртуальной локальной сети (VLAN). Командлеты сетевого контроллера Windows PowerShell можно использовать для подключения к виртуальной сети или NetworkControllerRESTWrappers для подключения к виртуальной локальной сети.

Используйте процессы, описанные в этом разделе, для развертывания виртуальных (модуль). С помощью нескольких дополнительных действий можно настроить (модуль) для обработки или проверки пакетов данных, которые передаются в другие виртуальные машины на виртуальная сеть.

В разделах этого раздела приведены примеры команд Windows PowerShell, которые содержат примеры значений для многих параметров. Перед выполнением этих команд замените примеры значений в этих командах значениями, подходящими для развертывания.

Необходимые компоненты

  1. Сетевые адаптеры виртуальной машины, созданные со статическими MAC-адресами в течение всего времени существования виртуальной машины.

    Если MAC-адрес изменяется во время существования виртуальной машины, сетевой контроллер не может настроить необходимую политику для сетевого адаптера. Не настраивая политику для сети, сетевой адаптер не обрабатывает сетевой трафик, а все обмен данными с сетью завершается сбоем.

  2. Если для виртуальной машины требуется сетевой доступ при запуске, не запускайте виртуальную машину до тех пор, пока не задав идентификатор интерфейса на порту сетевого адаптера виртуальной машины. Если вы запускаете виртуальную машину перед настройкой идентификатора интерфейса, а сетевой интерфейс не существует, виртуальная машина не может взаимодействовать в сети в сетевом контроллере и все примененные политики.

  3. Если для этого сетевого интерфейса требуются настраиваемые списки управления доступом, создайте ACL теперь с помощью инструкций в разделе "Использование списков контроль доступа списков (ACL) для управления потоком сетевого трафика центра обработки данных"

Перед использованием этой команды убедитесь, что вы уже создали виртуальная сеть. Дополнительные сведения см. в разделе "Создание, удаление" или "Обновление" виртуальная сеть клиента.

Создание виртуальной машины и подключение к виртуальная сеть с помощью командлетов сетевого контроллера Windows PowerShell

  1. Создайте виртуальную машину с сетевым адаптером виртуальной машины с статическим MAC-адресом.

    New-VM -Generation 2 -Name "MyVM" -Path "C:\VMs\MyVM" -MemoryStartupBytes 4GB -VHDPath "C:\VMs\MyVM\Virtual Hard Disks\WindowsServer2016.vhdx" -SwitchName "SDNvSwitch"
    
    Set-VM -Name "MyVM" -ProcessorCount 4
    
    Set-VMNetworkAdapter -VMName "MyVM" -StaticMacAddress "00-11-22-33-44-55"
    
  2. Получите виртуальную сеть, содержащую подсеть, к которой требуется подключить сетевой адаптер.

    $vnet = Get-NetworkControllerVirtualNetwork -ConnectionUri $uri -ResourceId "Contoso_WebTier"
    
  3. Создайте объект сетевого интерфейса в сетевом контроллере.

    Совет

    На этом шаге используется пользовательский ACL.

    $vmnicproperties = New-Object Microsoft.Windows.NetworkController.NetworkInterfaceProperties
    $vmnicproperties.PrivateMacAddress = "001122334455"
    $vmnicproperties.PrivateMacAllocationMethod = "Static"
    $vmnicproperties.IsPrimary = $true
    
    $vmnicproperties.DnsSettings = New-Object Microsoft.Windows.NetworkController.NetworkInterfaceDnsSettings
    $vmnicproperties.DnsSettings.DnsServers = @("24.30.1.11", "24.30.1.12")
    
    $ipconfiguration = New-Object Microsoft.Windows.NetworkController.NetworkInterfaceIpConfiguration
    $ipconfiguration.resourceid = "MyVM_IP1"
    $ipconfiguration.properties = New-Object Microsoft.Windows.NetworkController.NetworkInterfaceIpConfigurationProperties
    $ipconfiguration.properties.PrivateIPAddress = "24.30.1.101"
    $ipconfiguration.properties.PrivateIPAllocationMethod = "Static"
    
    $ipconfiguration.properties.Subnet = New-Object Microsoft.Windows.NetworkController.Subnet
    $ipconfiguration.properties.subnet.ResourceRef = $vnet.Properties.Subnets[0].ResourceRef
    
    $vmnicproperties.IpConfigurations = @($ipconfiguration)
    New-NetworkControllerNetworkInterface –ResourceID "MyVM_Ethernet1" –Properties $vmnicproperties –ConnectionUri $uri
    
  4. Получите InstanceId для сетевого интерфейса из сетевого контроллера.

     $nic = Get-NetworkControllerNetworkInterface -ConnectionUri $uri -ResourceId "MyVM_Ethernet1"
    
  5. Задайте идентификатор интерфейса для порта сетевого адаптера виртуальной машины Hyper-V.

    Примечание.

    Эти команды необходимо выполнить на узле Hyper-V, где установлена виртуальная машина.

    #Do not change the hardcoded IDs in this section, because they are fixed values and must not change.
    
    $FeatureId = "9940cd46-8b06-43bb-b9d5-93d50381fd56"
    
    $vmNics = Get-VMNetworkAdapter -VMName "MyVM"
    
    $CurrentFeature = Get-VMSwitchExtensionPortFeature -FeatureId $FeatureId -VMNetworkAdapter $vmNics
    
    if ($CurrentFeature -eq $null) {
        $Feature = Get-VMSystemSwitchExtensionPortFeature -FeatureId $FeatureId
    
        $Feature.SettingData.ProfileId = "{$($nic.InstanceId)}"
        $Feature.SettingData.NetCfgInstanceId = "{56785678-a0e5-4a26-bc9b-c0cba27311a3}"
        $Feature.SettingData.CdnLabelString = "TestCdn"
        $Feature.SettingData.CdnLabelId = 1111
        $Feature.SettingData.ProfileName = "Testprofile"
        $Feature.SettingData.VendorId = "{1FA41B39-B444-4E43-B35A-E1F7985FD548}"
        $Feature.SettingData.VendorName = "NetworkController"
        $Feature.SettingData.ProfileData = 1
    
        Add-VMSwitchExtensionPortFeature -VMSwitchExtensionFeature  $Feature -VMNetworkAdapter $vmNics
    } else {
        $CurrentFeature.SettingData.ProfileId = "{$($nic.InstanceId)}"
        $CurrentFeature.SettingData.ProfileData = 1
    
        Set-VMSwitchExtensionPortFeature -VMSwitchExtensionFeature $CurrentFeature  -VMNetworkAdapter $vmNics
    }
    
  6. Запустите виртуальную машину.

     Get-VM -Name "MyVM" | Start-VM
    

Вы успешно создали виртуальную машину, подключили виртуальную машину к клиенту виртуальная сеть и запустили виртуальную машину, чтобы она могло обрабатывать рабочие нагрузки клиента.

Создание виртуальной машины и подключение к виртуальной локальной сети с помощью NetworkControllerRESTWrappers

  1. Создайте виртуальную машину и назначьте статический MAC-адрес виртуальной машине.

    New-VM -Generation 2 -Name "MyVM" -Path "C:\VMs\MyVM" -MemoryStartupBytes 4GB -VHDPath "C:\VMs\MyVM\Virtual Hard Disks\WindowsServer2016.vhdx" -SwitchName "SDNvSwitch"
    
    Set-VM -Name "MyVM" -ProcessorCount 4
    
    Set-VMNetworkAdapter -VMName "MyVM" -StaticMacAddress "00-11-22-33-44-55"
    
  2. Задайте идентификатор виртуальной локальной сети на сетевом адаптере виртуальной машины.

    Set-VMNetworkAdapterIsolation –VMName "MyVM" -AllowUntaggedTraffic $true -IsolationMode VLAN -DefaultIsolationId 123
    
  3. Получите подсеть логической сети и создайте сетевой интерфейс.

     $logicalnet = Get-NetworkControllerLogicalNetwork -ConnectionUri $uri -ResourceId "00000000-2222-1111-9999-000000000002"
    
     $vmnicproperties = New-Object Microsoft.Windows.NetworkController.NetworkInterfaceProperties
     $vmnicproperties.PrivateMacAddress = "00-1D-C8-B7-01-02"
     $vmnicproperties.PrivateMacAllocationMethod = "Static"
     $vmnicproperties.IsPrimary = $true
    
     $vmnicproperties.DnsSettings = New-Object Microsoft.Windows.NetworkController.NetworkInterfaceDnsSettings
     $vmnicproperties.DnsSettings.DnsServers = $logicalnet.Properties.Subnets[0].DNSServers
    
     $ipconfiguration = New-Object Microsoft.Windows.NetworkController.NetworkInterfaceIpConfiguration
     $ipconfiguration.resourceid = "MyVM_Ip1"
     $ipconfiguration.properties = New-Object Microsoft.Windows.NetworkController.NetworkInterfaceIpConfigurationProperties
     $ipconfiguration.properties.PrivateIPAddress = "10.127.132.177"
     $ipconfiguration.properties.PrivateIPAllocationMethod = "Static"
    
     $ipconfiguration.properties.Subnet = New-Object Microsoft.Windows.NetworkController.Subnet
     $ipconfiguration.properties.subnet.ResourceRef = $logicalnet.Properties.Subnets[0].ResourceRef
    
     $vmnicproperties.IpConfigurations = @($ipconfiguration)
     $vnic = New-NetworkControllerNetworkInterface –ResourceID "MyVM_Ethernet1" –Properties $vmnicproperties –ConnectionUri $uri
    
     $vnic.InstanceId
    
  4. Задайте идентификатор instanceId на порте Hyper-V.

    #The hardcoded Ids in this section are fixed values and must not change.
    $FeatureId = "9940cd46-8b06-43bb-b9d5-93d50381fd56"
    
    $vmNics = Get-VMNetworkAdapter -VMName "MyVM"
    
    $CurrentFeature = Get-VMSwitchExtensionPortFeature -FeatureId $FeatureId -VMNetworkAdapter $vmNics
    
    if ($CurrentFeature -eq $null) {
        $Feature = Get-VMSystemSwitchExtensionFeature -FeatureId $FeatureId
    
        $Feature.SettingData.ProfileId = "{$InstanceId}"
        $Feature.SettingData.NetCfgInstanceId = "{56785678-a0e5-4a26-bc9b-c0cba27311a3}"
        $Feature.SettingData.CdnLabelString = "TestCdn"
        $Feature.SettingData.CdnLabelId = 1111
        $Feature.SettingData.ProfileName = "Testprofile"
        $Feature.SettingData.VendorId = "{1FA41B39-B444-4E43-B35A-E1F7985FD548}"
        $Feature.SettingData.VendorName = "NetworkController"
        $Feature.SettingData.ProfileData = 1
    
        Add-VMSwitchExtensionFeature -VMSwitchExtensionFeature  $Feature -VMNetworkAdapter $vmNics
    } else {
        $CurrentFeature.SettingData.ProfileId = "{$InstanceId}"
        $CurrentFeature.SettingData.ProfileData = 1
    
        Set-VMSwitchExtensionPortFeature -VMSwitchExtensionFeature $CurrentFeature  -VMNetworkAdapter $vmNics
    }
    
  5. Запустите виртуальную машину.

    Get-VM -Name "MyVM" | Start-VM
    

Вы успешно создали виртуальную машину, подключили виртуальную машину к виртуальной локальной сети и запустили виртуальную машину, чтобы она могло обрабатывать рабочие нагрузки клиента.