Cómo crear una máquina virtual Linux en Azure con red varias tarjetas de interfaz de redHow to create a Linux virtual machine in Azure with multiple network interface cards

En este artículo se describe cómo crear una máquina virtual con varias NIC con la CLI de Azure.This article details how to create a VM with multiple NICs with the Azure CLI.

Creación de recursos de apoyoCreate supporting resources

Instale la última versión de la CLI de Azure e inicie sesión en una cuenta de Azure con az login.Install the latest Azure CLI and log in to an Azure account using az login.

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, mystorageaccount y myVM.Example parameter names included myResourceGroup, mystorageaccount, and myVM.

En primer lugar, cree un grupo de recursos con az group create.First, create a resource group with az group create. 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:

az group create --name myResourceGroup --location eastus

Cree la red virtual con az network vnet create.Create the virtual network with az network vnet create. En el ejemplo siguiente se crea una red virtual denominada myVnet y una subred mySubnetFrontEnd:The following example creates a virtual network named myVnet and subnet named mySubnetFrontEnd:

az network vnet create \
    --resource-group myResourceGroup \
    --name myVnet \
    --address-prefix 10.0.0.0/16 \
    --subnet-name mySubnetFrontEnd \
    --subnet-prefix 10.0.1.0/24

Cree una subred para el tráfico de back-end con az network vnet subnet create.Create a subnet for the back-end traffic with az network vnet subnet create. En el ejemplo siguiente se crea una subred denominada mySubnetBackEnd:The following example creates a subnet named mySubnetBackEnd:

az network vnet subnet create \
    --resource-group myResourceGroup \
    --vnet-name myVnet \
    --name mySubnetBackEnd \
    --address-prefix 10.0.2.0/24

Cree un grupo de seguridad de red con az network nsg create.Create a network security group with az network nsg create. En el ejemplo siguiente se crea un grupo de seguridad de red denominado myNetworkSecurityGroup:The following example creates a network security group named myNetworkSecurityGroup:

az network nsg create \
    --resource-group myResourceGroup \
    --name myNetworkSecurityGroup

Creación y configuración de varias NICCreate and configure multiple NICs

Creación de dos NIC con az network nic create.Create two NICs with az network nic create. En el ejemplo siguiente se crean dos NIC, denominadas myNic1 y myNic2, conectadas al grupo de seguridad de red, con una NIC conectada con cada subred:The following example creates two NICs, named myNic1 and myNic2, connected the network security group, with one NIC connecting to each subnet:

az network nic create \
    --resource-group myResourceGroup \
    --name myNic1 \
    --vnet-name myVnet \
    --subnet mySubnetFrontEnd \
    --network-security-group myNetworkSecurityGroup
az network nic create \
    --resource-group myResourceGroup \
    --name myNic2 \
    --vnet-name myVnet \
    --subnet mySubnetBackEnd \
    --network-security-group myNetworkSecurityGroup

Creación de una máquina virtual y conexión de las NICCreate a VM and attach the NICs

Cuando cree la máquina virtual, especifique las NIC creadas con --nics.When you create the VM, specify the NICs you created with --nics. También debe tener cuidado al seleccionar el tamaño de la máquina virtual.You also need to take care when you select the VM size. Existen límites para el número total de NIC que se pueden agregar a una máquina virtual.There are limits for the total number of NICs that you can add to a VM. Más información sobre los tamaños de máquina virtual Linux.Read more about Linux VM sizes.

Cree la máquina virtual con az vm create.Create a VM with az vm create. En el ejemplo siguiente se crea una máquina virtual denominada myVM:The following example creates a VM named myVM:

az vm create \
    --resource-group myResourceGroup \
    --name myVM \
    --image UbuntuLTS \
    --size Standard_DS3_v2 \
    --admin-username azureuser \
    --generate-ssh-keys \
    --nics myNic1 myNic2

Agregue tablas de enrutamiento al sistema operativo invitado completando los pasos descritos en Cómo crear una máquina virtual Linux en Azure con red varias tarjetas de interfaz de red.Add routing tables to the guest OS by completing the steps in Configure the guest OS for multiple NICs.

Adición de una NIC a una máquina virtualAdd a NIC to a VM

Los pasos anteriores crean una máquina virtual con varias NIC.The previous steps created a VM with multiple NICs. También puede agregar varias NIC a una máquina virtual existente con la CLI de Azure.You can also add NICs to an existing VM with the Azure CLI. 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.

Cree otra NIC con az network nic create.Create another NIC with az network nic create. En el ejemplo siguiente se crea una NIC denominada myNic3 conectada a la subred de back-end y al grupo de seguridad de red creado en los pasos anteriores:The following example creates a NIC named myNic3 connected to the back-end subnet and network security group created in the previous steps:

az network nic create \
    --resource-group myResourceGroup \
    --name myNic3 \
    --vnet-name myVnet \
    --subnet mySubnetBackEnd \
    --network-security-group myNetworkSecurityGroup

Para agregar una NIC a una máquina virtual existente, en primer lugar desasigne la máquina virtual con az vm deallocate.To add a NIC to an existing VM, first deallocate the VM with az vm deallocate. En el ejemplo siguiente se desasigna la máquina virtual denominada myVM:The following example deallocates the VM named myVM:

az vm deallocate --resource-group myResourceGroup --name myVM

Agregue la NIC con az vm nic add.Add the NIC with az vm nic add. En el ejemplo siguiente se agrega myNic3 a myVM:The following example adds myNic3 to myVM:

az vm nic add \
    --resource-group myResourceGroup \
    --vm-name myVM \
    --nics myNic3

Inicie la máquina virtual con az vm start:Start the VM with az vm start:

az vm start --resource-group myResourceGroup --name myVM

Agregue tablas de enrutamiento al sistema operativo invitado completando los pasos descritos en Cómo crear una máquina virtual Linux en Azure con red varias tarjetas de interfaz de red.Add routing tables to the guest OS by completing the steps in Configure the guest OS for multiple NICs.

Eliminación de una NIC de una máquina virtualRemove a NIC from a VM

Para quitar una NIC de una máquina virtual existente, en primer lugar desasigne la máquina virtual con az vm deallocate.To remove a NIC from an existing VM, first deallocate the VM with az vm deallocate. En el ejemplo siguiente se desasigna la máquina virtual denominada myVM:The following example deallocates the VM named myVM:

az vm deallocate --resource-group myResourceGroup --name myVM

Quite la NIC con az vm nic remove.Remove the NIC with az vm nic remove. En el ejemplo siguiente se quita myNic3 de myVM:The following example removes myNic3 from myVM:

az vm nic remove \
    --resource-group myResourceGroup \
    --vm-name myVM \
    --nics myNic3

Inicie la máquina virtual con az vm start:Start the VM with az vm start:

az vm start --resource-group myResourceGroup --name myVM

Creación de varias NIC con plantillas de Resource ManagerCreate multiple NICs using Resource Manager templates

Las plantillas de Azure Resource Manager emplean archivos JSON declarativos para definir el entorno.Azure Resource Manager templates use declarative JSON files to define your environment. Puede leer la introducción a Azure Resource Manager.You can read an overview of Azure Resource Manager. Las plantillas de Resource Manager ofrecen una manera de crear varias instancias de un recurso durante la implementación; por ejemplo, se pueden crear varias NIC.Resource Manager templates provide a way to create multiple instances of a resource during deployment, such as creating multiple NICs. Utilizará el comando copy para especificar el número de instancias que se crearán:You use copy to specify the number of instances to create:

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

Más información sobre la creación de varias instancias mediante copia.Read more about creating multiple instances using copy.

También puede utilizar copyIndex() para anexar un número a un nombre de recurso, lo que le permite crear myNic1, myNic2, etc. A continuación se muestra un ejemplo de cómo anexar el valor de índice:You can also use a copyIndex() to then append a number to a resource name, which allows you to create myNic1, myNic2, etc. The following shows an example of appending the index value:

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

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

Agregue tablas de enrutamiento al sistema operativo invitado completando los pasos descritos en Cómo crear una máquina virtual Linux en Azure con red varias tarjetas de interfaz de red.Add routing tables to the guest OS by completing the steps in Configure the guest OS for multiple NICs.

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

En los pasos anteriores se creó una red virtual y una subred, se conectaron las NIC y luego se creó una máquina virtual.The previous steps created a virtual network and subnet, attached NICs, then created a VM. No se creó ninguna regla de grupos de seguridad de red ni ninguna dirección IP pública que permitieran el tráfico SSH.A public IP address and network security group rules that allow SSH traffic were not created. Para configurar al sistema operativo invitado para varias NIC, tiene que permitir conexiones remotas y ejecutar comandos localmente en la máquina virtual.To configure the guest OS for multiple NICs, you need to allow remote connections and run commands locally on the VM.

Para permitir el tráfico SSH, cree una regla de grupo de seguridad de red con az network nsg rule create de la manera siguiente:To allow SSH traffic, create a network security group rule with az network nsg rule create as follows:

az network nsg rule create \
    --resource-group myResourceGroup \
    --nsg-name myNetworkSecurityGroup \
    --name allow_ssh \
    --priority 101 \
    --destination-port-ranges 22

Cree una dirección IP pública con az network public-ip create y asígnela a la primera NIC con az network nic ip-config update:Create a public IP address with az network public-ip create and assign it to the first NIC with az network nic ip-config update:

az network public-ip create --resource-group myResourceGroup --name myPublicIP

az network nic ip-config update \
    --resource-group myResourceGroup \
    --nic-name myNic1 \
    --name ipconfig1 \
    --public-ip myPublicIP

Para ver la dirección IP pública de la máquina virtual, use az vm show de la manera siguiente:To view the public IP address of the VM, use az vm show as follows::

az vm show --resource-group myResourceGroup --name myVM -d --query publicIps -o tsv

Conéctese ahora por SSH a la dirección IP pública de la máquina virtual.Now SSH to the public IP address of your VM. El nombre de usuario predeterminado indicado en el paso anterior era azureuser.The default username provided in a previous step was azureuser. Indique su propio nombre de usuario y la dirección IP pública:Provide your own username and public IP address:

ssh azureuser@137.117.58.232

Para enviar hacia o desde una interfaz de red secundaria, tiene que agregar manualmente rutas persistentes al sistema operativo para cada interfaz de red secundaria.To send to or from a secondary network interface, you have to manually add persistent routes to the operating system for each secondary network interface. En este artículo, eth1 es la interfaz secundaria.In this article, eth1 is the secondary interface. Las instrucciones para agregar rutas persistentes al sistema operativo varían según la distribución.Instructions for adding persistent routes to the operating system vary by distro. Vea la documentación correspondiente a su distribución para obtener instrucciones.See documentation for your distro for instructions.

Al agregar una ruta al sistema operativo, la dirección de puerta de enlace es .1 para la subred en la que se encuentre la interfaz de red.When adding the route to the operating system, the gateway address is .1 for whichever subnet the network interface is in. Por ejemplo, si a la interfaz de red se le asigna la dirección 10.0.2.4, la puerta de enlace que se especifica para la ruta es 10.0.2.1.For example, if the network interface is assigned the address 10.0.2.4, the gateway you specify for the route is 10.0.2.1. Si quiere que todo el tráfico de la interfaz pase por la puerta de enlace especificada, puede definir una red concreta para el destino de la ruta o especificar un destino de 0.0.0.0.You can define a specific network for the route's destination, or specify a destination of 0.0.0.0, if you want all traffic for the interface to go through the specified gateway. La puerta de enlace para cada subred se administra mediante la red virtual.The gateway for each subnet is managed by the virtual network.

Cuando haya agregado la ruta para una interfaz secundaria, compruebe que la ruta se encuentra en la tabla de rutas con route -n.Once you've added the route for a secondary interface, verify that the route is in your route table with route -n. La siguiente salida de ejemplo corresponde a la tabla de rutas en la que se han agregado las dos interfaces de red para la máquina virtual en este artículo:The following example output is for the route table that has the two network interfaces added to the VM in this article:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.0.1.1        0.0.0.0         UG    0      0        0 eth0
0.0.0.0         10.0.2.1        0.0.0.0         UG    0      0        0 eth1
10.0.1.0        0.0.0.0         255.255.255.0   U     0      0        0 eth0
10.0.2.0        0.0.0.0         255.255.255.0   U     0      0        0 eth1
168.63.129.16   10.0.1.1        255.255.255.255 UGH   0      0        0 eth0
169.254.169.254 10.0.1.1        255.255.255.255 UGH   0      0        0 eth0

Confirme que la ruta agregada se conserva entre un reinicio y el siguiente comprobando de nuevo la tabla de rutas tras un reinicio.Confirm that the route you added persists across reboots by checking your route table again after a reboot. Para probar la conectividad, puede escribir el siguiente comando, por ejemplo, donde eth1 es el nombre de una interfaz de red secundaria:To test connectivity, you can enter the following command, for example, where eth1 is the name of a secondary network interface:

ping bing.com -c 4 -I eth1

Pasos siguientesNext steps

Revise los tamaños de máquina virtual Linux al intentar crear una máquina virtual con varias NIC.Review Linux VM sizes when trying to creating a VM with 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 each VM size supports.

Para proteger más las máquinas virtuales, use acceso Just-In-Time a la máquina virtual.To further secure your VMs, use just in time VM access. Esta característica abre reglas del grupo de seguridad de red al tráfico SSH cuando es necesario y durante un período de tiempo definido.This feature opens network security group rules for SSH traffic when needed, and for a defined period of time. Para más información, consulte Administrar el acceso a máquina virtual mediante Just-In-Time.For more information, see Manage virtual machine access using just in time.