Crear y administrar una máquina virtual con Windows que tiene varias NICCreate and manage a Windows virtual machine that has multiple NICs

En Azure, las máquinas virtuales (VM) pueden tener varias tarjetas de interfaz de red virtual (NIC) conectadas a ellas.Virtual machines (VMs) in Azure can have multiple virtual network interface cards (NICs) attached to them. Un escenario común es tener distintas subredes para la conectividad front-end y back-end.A common scenario is to have different subnets for front-end and back-end connectivity. Puede asociar varias NIC de una máquina virtual a varias subredes, pero esas subredes deben residir en la misma red virtual (vNet).You can associate multiple NICs on a VM to multiple subnets, but those subnets must all reside in the same virtual network (vNet). En este artículo se describe cómo crear una máquina virtual con varias NIC conectadas.This article details how to create a VM that has multiple NICs attached to it. También obtendrá información sobre cómo agregar o quitar NIC de una máquina virtual existente.You also learn how to add or remove NICs from an existing VM. Diferentes tamaños de máquina virtual admiten un número distinto de NIC, así que ajuste el tamaño de su máquina virtual teniendo esto en cuenta.Different VM sizes support a varying number of NICs, so size your VM accordingly.

Requisitos previosPrerequisites

En los ejemplos siguientes, reemplace los nombres de parámetros de ejemplo por los suyos propios.In the following examples, replace example parameter names with your own values. Los nombres de parámetro de ejemplo incluyen myResourceGroup, myVnet y myVM.Example parameter names include myResourceGroup, myVnet, and myVM.

Creación de una máquina virtual con varias NICCreate a VM with multiple NICs

En primer lugar, cree un grupo de recursos.First, create a resource group. En el ejemplo siguiente se crea un grupo de recursos denominado myResourceGroup en la ubicación EastUs:The following example creates a resource group named myResourceGroup in the EastUs location:

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

Creación de redes virtuales y subredesCreate virtual network and subnets

Un escenario común es que una red virtual tenga dos o más subredes.A common scenario is for a virtual network to have two or more subnets. Una subred puede ser para el tráfico de front-end y la otra para el tráfico de back-end.One subnet may be for front-end traffic, the other for back-end traffic. Para conectarse a las dos subredes, se usan varias NIC en la máquina virtual.To connect to both subnets, you then use multiple NICs on your VM.

  1. Defina dos subredes de red virtual con New-AzVirtualNetworkSubnetConfig.Define two virtual network subnets with New-AzVirtualNetworkSubnetConfig. En el ejemplo siguiente se definen dos subredes para mySubnetFrontEnd y mySubnetBackEnd:The following example defines the subnets for mySubnetFrontEnd and mySubnetBackEnd:

    $mySubnetFrontEnd = New-AzVirtualNetworkSubnetConfig -Name "mySubnetFrontEnd" `
        -AddressPrefix "192.168.1.0/24"
    $mySubnetBackEnd = New-AzVirtualNetworkSubnetConfig -Name "mySubnetBackEnd" `
        -AddressPrefix "192.168.2.0/24"
    
  2. Cree la red virtual y las subredes con New-AzVirtualNetwork.Create your virtual network and subnets with New-AzVirtualNetwork. En el ejemplo siguiente se crea una red virtual denominada myVnet:The following example creates a virtual network named myVnet:

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

Creación de varias NICCreate multiple NICs

Cree dos NIC con New-AzNetworkInterface.Create two NICs with New-AzNetworkInterface. Conecte una NIC a la subred de front-end y la otra a la subred de back-end.Attach one NIC to the front-end subnet and one NIC to the back-end subnet. En el ejemplo siguiente se crean las NIC denominadas myNic1 y myNic2:The following example creates NICs named myNic1 and myNic2:

$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

Normalmente también crea un grupo de seguridad de red para filtrar el tráfico de red a la máquina virtual y un equilibrador de carga para distribuir el tráfico entre varias máquinas virtuales.Typically you also create a network security group to filter network traffic to the VM and a load balancer to distribute traffic across multiple VMs.

Creación de la máquina virtualCreate the virtual machine

Comience ahora a compilar la configuración de la máquina virtual.Now start to build your VM configuration. El tamaño de cada máquina virtual tiene un límite en cuanto al número total de NIC que se pueden agregar a una máquina virtual.Each VM size has a limit for the total number of NICs that you can add to a VM. Para más información, vea Tamaños de las máquinas virtuales con Windows.For more information, see Windows VM sizes.

  1. Establezca las credenciales de la máquina virtual en la variable $cred como se indica a continuación:Set your VM credentials to the $cred variable as follows:

    $cred = Get-Credential
    
  2. Defina la VM con New-AzVMConfig.Define your VM with New-AzVMConfig. En el ejemplo siguiente se define una máquina virtual denominada myVM y se usa un tamaño de máquina virtual que admite hasta dos NIC (Standard_DS3_v2):The following example defines a VM named myVM and uses a VM size that supports more than two NICs (Standard_DS3_v2):

    $vmConfig = New-AzVMConfig -VMName "myVM" -VMSize "Standard_DS3_v2"
    
  3. Cree el resto de la configuración de VM con Set-AzVMOperatingSystem y Set-AzVMSourceImage.Create the rest of your VM configuration with Set-AzVMOperatingSystem and Set-AzVMSourceImage. En el ejemplo siguiente se crea una máquina virtual con Windows Server 2016:The following example creates a Windows Server 2016 VM:

    $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. Conecte las dos NIC que creó anteriormente con Add-AzVMNetworkInterface:Attach the two NICs that you previously created with Add-AzVMNetworkInterface:

    $vmConfig = Add-AzVMNetworkInterface -VM $vmConfig -Id $myNic1.Id -Primary
    $vmConfig = Add-AzVMNetworkInterface -VM $vmConfig -Id $myNic2.Id
    
  5. Cree la VM con New-AzVM:Create your VM with New-AzVM:

    New-AzVM -VM $vmConfig -ResourceGroupName "myResourceGroup" -Location "EastUs"
    
  6. Agregue rutas de tarjetas NIC secundarias al sistema operativo mediante los pasos que se indican en Configuración del sistema operativo invitado para varias NIC.Add routes for secondary NICs to the OS by completing the steps in Configure the operating system for multiple NICs.

Adición de una NIC a una máquina virtual existenteAdd a NIC to an existing VM

Para agregar una NIC virtual a una máquina virtual existente, se desasigna la máquina virtual, se agrega la NIC virtual y, después, se inicia la máquina virtual.To add a virtual NIC to an existing VM, you deallocate the VM, add the virtual NIC, then start the VM. Diferentes tamaños de máquina virtual admiten un número distinto de NIC, así que ajuste el tamaño de su máquina virtual teniendo esto en cuenta.Different VM sizes support a varying number of NICs, so size your VM accordingly. Si es necesario, puede cambiar el tamaño de una máquina virtual.If needed, you can resize a VM.

  1. Desasigne la VM con Stop-AzVM.Deallocate the VM with Stop-AzVM. En el ejemplo siguiente se desasigna la máquina virtual denominada myVM en myResourceGroup:The following example deallocates the VM named myVM in myResourceGroup:

    Stop-AzVM -Name "myVM" -ResourceGroupName "myResourceGroup"
    
  2. Obtenga la configuración existente de la VM con Get-AzVm.Get the existing configuration of the VM with Get-AzVm. En el ejemplo siguiente se obtiene información de la máquina virtual denominada myVM en myResourceGroup:The following example gets information for the VM named myVM in myResourceGroup:

    $vm = Get-AzVm -Name "myVM" -ResourceGroupName "myResourceGroup"
    
  3. En el ejemplo siguiente se crea una NIC virtual con New-AzNetworkInterface denominada myNic3 que está conectada a mySubnetBackEnd.The following example creates a virtual NIC with New-AzNetworkInterface named myNic3 that is attached to mySubnetBackEnd. Después, la NIC virtual se conecta a la VM denominada myVM en myResourceGroup con Add-AzVMNetworkInterface:The virtual NIC is then attached to the VM named myVM in myResourceGroup with 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"
    

    NIC virtuales principalesPrimary virtual NICs

    En una máquina virtual de varias NIC una de las NIC debe ser la principal.One of the NICs on a multi-NIC VM needs to be primary. Si una de las NIC virtuales existentes en la máquina virtual ya se ha establecido como principal, puede omitir este paso.If one of the existing virtual NICs on the VM is already set as primary, you can skip this step. En el siguiente ejemplo se da por supuesto que hay dos NIC virtuales en una máquina virtual y que se va a agregar la primera NIC ([0]) como la principal:The following example assumes that two virtual NICs are now present on a VM and you wish to add the first NIC ([0]) as the primary:

    # 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. Inicie la VM con Start-AzVm:Start the VM with Start-AzVm:

    Start-AzVM -ResourceGroupName "myResourceGroup" -Name "myVM"
    
  5. Agregue rutas de tarjetas NIC secundarias al sistema operativo mediante los pasos que se indican en Configuración del sistema operativo invitado para varias NIC.Add routes for secondary NICs to the OS by completing the steps in Configure the operating system for multiple NICs.

Eliminación de una NIC de una máquina virtual existenteRemove a NIC from an existing VM

Para quitar una NIC virtual de una máquina virtual existente, se desasigna la máquina virtual, se quita la NIC virtual y, después, se inicia la máquina virtual.To remove a virtual NIC from an existing VM, you deallocate the VM, remove the virtual NIC, then start the VM.

  1. Desasigne la VM con Stop-AzVM.Deallocate the VM with Stop-AzVM. En el ejemplo siguiente se desasigna la máquina virtual denominada myVM en myResourceGroup:The following example deallocates the VM named myVM in myResourceGroup:

    Stop-AzVM -Name "myVM" -ResourceGroupName "myResourceGroup"
    
  2. Obtenga la configuración existente de la VM con Get-AzVm.Get the existing configuration of the VM with Get-AzVm. En el ejemplo siguiente se obtiene información de la máquina virtual denominada myVM en myResourceGroup:The following example gets information for the VM named myVM in myResourceGroup:

    $vm = Get-AzVm -Name "myVM" -ResourceGroupName "myResourceGroup"
    
  3. Obtenga información sobre la eliminación de NIC con Get-AzNetworkInterface.Get information about the NIC remove with Get-AzNetworkInterface. En el ejemplo siguiente se obtiene información sobre myNic3:The following example gets information about 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. Quite la NIC con Remove-AzVMNetworkInterface y, después, actualice la VM con Update-AzVm.Remove the NIC with Remove-AzVMNetworkInterface and then update the VM with Update-AzVm. En el ejemplo siguiente se quita myNic3 obtenida por $nicId en el paso anterior:The following example removes myNic3 as obtained by $nicId in the preceding step:

    Remove-AzVMNetworkInterface -VM $vm -NetworkInterfaceIDs $nicId | `
        Update-AzVm -ResourceGroupName "myResourceGroup"
    
  5. Inicie la VM con Start-AzVm:Start the VM with Start-AzVm:

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

Crear varias NIC con plantillasCreate multiple NICs with templates

Las plantillas de Azure Resource Manager ofrecen una manera de crear varias instancias de un recurso durante la implementación; por ejemplo, se pueden crear varias NIC.Azure Resource Manager templates provide a way to create multiple instances of a resource during deployment, such as creating multiple NICs. Las plantillas de Resource Manager usan archivos JSON declarativos para definir el entorno.Resource Manager templates use declarative JSON files to define your environment. Para más información, vea Información general de Azure Resource Manager.For more information, see overview of Azure Resource Manager. Puede usar copy para especificar el número de instancias que se crearán:You can use copy to specify the number of instances to create:

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

Para más información, vea Creación de varias instancias mediante copy.For more information, see creating multiple instances by using copy.

También puede usar copyIndex() para anexar un número a un nombre de recurso.You can also use copyIndex() to append a number to a resource name. Después, puede crear myNic1, MyNic2 y así sucesivamente.You can then create myNic1, MyNic2 and so on. En el código siguiente se muestra un ejemplo de cómo anexar el valor de índice:The following code shows an example of appending the index value:

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

Puede leer un ejemplo completo de cómo crear varias NIC mediante plantillas de Resource Manager.You can read a complete example of creating multiple NICs by using Resource Manager templates.

Agregue rutas de tarjetas NIC secundarias al sistema operativo mediante los pasos que se indican en Configuración del sistema operativo invitado para varias NIC.Add routes for secondary NICs to the OS by completing the steps in Configure the operating system for multiple NICs.

Configuración del sistema operativo invitado para varias NICConfigure guest OS for multiple NICs

Azure asigna una puerta de enlace predeterminada a la primera interfaz de red (principal) conectada a la máquina virtual.Azure assigns a default gateway to the first (primary) network interface attached to the virtual machine. Azure no asigna una puerta de enlace predeterminada a las interfaces de red adicionales (secundarias) conectadas a una máquina virtual.Azure does not assign a default gateway to additional (secondary) network interfaces attached to a virtual machine. Por lo tanto, de manera predeterminada, no es posible comunicarse con recursos externos a la subred en la que se encuentra una interfaz de red secundaria.Therefore, you are unable to communicate with resources outside the subnet that a secondary network interface is in, by default. Sin embargo, las interfaces de red secundarias pueden comunicarse con recursos externos a su subred, aunque los pasos necesarios para habilitar la comunicación son diferentes para los distintos sistemas operativos.Secondary network interfaces can, however, communicate with resources outside their subnet, though the steps to enable communication are different for different operating systems.

  1. Desde un símbolo del sistema de Windows, ejecute el comando route print. Este comando devuelve una salida similar a la siguiente para una máquina virtual con dos interfaces de red conectadas:From a Windows command prompt, run the route print command, which returns output similar to the following output for a virtual machine with two attached network interfaces:

    ===========================================================================
    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
    ===========================================================================
    

    En este ejemplo, Microsoft Hyper-V Network Adapter #4 (interfaz 7) es la interfaz de red secundaria que no tiene una puerta de enlace predeterminada asignada.In this example, Microsoft Hyper-V Network Adapter #4 (interface 7) is the secondary network interface that doesn't have a default gateway assigned to it.

  2. Desde un símbolo del sistema, ejecute el comando ipconfig para ver la dirección IP asignada a la interfaz de red secundaria.From a command prompt, run the ipconfig command to see which IP address is assigned to the secondary network interface. En este ejemplo, la dirección IP 192.168.2.4 está asignada a la interfaz 7.In this example, 192.168.2.4 is assigned to interface 7. No se devuelve ninguna dirección de puerta de enlace predeterminada para la interfaz de red secundaria.No default gateway address is returned for the secondary network interface.

  3. Para que todo el tráfico destinado a direcciones que están fuera de la subred de la interfaz de red secundaria se enrute a la puerta de enlace de la subred, ejecute el siguiente comando:To route all traffic destined for addresses outside the subnet of the secondary network interface to the gateway for the subnet, run the following command:

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

    La dirección de la puerta de enlace para la subred es la primera dirección IP (terminada en .1) del intervalo de direcciones definido para la subred.The gateway address for the subnet is the first IP address (ending in .1) in the address range defined for the subnet. Si no quiere enrutar todo el tráfico fuera de la subred, puede agregar rutas individuales a destinos específicos en su lugar.If you don't want to route all traffic outside the subnet, you could add individual routes to specific destinations, instead. Por ejemplo, si solo quiere enrutar el tráfico de la interfaz de red secundaria a la red 192.168.3.0, escriba el comando:For example, if you only wanted to route traffic from the secondary network interface to the 192.168.3.0 network, you enter the command:

    route add -p 192.168.3.0 MASK 255.255.255.0 192.168.2.1 METRIC 5015 IF 7
    
  4. Para confirmar la comunicación correcta con un recurso en la red 192.168.3.0, por ejemplo, escriba el siguiente comando para hacer ping a 192.168.3.4 mediante la interfaz 7 (192.168.2.4):To confirm successful communication with a resource on the 192.168.3.0 network, for example, enter the following command to ping 192.168.3.4 using interface 7 (192.168.2.4):

    ping 192.168.3.4 -S 192.168.2.4
    

    Puede que necesite abrir ICMP a través del firewall de Windows del dispositivo en el que está haciendo ping con el siguiente comando:You may need to open ICMP through the Windows firewall of the device you're pinging with the following command:

    netsh advfirewall firewall add rule name=Allow-ping protocol=icmpv4 dir=in action=allow
    
  5. Para confirmar que la ruta agregada está en la tabla de rutas, escriba el comando route print, que devuelve una salida similar al texto siguiente:To confirm the added route is in the route table, enter the route print command, which returns output similar to the following text:

    ===========================================================================
    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
    

    La ruta que se muestra con 192.168.1.1 debajo de Puerta de enlace es la ruta que aparece de manera predeterminada para la interfaz de red principal.The route listed with 192.168.1.1 under Gateway, is the route that is there by default for the primary network interface. La ruta con 192.168.2.1 debajo de Puerta de enlace es la ruta agregada.The route with 192.168.2.1 under Gateway, is the route you added.

Pasos siguientesNext steps

Revise Tamaños de máquina virtual con Windows cuando esté intentando crear una máquina virtual que tiene varias NIC.Review Windows VM sizes when you're trying to create a VM that has multiple NICs. Preste atención al número máximo de NIC que admite cada tamaño de máquina virtual.Pay attention to the maximum number of NICs that each VM size supports.