Delen via


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 VIRTUELE machine. Verschillende VM-grootten ondersteunen een verschillend aantal NIC's, dus de grootte van uw VIRTUELE machine dienovereenkomstig.

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

Vervang in de volgende voorbeelden voorbeeldparameternamen door uw eigen waarden. Voorbeelden van parameternamen zijn myResourceGroup, myVnet en myVM.

Een VM 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 betrekking hebben op front-endverkeer, het andere voor back-endverkeer. Als u verbinding wilt maken met beide subnetten, gebruikt u vervolgens meerdere NIC's op uw VIRTUELE machine.

  1. Definieer twee subnetten voor 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

Meestal maakt u ook een netwerkbeveiligingsgroep om netwerkverkeer naar de VIRTUELE machine en een load balancer te filteren 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 VIRTUELE machine 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 VIRTUELE machine met de naam myVM gedefinieerd en wordt een VM-grootte gebruikt die meer dan twee NIC's ondersteunt (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 configureren voor meerdere NIC's uit te voeren.

Een NIC toevoegen aan een bestaande VM

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

  1. De toewijzing van de virtuele machine ongedaan maken met Stop-AzVM. In het volgende voorbeeld wordt de toewijzing van de VIRTUELE machine met de naam myVM in myResourceGroup opgeheven:

    Stop-AzVM -Name "myVM" -ResourceGroupName "myResourceGroup"
    
  2. Haal de bestaande configuratie van de VIRTUELE machine 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 gemaakt met New-AzNetworkInterface met de naam myNic3 die is gekoppeld aan mySubnetBackEnd. De virtuele NIC wordt vervolgens gekoppeld aan de virtuele machine 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 virtuele machine al als primair is ingesteld, kunt u deze stap overslaan. In het volgende voorbeeld wordt ervan uitgegaan dat er nu twee virtuele NIC's aanwezig zijn op een virtuele machine en u de eerste NIC ([0]) als primaire NIC 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 configureren voor meerdere NIC's uit te voeren.

Een NIC verwijderen van een bestaande VM

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

  1. De toewijzing van de virtuele machine ongedaan maken met Stop-AzVM. In het volgende voorbeeld wordt de toewijzing van de VIRTUELE machine met de naam myVM in myResourceGroup opgeheven:

    Stop-AzVM -Name "myVM" -ResourceGroupName "myResourceGroup"
    
  2. Haal de bestaande configuratie van de VIRTUELE machine 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. Informatie over de NIC verwijderen met Get-AzNetworkInterface. In het volgende voorbeeld wordt informatie over myNic3 opgehaald:

    # 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 $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 maken gebruik van declaratieve JSON-bestanden om uw omgeving te definiëren. Zie het 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 voor meer informatie het maken van meerdere exemplaren met behulp van kopiëren.

U kunt ook copyIndex() een getal toevoegen aan een resourcenaam. Vervolgens kunt u 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 configureren voor meerdere NIC's 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 wel communiceren met resources buiten hun subnet, hoewel de stappen voor het inschakelen van communicatie verschillen voor verschillende besturingssystemen.

  1. Voer vanaf een Windows-opdrachtprompt de route print opdracht uit, die uitvoer retourneert 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 wordt 192.168.2.4 toegewezen aan interface 7. Er wordt geen standaardgatewayadres geretourneerd voor de secundaire netwerkinterface.

  3. Voer de volgende opdracht uit om al het verkeer dat bestemd is voor adressen buiten het subnet van de secundaire netwerkinterface te routeren naar de gateway voor het subnet:

    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 wilt routeren van de secundaire netwerkinterface naar het netwerk 192.168.3.0, 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. Als u wilt bevestigen dat de communicatie met een resource in het netwerk 192.168.3.0 is geslaagd, voert u bijvoorbeeld de volgende opdracht in om 192.168.3.4 te pingen met behulp van 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 standaardroute 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.