VM을 만들어서 테넌트 가상 네트워크 또는 VLAN에 연결

적용 대상: Windows Server 2022, Windows Server 2019, Windows Server 2016, Azure Stack HCI, 버전 21H2 및 20H2

이 항목에서는 테넌트 VM을 만들고 Hyper-V 네트워크 가상화로 만든 가상 네트워크 또는 VLAN(가상 로컬 영역 네트워크)에 연결합니다. Windows PowerShell 네트워크 컨트롤러 cmdlet을 사용하여 가상 네트워크 또는 NetworkControllerRESTWrappers에 연결하여 VLAN에 연결할 수 있습니다.

이 항목에 설명된 프로세스를 사용하여 가상 어플라이언스 배포합니다. 몇 가지 추가 단계를 처리 하거나 가상 네트워크에 있는 다른 Vm에서 진행 되는 데이터 패킷 검사 기기를 구성할 수 있습니다.

이 항목의 섹션에는 많은 매개 변수에 대한 예제 값을 포함하는 예제 Windows PowerShell 명령이 포함되어 있습니다. 이러한 명령에 대 한 예제 값은 다음이 명령을 실행 하기 전에 배포에 적합 한 값으로 바꾸는 것을 확인 합니다.

필수 조건

  1. VM의 수명 동안 정적 MAC 주소로 만든 VM 네트워크 어댑터입니다.

    VM 수명 동안 MAC 주소가 변경되면 네트워크 컨트롤러는 네트워크 어댑터에 필요한 정책을 구성할 수 없습니다. 네트워크에 대한 정책을 구성하지 않으면 네트워크 어댑터가 네트워크 트래픽을 처리하지 못하고 네트워크와의 모든 통신이 실패합니다.

  2. VM을 시작할 때 네트워크 액세스가 필요한 경우 VM 네트워크 어댑터 포트에서 인터페이스 ID를 설정한 후에야 VM을 시작합니다. 인터페이스 ID를 설정하기 전에 VM을 시작하고 네트워크 인터페이스가 없는 경우 VM은 네트워크 컨트롤러의 네트워크에서 통신할 수 없으며 모든 정책이 적용됩니다.

  3. 사용자 지정 Acl이 네트워크 인터페이스 필요로 하는 경우 만든 ACL 이제 항목의 지침을 사용 하 여 사용 하 여 액세스 제어 목록 (Acl) 데이터 센터 네트워크 트래픽 흐름을 관리 하려면

이 예제에서는 명령을 사용 하기 전에 가상 네트워크를 이미 만든 있는지 확인 합니다. 자세한 내용은 참조 만들기, 삭제 또는 업데이트 테 넌 트 가상 네트워크합니다.

VM을 만들고 Windows PowerShell 네트워크 컨트롤러 cmdlet을 사용 하 여 가상 네트워크에 연결

  1. 정적 MAC 주소가 있는 VM 네트워크 어댑터를 사용하여 VM을 만듭니다.

    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 VM 네트워크 어댑터 포트에서 인터페이스 ID를 설정합니다.

    참고 항목

    Hyper-v 호스트에 VM이 설치 되어 있는 다음이 명령을 실행 해야 있습니다.

    #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. VM을 시작합니다.

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

VM을 성공적으로 만들고, VM을 테넌트 Virtual Network에 연결하고, 테넌트 워크로드를 처리할 수 있도록 VM을 시작했습니다.

VM을 만들고 NetworkControllerRESTWrappers를 사용 하 여 VLAN에 연결

  1. VM을 만들고 정적 MAC 주소를 VM에 할당합니다.

    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. VM 네트워크 어댑터에서 VLAN ID를 설정합니다.

    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. Hyper-V 포트에서 InstanceId를 설정합니다.

    #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. VM을 시작합니다.

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

VM을 성공적으로 만들고, VM을 VLAN에 연결하고, 테넌트 워크로드를 처리할 수 있도록 VM을 시작했습니다.