Partilhar via


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. Nesses exemplos, declaramos variáveis de ambiente à medida que são usadas e adicionamos um sufixo aleatório a nomes de recursos exclusivos.

export RANDOM_SUFFIX=$(openssl rand -hex 3)
export MY_RESOURCE_GROUP_NAME="myResourceGroup$RANDOM_SUFFIX"
export REGION="WestUS2"
az group create --name $MY_RESOURCE_GROUP_NAME --___location $REGION
{
  "id": "/subscriptions/xxxxx/resourceGroups/myResourceGroupxxx",
  "___location": "WestUS2",
  "managedBy": null,
  "name": "myResourceGroupxxx",
  "properties": {
      "provisioningState": "Succeeded"
  },
  "tags": null,
  "type": "Microsoft.Resources/resourceGroups"
}

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:

export VNET_NAME="myVnet"
export FRONTEND_SUBNET="mySubnetFrontEnd"
az network vnet create \
    --resource-group $MY_RESOURCE_GROUP_NAME \
    --name $VNET_NAME \
    --address-prefix 10.0.0.0/16 \
    --subnet-name $FRONTEND_SUBNET \
    --subnet-prefix 10.0.1.0/24

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

export BACKEND_SUBNET="mySubnetBackEnd"
az network vnet subnet create \
    --resource-group $MY_RESOURCE_GROUP_NAME \
    --vnet-name $VNET_NAME \
    --name $BACKEND_SUBNET \
    --address-prefix 10.0.2.0/24

Crie um grupo de segurança de rede com az network nsg create. O exemplo a seguir cria um grupo de segurança de rede chamado myNetworkSecurityGroup:

export NSG_NAME="myNetworkSecurityGroup"
az network nsg create \
    --resource-group $MY_RESOURCE_GROUP_NAME \
    --name $NSG_NAME

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:

export NIC1="myNic1"
export NIC2="myNic2"
az network nic create \
    --resource-group $MY_RESOURCE_GROUP_NAME \
    --name $NIC1 \
    --vnet-name $VNET_NAME \
    --subnet $FRONTEND_SUBNET \
    --network-security-group $NSG_NAME
az network nic create \
    --resource-group $MY_RESOURCE_GROUP_NAME \
    --name $NIC2 \
    --vnet-name $VNET_NAME \
    --subnet $BACKEND_SUBNET \
    --network-security-group $NSG_NAME

Criar uma VM e anexar as NICs

Ao criar a VM, especifique as NICs criadas com --nics. 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 a seguir cria uma VM chamada myVM:

export VM_NAME="myVM"
az vm create \
    --resource-group $MY_RESOURCE_GROUP_NAME \
    --name $VM_NAME \
    --image Ubuntu2204 \
    --size Standard_DS3_v2 \
    --admin-username azureuser \
    --generate-ssh-keys \
    --nics $NIC1 $NIC2

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:

export NIC3="myNic3"
az network nic create \
    --resource-group $MY_RESOURCE_GROUP_NAME \
    --name $NIC3 \
    --vnet-name $VNET_NAME \
    --subnet $BACKEND_SUBNET \
    --network-security-group $NSG_NAME

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 $MY_RESOURCE_GROUP_NAME --name $VM_NAME

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

az vm nic add \
    --resource-group $MY_RESOURCE_GROUP_NAME \
    --vm-name $VM_NAME \
    --nics $NIC3

Inicie a VM com az vm start:

az vm start --resource-group $MY_RESOURCE_GROUP_NAME --name $VM_NAME

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 $MY_RESOURCE_GROUP_NAME --name $VM_NAME

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

az vm nic remove \
    --resource-group $MY_RESOURCE_GROUP_NAME \
    --vm-name $VM_NAME \
    --nics $NIC3

Inicie a VM com az vm start:

az vm start --resource-group $MY_RESOURCE_GROUP_NAME --name $VM_NAME

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 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 o comando az network nsg rule create da seguinte maneira:

az network nsg rule create \
    --resource-group $MY_RESOURCE_GROUP_NAME \
    --nsg-name $NSG_NAME \
    --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:

export PUBLIC_IP_NAME="myPublicIP"
az network public-ip create --resource-group $MY_RESOURCE_GROUP_NAME --name $PUBLIC_IP_NAME

az network nic ip-config update \
    --resource-group $MY_RESOURCE_GROUP_NAME \
    --nic-name $NIC1 \
    --name ipconfig1 \
    --public-ip $PUBLIC_IP_NAME

Para exibir o endereço IP público da VM, use az vm show da seguinte maneira:

az vm show --resource-group $MY_RESOURCE_GROUP_NAME --name $VM_NAME -d --query publicIps -o tsv
x.x.x.x

Agora, estabeleça uma conexão SSH com 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:

export IP_ADDRESS=$(az vm show --resource-group $MY_RESOURCE_GROUP_NAME --name $VM_NAME -d --query publicIps -o tsv)
ssh -o StrictHostKeyChecking=no azureuser@$IP_ADDRESS

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. O exemplo de saída seguinte é para a tabela de rotas que tem as duas interfaces de rede adicionadas à VM no presente 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 as suas VMs, utilize o acesso de máquina virtual temporizado. 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, consulte Gerenciar o acesso à máquina virtual usando just in time.