Een virtuele Windows-machine met meerdere NIC's maken en beheren

Van toepassing op: ✔️ Flexibele schaalsets voor Windows-VM's ✔️

Aan virtuele machines (VM's) in Azure kunnen meerdere NIC's (Virtual Network Interface Cards) zijn gekoppeld. Een veelvoorkomend scenario is om verschillende subnetten te hebben voor front-end- en back-endconnectiviteit. U kunt meerdere NIC's op een virtuele machine koppelen aan meerdere subnetten, maar deze subnetten moeten zich allemaal in hetzelfde virtuele netwerk (vNet) bevinden. In dit artikel wordt beschreven hoe u een virtuele machine maakt waaraan meerdere NIC's zijn gekoppeld. U leert ook hoe u NIC's toevoegt aan of verwijdert uit een bestaande VM. Verschillende VM-grootten ondersteunen een wisselend aantal NIC's, dus de grootte van uw VM dienovereenkomstig aanpassen.

Notitie

Als meerdere subnetten niet vereist zijn voor een scenario, is het mogelijk eenvoudiger om meerdere IP-configuraties op één NIC te gebruiken. Instructies voor deze installatie vindt u hier.

Vereisten

In de volgende voorbeelden vervangt u voorbeeldparameternamen door uw eigen waarden. Voorbeelden van parameternamen zijn myResourceGroup, myVnet en myVM.

Een virtuele machine met meerdere NIC's maken

Maak eerst een resourcegroep. In het volgende voorbeeld wordt een resourcegroep met de naam myResourceGroup gemaakt op de locatie EastUs :

New-AzResourceGroup -Name "myResourceGroup" -Location "EastUS"

Virtueel netwerk en subnetten maken

Een veelvoorkomend scenario is dat een virtueel netwerk twee of meer subnetten heeft. Het ene subnet kan voor front-endverkeer zijn, het andere voor back-endverkeer. Als u verbinding wilt maken met beide subnetten, gebruikt u vervolgens meerdere NIC's op uw VM.

  1. Definieer twee subnetten van virtuele netwerken met New-AzVirtualNetworkSubnetConfig. In het volgende voorbeeld worden de subnetten voor mySubnetFrontEnd en mySubnetBackEnd gedefinieerd:

    $mySubnetFrontEnd = New-AzVirtualNetworkSubnetConfig -Name "mySubnetFrontEnd" `
        -AddressPrefix "192.168.1.0/24"
    $mySubnetBackEnd = New-AzVirtualNetworkSubnetConfig -Name "mySubnetBackEnd" `
        -AddressPrefix "192.168.2.0/24"
    
  2. Maak uw virtuele netwerk en subnetten met New-AzVirtualNetwork. In het volgende voorbeeld wordt een virtueel netwerk met de naam myVnet gemaakt:

    $myVnet = New-AzVirtualNetwork -ResourceGroupName "myResourceGroup" `
        -Location "EastUs" `
        -Name "myVnet" `
        -AddressPrefix "192.168.0.0/16" `
        -Subnet $mySubnetFrontEnd,$mySubnetBackEnd
    

Meerdere NIC's maken

Maak twee NIC's met New-AzNetworkInterface. Koppel één NIC aan het front-endsubnet en één NIC aan het back-endsubnet. In het volgende voorbeeld worden NIC's met de naam myNic1 en myNic2 gemaakt:

$frontEnd = $myVnet.Subnets|?{$_.Name -eq 'mySubnetFrontEnd'}
$myNic1 = New-AzNetworkInterface -ResourceGroupName "myResourceGroup" `
    -Name "myNic1" `
    -Location "EastUs" `
    -SubnetId $frontEnd.Id

$backEnd = $myVnet.Subnets|?{$_.Name -eq 'mySubnetBackEnd'}
$myNic2 = New-AzNetworkInterface -ResourceGroupName "myResourceGroup" `
    -Name "myNic2" `
    -Location "EastUs" `
    -SubnetId $backEnd.Id

Normaal gesproken maakt u ook een netwerkbeveiligingsgroep om netwerkverkeer naar de VM te filteren en een load balancer om verkeer over meerdere VM's te verdelen.

De virtuele machine maken

Begin nu met het bouwen van uw VM-configuratie. Elke VM-grootte heeft een limiet voor het totale aantal NIC's dat u aan een VM kunt toevoegen. Zie Windows VM-grootten voor meer informatie.

  1. Stel uw VM-referenties als volgt in op de $cred variabele:

    $cred = Get-Credential
    
  2. Definieer uw VM met New-AzVMConfig. In het volgende voorbeeld wordt een VM met de naam myVM gedefinieerd en wordt een VM-grootte gebruikt die ondersteuning biedt voor meer dan twee NIC's (Standard_DS3_v2):

    $vmConfig = New-AzVMConfig -VMName "myVM" -VMSize "Standard_DS3_v2"
    
  3. Maak de rest van uw VM-configuratie met Set-AzVMOperatingSystem en Set-AzVMSourceImage. In het volgende voorbeeld wordt een Windows Server 2016 VM gemaakt:

    $vmConfig = Set-AzVMOperatingSystem -VM $vmConfig `
        -Windows `
        -ComputerName "myVM" `
        -Credential $cred `
        -ProvisionVMAgent `
        -EnableAutoUpdate
    $vmConfig = Set-AzVMSourceImage -VM $vmConfig `
        -PublisherName "MicrosoftWindowsServer" `
        -Offer "WindowsServer" `
        -Skus "2016-Datacenter" `
        -Version "latest"
    
  4. Koppel de twee NIC's die u eerder hebt gemaakt met Add-AzVMNetworkInterface:

    $vmConfig = Add-AzVMNetworkInterface -VM $vmConfig -Id $myNic1.Id -Primary
    $vmConfig = Add-AzVMNetworkInterface -VM $vmConfig -Id $myNic2.Id
    
  5. Maak uw VIRTUELE machine met New-AzVM:

    New-AzVM -VM $vmConfig -ResourceGroupName "myResourceGroup" -Location "EastUs"
    
  6. Voeg routes voor secundaire NIC's toe aan het besturingssysteem door de stappen in Het besturingssysteem voor meerdere NIC's configureren uit te voeren.

Een NIC toevoegen aan een bestaande VM

Als u een virtuele NIC wilt toevoegen aan een bestaande VM, maakt u de toewijzing van de VM ongedaan, voegt u de virtuele NIC toe en start u de virtuele machine. Verschillende VM-grootten ondersteunen een wisselend aantal NIC's, dus de grootte van uw VM dienovereenkomstig aanpassen. Indien nodig kunt u het formaat van een VM wijzigen.

  1. Maak de toewijzing van de VM ongedaan met Stop-AzVM. In het volgende voorbeeld wordt de toewijzing van de VM met de naam myVM ongedaan gemaakt in myResourceGroup:

    Stop-AzVM -Name "myVM" -ResourceGroupName "myResourceGroup"
    
  2. Haal de bestaande configuratie van de VM op met Get-AzVm. In het volgende voorbeeld wordt informatie opgehaald voor de VM met de naam myVM in myResourceGroup:

    $vm = Get-AzVm -Name "myVM" -ResourceGroupName "myResourceGroup"
    
  3. In het volgende voorbeeld wordt een virtuele NIC met New-AzNetworkInterface met de naam myNic3 gemaakt die is gekoppeld aan mySubnetBackEnd. De virtuele NIC wordt vervolgens gekoppeld aan de VM met de naam myVM in myResourceGroup met Add-AzVMNetworkInterface:

    # Get info for the back end subnet
    $myVnet = Get-AzVirtualNetwork -Name "myVnet" -ResourceGroupName "myResourceGroup"
    $backEnd = $myVnet.Subnets|?{$_.Name -eq 'mySubnetBackEnd'}
    
    # Create a virtual NIC
    $myNic3 = New-AzNetworkInterface -ResourceGroupName "myResourceGroup" `
        -Name "myNic3" `
        -Location "EastUs" `
        -SubnetId $backEnd.Id
    
    # Get the ID of the new virtual NIC and add to VM
    $nicId = (Get-AzNetworkInterface -ResourceGroupName "myResourceGroup" -Name "MyNic3").Id
    Add-AzVMNetworkInterface -VM $vm -Id $nicId | Update-AzVm -ResourceGroupName "myResourceGroup"
    

    Primaire virtuele NIC's

    Een van de NIC's op een VM met meerdere NIC's moet primair zijn. Als een van de bestaande virtuele NIC's op de VM al is ingesteld als primair, kunt u deze stap overslaan. In het volgende voorbeeld wordt ervan uitgegaan dat er nu twee virtuele NIC's aanwezig zijn op een VM en dat u de eerste NIC ([0]) als primaire wilt toevoegen:

    # List existing NICs on the VM and find which one is primary
    $vm.NetworkProfile.NetworkInterfaces
    
    # Set NIC 0 to be primary
    $vm.NetworkProfile.NetworkInterfaces[0].Primary = $true
    $vm.NetworkProfile.NetworkInterfaces[1].Primary = $false
    
    # Update the VM state in Azure
    Update-AzVM -VM $vm -ResourceGroupName "myResourceGroup"
    
  4. Start de VM met Start-AzVm:

    Start-AzVM -ResourceGroupName "myResourceGroup" -Name "myVM"
    
  5. Voeg routes voor secundaire NIC's toe aan het besturingssysteem door de stappen in Het besturingssysteem voor meerdere NIC's configureren uit te voeren.

Een NIC verwijderen uit een bestaande VM

Als u een virtuele NIC uit een bestaande VM wilt verwijderen, maakt u de toewijzing van de VM ongedaan, verwijdert u de virtuele NIC en start u de VM.

  1. Maak de toewijzing van de VM ongedaan met Stop-AzVM. In het volgende voorbeeld wordt de toewijzing van de VM met de naam myVM ongedaan gemaakt in myResourceGroup:

    Stop-AzVM -Name "myVM" -ResourceGroupName "myResourceGroup"
    
  2. Haal de bestaande configuratie van de VM op met Get-AzVm. In het volgende voorbeeld wordt informatie opgehaald voor de VM met de naam myVM in myResourceGroup:

    $vm = Get-AzVm -Name "myVM" -ResourceGroupName "myResourceGroup"
    
  3. Krijg informatie over het verwijderen van de NIC met Get-AzNetworkInterface. In het volgende voorbeeld wordt informatie opgehaald over myNic3:

    # List existing NICs on the VM if you need to determine NIC name
    $vm.NetworkProfile.NetworkInterfaces
    
    $nicId = (Get-AzNetworkInterface -ResourceGroupName "myResourceGroup" -Name "myNic3").Id   
    
  4. Verwijder de NIC met Remove-AzVMNetworkInterface en werk de VM vervolgens bij met Update-AzVm. In het volgende voorbeeld wordt myNic3 verwijderd zoals verkregen door $nicId in de vorige stap:

    Remove-AzVMNetworkInterface -VM $vm -NetworkInterfaceIDs $nicId | `
        Update-AzVm -ResourceGroupName "myResourceGroup"
    
  5. Start de VM met Start-AzVm:

    Start-AzVM -Name "myVM" -ResourceGroupName "myResourceGroup"
    

Meerdere NIC's maken met sjablonen

Azure Resource Manager-sjablonen bieden een manier om meerdere exemplaren van een resource te maken tijdens de implementatie, zoals het maken van meerdere NIC's. Resource Manager sjablonen gebruiken declaratieve JSON-bestanden om uw omgeving te definiëren. Zie Overzicht van Azure Resource Manager voor meer informatie. U kunt kopiëren gebruiken om het aantal exemplaren op te geven dat moet worden gemaakt:

"copy": {
    "name": "multiplenics",
    "count": "[parameters('count')]"
}

Zie Meerdere exemplaren maken met behulp van kopiëren voor meer informatie.

U kunt ook gebruiken copyIndex() om een getal toe te voegen aan een resourcenaam. U kunt vervolgens myNic1, MyNic2 enzovoort maken. De volgende code toont een voorbeeld van het toevoegen van de indexwaarde:

"name": "[concat('myNic', copyIndex())]", 

U kunt een volledig voorbeeld lezen van het maken van meerdere NIC's met behulp van Resource Manager-sjablonen.

Voeg routes voor secundaire NIC's toe aan het besturingssysteem door de stappen in Het besturingssysteem voor meerdere NIC's configureren uit te voeren.

Gastbesturingssystemen configureren voor meerdere NIC's

Azure wijst een standaardgateway toe aan de eerste (primaire) netwerkinterface die is gekoppeld aan de virtuele machine. Azure wijst geen standaardgateway toe aan extra (secundaire) netwerkinterfaces die zijn gekoppeld aan een virtuele machine. Daarom kunt u standaard niet communiceren met resources buiten het subnet waarin een secundaire netwerkinterface zich bevindt. Secundaire netwerkinterfaces kunnen echter communiceren met resources buiten hun subnet, hoewel de stappen voor het inschakelen van communicatie voor verschillende besturingssystemen verschillen.

  1. Voer vanaf een Windows-opdrachtprompt de route print opdracht uit, waarmee uitvoer wordt geretourneerd die vergelijkbaar is met de volgende uitvoer voor een virtuele machine met twee gekoppelde netwerkinterfaces:

    ===========================================================================
    Interface List
    3...00 0d 3a 10 92 ce ......Microsoft Hyper-V Network Adapter #3
    7...00 0d 3a 10 9b 2a ......Microsoft Hyper-V Network Adapter #4
    ===========================================================================
    

    In dit voorbeeld is Microsoft Hyper-V netwerkadapter #4 (interface 7) de secundaire netwerkinterface waaraan geen standaardgateway is toegewezen.

  2. Voer vanaf een opdrachtprompt de ipconfig opdracht uit om te zien welk IP-adres is toegewezen aan de secundaire netwerkinterface. In dit voorbeeld is 192.168.2.4 toegewezen aan interface 7. Er wordt geen standaardgatewayadres geretourneerd voor de secundaire netwerkinterface.

  3. Als u al het verkeer dat is bestemd voor adressen buiten het subnet van de secundaire netwerkinterface wilt routeren naar de gateway voor het subnet, voert u de volgende opdracht uit:

    route add -p 0.0.0.0 MASK 0.0.0.0 192.168.2.1 METRIC 5015 IF 7
    

    Het gatewayadres voor het subnet is het eerste IP-adres (eindigend op .1) in het adresbereik dat is gedefinieerd voor het subnet. Als u niet al het verkeer buiten het subnet wilt routeren, kunt u in plaats daarvan afzonderlijke routes toevoegen aan specifieke bestemmingen. Als u bijvoorbeeld alleen verkeer van de secundaire netwerkinterface naar het netwerk 192.168.3.0 wilt routeren, voert u de opdracht in:

    route add -p 192.168.3.0 MASK 255.255.255.0 192.168.2.1 METRIC 5015 IF 7
    
  4. Voer bijvoorbeeld de volgende opdracht in om de communicatie met een resource op het 192.168.3.0-netwerk te bevestigen, de volgende opdracht in om 192.168.3.4 te pingen met interface 7 (192.168.2.4):

    ping 192.168.3.4 -S 192.168.2.4
    

    Mogelijk moet u ICMP openen via de Windows-firewall van het apparaat dat u pingt met de volgende opdracht:

    netsh advfirewall firewall add rule name=Allow-ping protocol=icmpv4 dir=in action=allow
    
  5. Als u wilt controleren of de toegevoegde route zich in de routetabel bevindt, voert u de route print opdracht in, die uitvoer retourneert die vergelijkbaar is met de volgende tekst:

    ===========================================================================
    Active Routes:
    Network Destination        Netmask          Gateway       Interface  Metric
              0.0.0.0          0.0.0.0      192.168.1.1      192.168.1.4     15
              0.0.0.0          0.0.0.0      192.168.2.1      192.168.2.4   5015
    

    De route die wordt vermeld met 192.168.1.1 onder Gateway, is de route die standaard aanwezig is voor de primaire netwerkinterface. De route met 192.168.2.1 onder Gateway is de route die u hebt toegevoegd.

Volgende stappen

Controleer de grootten van Windows-VM's wanneer u een VIRTUELE machine met meerdere NIC's probeert te maken. Let op het maximum aantal NIC's dat elke VM-grootte ondersteunt.