Diagnosticar um problema de roteamento de rede de máquina virtual - CLI do Azure

Neste artigo, você implanta uma máquina virtual (VM) e, em seguida, verifica as comunicações para um endereço IP e URL. Vai determinar a causa de uma falha de comunicação e aprender a resolvê-la.

Se não tiver uma subscrição do Azure, crie uma conta gratuita do Azure antes de começar.

Pré-requisitos

  • Use o ambiente Bash no Azure Cloud Shell. Para obter mais informações, consulte Guia de início rápido para Bash no Azure Cloud Shell.

  • Se preferir executar comandos de referência da CLI localmente, instale a CLI do Azure. Se estiver a utilizar o Windows ou macOS, considere executar a CLI do Azure num contentor Docker. Para obter mais informações, consulte Como executar a CLI do Azure em um contêiner do Docker.

    • Se estiver a utilizar uma instalação local, inicie sessão no CLI do Azure ao utilizar o comando az login. Para concluir o processo de autenticação, siga os passos apresentados no seu terminal. Para outras opções de entrada, consulte Entrar com a CLI do Azure.

    • Quando solicitado, instale a extensão da CLI do Azure na primeira utilização. Para obter mais informações sobre as extensões, veja Utilizar extensões com o CLI do Azure.

    • Execute o comando az version para localizar a versão e as bibliotecas dependentes instaladas. Para atualizar para a versão mais recente, execute o comando az upgrade.

  • Este artigo requer a versão 2.0 ou posterior da CLI do Azure. Se estiver usando o Azure Cloud Shell, a versão mais recente já está instalada.

  • Os comandos da CLI do Azure neste artigo são formatados para serem executados em um shell Bash.

Criar uma VM

Antes de criar uma VM, tem de criar um grupo de recursos para conter a VM. 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 uma VM com az vm create. Se as chaves SSH ainda não existirem numa localização de chaves predefinida, o comando cria-as. Para utilizar um conjunto específico de chaves, utilize a opção --ssh-key-value. O exemplo seguinte cria uma VM com o nome myVm:

az vm create \
  --resource-group myResourceGroup \
  --name myVm \
  --image Ubuntu2204 \
  --generate-ssh-keys

A criação da VM demora alguns minutos. Não continue com as etapas restantes até que a VM seja criada e a CLI do Azure retorne a saída.

Testar a comunicação de rede

Para testar a comunicação de rede com o Inspetor de Rede, você deve primeiro habilitar um inspetor de rede na região em que a VM que deseja testar está e, em seguida, usar o recurso de próximo salto do Inspetor de Rede para testar a comunicação.

Ativar o observador de rede

Se você já tiver um observador de rede habilitado na região Leste dos EUA, pule para Usar próximo salto. Use o comando az network watcher configure para criar um observador de rede na região Leste dos EUA:

az network watcher configure \
  --resource-group NetworkWatcherRG \
  --locations eastus \
  --enabled

Utilizar o próximo salto

O Azure cria automaticamente rotas para destinos predefinidos. Pode criar rotas personalizadas que substituem as rotas predefinidas. Por vezes, as rotas personalizadas podem causar falhas na comunicação. Para testar o roteamento de uma VM, use az network watcher show-next-hop para determinar o próximo salto de roteamento quando o tráfego for destinado a um endereço específico.

Teste a comunicação de saída da VM para um dos endereços IP para www.bing.com:

az network watcher show-next-hop \
  --dest-ip 13.107.21.200 \
  --resource-group myResourceGroup \
  --source-ip 10.0.0.4 \
  --vm myVm \
  --nic myVmVMNic \
  --out table

Após alguns segundos, a saída informa que o nextHopType é Internet e que routeTableId é System Route. Este resultado permite-lhe saber que existe uma rota válida para o destino.

Teste a comunicação de saída da VM para 172.31.0.100:

az network watcher show-next-hop \
  --dest-ip 172.31.0.100 \
  --resource-group myResourceGroup \
  --source-ip 10.0.0.4 \
  --vm myVm \
  --nic myVmVMNic \
  --out table

A saída retornada informa que None é o nextHopType e que o routeTableId também é System Route. Este resultado permite-lhe saber que, embora exista uma rota de sistema válida para o destino, não há um próximo salto para encaminhar o tráfego para o destino.

Ver detalhes de uma rota

Para analisar melhor o roteamento, revise as rotas efetivas para a interface de rede com o comando az network nic show-effective-route-table :

az network nic show-effective-route-table \
  --resource-group myResourceGroup \
  --name myVmVMNic

O seguinte texto está incluído na saída retornada:

{
  "additionalProperties": {
    "disableBgpRoutePropagation": false
  },
  "addressPrefix": [
    "0.0.0.0/0"
  ],
  "name": null,
  "nextHopIpAddress": [],
  "nextHopType": "Internet",
  "source": "Default",
  "state": "Active"
},

Quando você usou o comando para testar a az network watcher show-next-hop comunicação de saída para 13.107.21.200 em Usar próximo salto, a rota com o addressPrefix 0.0.0.0/0** foi usada para rotear o tráfego para o endereço, já que nenhuma outra rota na saída inclui o endereço. Por predefinição, todos os endereços não especificados no prefixo de endereço de outra rota são encaminhados para a Internet.

No entanto, quando você usou o comando para testar a az network watcher show-next-hop comunicação de saída para 172.31.0.100, o resultado informou que não havia nenhum tipo de salto seguinte. Na saída retornada, você também verá o seguinte texto:

{
  "additionalProperties": {
    "disableBgpRoutePropagation": false
      },
  "addressPrefix": [
    "172.16.0.0/12"
  ],
  "name": null,
  "nextHopIpAddress": [],
  "nextHopType": "None",
  "source": "Default",
  "state": "Active"
},

Como você pode ver na saída do az network watcher nic show-effective-route-table comando, embora haja uma rota padrão para o prefixo 172.16.0.0/12, que inclui o endereço 172.31.0.100, o nextHopType é None. O Azure cria uma rota predefinida para 172.16.0.0/12, mas não especifica um tipo de próximo salto até que haja um motivo para isso. Se, por exemplo, você adicionou o intervalo de endereços 172.16.0.0/12 ao espaço de endereço da rede virtual, o Azure alterará o nextHopType para Rede virtual para a rota. Uma verificação mostraria a rede virtual como o nextHopType.

Clean up resources (Limpar recursos)

Quando já não for necessário, pode utilizar az group delete para remover o grupo de recursos e todos os recursos que contém:

az group delete --name myResourceGroup --yes

Próximos passos

Neste artigo, você criou uma VM e diagnosticou o roteamento de rede a partir da VM. Aprendeu que o Azure cria várias rotas predefinidas e testa o encaminhamento para dois destinos diferentes. Saiba mais sobre o encaminhamento no Azure e como criar rotas personalizadas.

Para conexões de VM de saída, você também pode determinar a latência e o tráfego de rede permitido e negado entre a VM e um ponto de extremidade usando o recurso de solução de problemas de conexão do Inspetor de Rede. Você pode monitorar a comunicação entre uma VM e um ponto de extremidade, como um endereço IP ou URL ao longo do tempo usando o recurso de monitor de conexão do Inspetor de Rede. Para obter mais informações, consulte Monitorar uma conexão de rede.