Cómo crear una máquina virtual Linux en Azure con red varias tarjetas de interfaz de red

Se aplica a: ✔️ máquinas virtuales Linux ✔️ conjuntos de escalado flexibles

En este artículo se describe cómo crear una máquina virtual con varias NIC con la CLI de Azure.

Creación de recursos de apoyo

Instale la última versión de la CLI de Azure e inicie sesión en una cuenta de Azure con az login.

En los ejemplos siguientes, reemplace los nombres de parámetros de ejemplo por los suyos propios. Los nombres de parámetro de ejemplo incluyen myResourceGroup, mystorageaccount y myVM.

En primer lugar, cree un grupo de recursos con az group create. En el ejemplo siguiente, se crea un grupo de recursos denominado myResourceGroup en la ubicación eastus:

az group create --name myResourceGroup --location eastus

Cree la red virtual con az network vnet create. En el ejemplo siguiente se crea una red virtual denominada myVnet y una subred 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. En el ejemplo siguiente se crea una subred denominada 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. En el ejemplo siguiente se crea un grupo de seguridad de red denominado myNetworkSecurityGroup:

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

Creación y configuración de varias NIC

Creación de dos NIC con 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:

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 NIC

Cuando cree la máquina virtual, especifique las NIC creadas con --nics. También debe tener cuidado al seleccionar el tamaño de la máquina virtual. Existen límites para el número total de NIC que se pueden agregar a una máquina virtual. Más información sobre los tamaños de máquina virtual Linux.

Cree la máquina virtual con az vm create. En el ejemplo siguiente se crea una máquina virtual denominada myVM:

az vm create \
    --resource-group myResourceGroup \
    --name myVM \
    --image Ubuntu2204 \
    --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.

Adición de una NIC a una máquina virtual

Los pasos anteriores crean una máquina virtual con varias NIC. También puede agregar varias NIC a una máquina virtual existente con la CLI de Azure. 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. Si es necesario, puede cambiar el tamaño de una máquina virtual.

Cree otra NIC con 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:

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. En el ejemplo siguiente se desasigna la máquina virtual denominada myVM:

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

Agregue la NIC con az vm nic add. En el ejemplo siguiente se agrega myNic3 a myVM:

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

Inicie la máquina virtual con 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.

Eliminación de una NIC de una máquina virtual

Para quitar una NIC de una máquina virtual existente, en primer lugar desasigne la máquina virtual con az vm deallocate. En el ejemplo siguiente se desasigna la máquina virtual denominada myVM:

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

Quite la NIC con az vm nic remove. En el ejemplo siguiente se quita myNic3 de myVM:

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

Inicie la máquina virtual con az vm start:

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

Creación de varias NIC con plantillas de Resource Manager

Las plantillas de Azure Resource Manager emplean archivos JSON declarativos para definir el entorno. Puede leer la introducción a 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. Utilizará el comando copy para especificar el número de instancias que se crearán:

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

Más información sobre la creación de varias instancias mediante copia.

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:

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

Puede leer un ejemplo completo de cómo crear varias NIC con plantillas de Resource Manager.

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.

Configuración del sistema operativo invitado para varias NIC

En los pasos anteriores se creó una red virtual y una subred, se conectaron las NIC y luego se creó una máquina virtual. No se creó ninguna regla de grupos de seguridad de red ni ninguna dirección IP pública que permitieran el tráfico SSH. Para configurar al sistema operativo invitado para varias NIC, tiene que permitir conexiones remotas y ejecutar comandos localmente en la máquina virtual.

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:

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:

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:

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. El nombre de usuario predeterminado indicado en el paso anterior era azureuser. Indique su propio nombre de usuario y la dirección IP pública:

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. En este artículo, eth1 es la interfaz secundaria. Las instrucciones para agregar rutas persistentes al sistema operativo varían según la distribución. Vea la documentación correspondiente a su distribución para obtener instrucciones.

Al agregar la ruta al sistema operativo, la dirección de puerta de enlace es la primera dirección de la subred en la que se encuentra la interfaz de red. Por ejemplo, si a la subred se le ha asignado el rango 10.0.2.0/24, la puerta de enlace que especifique para la ruta es 10.0.2.1, o si a la subred se le ha asignado el rango 10.0.2.128/25, la puerta de enlace que especifique para la ruta es 10.0.2.129. 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. La puerta de enlace para cada subred se administra mediante la red virtual.

Cuando haya agregado la ruta para una interfaz secundaria, compruebe que la ruta se encuentra en la tabla de rutas con 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:

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. Para probar la conectividad, puede escribir el siguiente comando, por ejemplo, donde eth1 es el nombre de una interfaz de red secundaria:

ping bing.com -c 4 -I eth1

Pasos siguientes

Revise los tamaños de máquina virtual Linux al intentar crear una máquina virtual con varias NIC. Preste atención al número máximo de NIC que admite cada tamaño de máquina virtual.

Para proteger más las máquinas virtuales, use acceso Just-In-Time a la máquina virtual. 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. Para más información, consulte Administrar el acceso a máquina virtual mediante Just-In-Time.