Como criar uma máquina virtual Linux no Azure com várias placas de interface de rede

Aplica-se a: ✔️ Linux VMs ✔️ Conjuntos de escala flexível

Este artigo detalha como criar uma VM com várias NICs com a CLI do Azure.

Criar recursos de suporte

Instale a CLI do Azure mais recente e faça logon em uma conta do Azure usando az login.

Nos exemplos a seguir, substitua nomes de parâmetros de exemplo por seus próprios valores. Os nomes de parâmetros de exemplo incluíam myResourceGroup, mystorageaccount e myVM.

Primeiro, crie um grupo de recursos com az group create. O exemplo seguinte cria um grupo de recursos com o nome myResourceGroup na localização eastus:

az group create --name myResourceGroup --location eastus

Crie a rede virtual com az network vnet create. O exemplo a seguir cria uma rede virtual chamada myVnet e uma sub-rede chamada 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

Crie uma sub-rede para o tráfego back-end com az network vnet subnet create. O exemplo a seguir cria uma sub-rede chamada mySubnetBackEnd:

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

Crie um grupo de segurança de rede com az network nsg create. O exemplo seguinte cria um grupo de segurança de rede com o nome myNetworkSecurityGroup:

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

Criar e configurar várias NICs

Crie duas NICs com a AZ Network NIC Create. O exemplo a seguir cria duas NICs, chamadas myNic1 e myNic2, conectadas ao grupo de segurança de rede, com uma NIC conectada a cada sub-rede:

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

Criar uma VM e anexar as NICs

Ao criar a VM, especifique as NICs criadas com --nicso . Você também precisa ter cuidado ao selecionar o tamanho da VM. Há limites para o número total de NICs que você pode adicionar a uma VM. Leia mais sobre tamanhos de VM Linux.

Crie uma VM com az vm create. O exemplo seguinte cria uma VM com o nome myVM:

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

Adicione tabelas de roteamento ao SO convidado concluindo as etapas em Configurar o SO convidado para várias NICs.

Adicionar uma NIC a uma VM

As etapas anteriores criaram uma VM com várias NICs. Você também pode adicionar NICs a uma VM existente com a CLI do Azure. Diferentes tamanhos de VM suportam um número variável de NICs, portanto, dimensione sua VM de acordo. Se necessário, você pode redimensionar uma VM.

Crie outra NIC com az network nic create. O exemplo a seguir cria uma NIC chamada myNic3 conectada à sub-rede back-end e ao grupo de segurança de rede criados nas etapas anteriores:

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

Para adicionar uma NIC a uma VM existente, primeiro desaloque a VM com az vm deallocate. O exemplo a seguir deslocaliza a VM chamada myVM:

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

Adicione a NIC com az vm nic add. O exemplo a seguir adiciona myNic3 a myVM:

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

Inicie a VM com az vm start:

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

Adicione tabelas de roteamento ao SO convidado concluindo as etapas em Configurar o SO convidado para várias NICs.

Remover uma NIC de uma VM

Para remover uma NIC de uma VM existente, primeiro desaloque a VM com az vm deallocate. O exemplo a seguir deslocaliza a VM chamada myVM:

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

Remova a NIC com az vm nic remove. O exemplo a seguir remove myNic3 de myVM:

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

Inicie a VM com az vm start:

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

Criar várias NICs usando modelos do Resource Manager

Os modelos do Azure Resource Manager usam arquivos JSON declarativos para definir seu ambiente. Você pode ler uma visão geral do Azure Resource Manager. Os modelos do Resource Manager fornecem uma maneira de criar várias instâncias de um recurso durante a implantação, como a criação de várias NICs. Use copy para especificar o número de instâncias a serem criadas:

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

Leia mais sobre como criar várias instâncias usando cópia.

Você também pode usar um copyIndex() para depois acrescentar um número a um nome de recurso, o que permite criar myNic1, myNic2, etc. A seguir mostra um exemplo de acréscimo do valor do índice:

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

Você pode ler um exemplo completo de criação de várias NICs usando modelos do Resource Manager.

Adicione tabelas de roteamento ao SO convidado concluindo as etapas em Configurar o SO convidado para várias NICs.

Configurar SO convidado para várias NICs

As etapas anteriores criaram uma rede virtual e uma sub-rede, NICs conectadas e, em seguida, criaram uma VM. Um endereço IP público e regras de grupo de segurança de rede que permitem tráfego SSH não foram criados. Para configurar o SO convidado para várias NICs, você precisa permitir conexões remotas e executar comandos localmente na VM.

Para permitir o tráfego SSH, crie uma regra de grupo de segurança de rede com a regra az network nsg crie da seguinte maneira:

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

Crie um endereço IP público com az network public-ip crie e atribua-o à primeira NIC com 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 exibir o endereço IP público da VM, use az vm show da seguinte maneira::

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

Agora SSH para o endereço IP público da sua VM. O nome de usuário padrão fornecido em uma etapa anterior era azureuser. Forneça seu próprio nome de usuário e endereço IP público:

ssh azureuser@137.117.58.232

Para enviar de ou para uma interface de rede secundária, tem de adicionar manualmente rotas persistentes ao sistema operativo para cada interface de rede secundária. Neste artigo, eth1 é a interface secundária. As instruções para adicionar rotas persistentes ao sistema operacional variam de acordo com a distro. Consulte a documentação da sua distro para obter instruções.

Ao adicionar a rota ao sistema operacional, o endereço do gateway é o primeiro endereço da sub-rede na qual a interface de rede está. Por exemplo, se a sub-rede tiver recebido o intervalo 10.0.2.0/24, o gateway especificado para a rota será 10.0.2.1 ou se a sub-rede tiver recebido o intervalo 10.0.2.128/25, o gateway especificado para a rota será 10.0.2.129. Você pode definir uma rede específica para o destino da rota ou especificar um destino de 0.0.0.0, se quiser que todo o tráfego da interface passe pelo gateway especificado. O gateway para cada sub-rede é gerenciado pela rede virtual.

Depois de adicionar a rota para uma interface secundária, verifique se a rota está na tabela de rotas com route -n. A saída de exemplo a seguir é para a tabela de rotas que tem as duas interfaces de rede adicionadas à VM neste artigo:

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 se a rota adicionada persiste nas reinicializações verificando sua tabela de rotas novamente após uma reinicialização. Para testar a conectividade, você pode inserir o seguinte comando, por exemplo, onde eth1 é o nome de uma interface de rede secundária:

ping bing.com -c 4 -I eth1

Próximos passos

Analise os tamanhos de VM do Linux ao tentar criar uma VM com várias NICs. Preste atenção ao número máximo de NICs suportadas por cada tamanho de VM.

Para proteger ainda mais suas VMs, use o acesso de VM just in time. Esse recurso abre regras de grupo de segurança de rede para tráfego SSH quando necessário e por um período de tempo definido. Para obter mais informações, veja Manage virtual machine access using just in time (Gerir o acesso da máquina virtual através do just in time).