Partilhar via


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

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 antes de começar.

Azure Cloud Shell

O Azure aloja o Azure Cloud Shell, um ambiente de shell interativo que pode utilizar através do seu browser. Pode utilizar o Bash ou o PowerShell com o Cloud Shell para trabalhar com os serviços do Azure. Você pode usar os comandos pré-instalados do Cloud Shell para executar o código neste artigo, sem precisar instalar nada em seu ambiente local.

Para iniciar o Azure Cloud Shell:

Opção Exemplo/Ligação
Selecione Experimentar no canto superior direito de um código ou bloco de comandos. Selecionar Experimentar não copia automaticamente o código ou comando para o Cloud Shell. Captura de tela que mostra um exemplo de Try It for Azure Cloud Shell.
Aceda a https://shell.azure.com ou selecione o botão Iniciar Cloud Shell para abrir o Cloud Shell no browser. Botão para iniciar o Azure Cloud Shell.
Selecione o botão Cloud Shell na barra de menus, na parte direita do portal do Azure. Captura de tela que mostra o botão Cloud Shell no portal do Azure

Para usar o Azure Cloud Shell:

  1. Inicie o Cloud Shell.

  2. Selecione o botão Copiar em um bloco de código (ou bloco de comando) para copiar o código ou comando.

  3. Cole o código ou comando na sessão do Cloud Shell selecionando Ctrl+Shift+V no Windows e Linux ou selecionando Cmd+Shift+V no macOS.

  4. Selecione Enter para executar o código ou comando.

Se você optar por instalar e usar o PowerShell localmente, este artigo exigirá o módulo Az PowerShell. Para obter mais informações, consulte Como instalar o Azure PowerShell. Para localizar a versão instalada, execute Get-InstalledModule -Name Az. Se você executar o PowerShell localmente, entre no Azure usando o cmdlet Connect-AzAccount .

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 New-AzResourceGroup. O exemplo seguinte cria um grupo de recursos com o nome myResourceGroup na localização eastus.

New-AzResourceGroup -Name myResourceGroup -Location EastUS

Crie a VM com New-AzVM. Ao executar este passo, serão pedidas credenciais. Os valores que introduzir são configurados, como o nome de utilizador e a palavra-passe para a VM.

$vM = New-AzVm `
    -ResourceGroupName "myResourceGroup" `
    -Name "myVm" `
    -Location "East US"

A criação da VM demora alguns minutos. Não continue com os restantes passos até que a VM seja criada e o PowerShell devolva um resultado.

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, use Get-AzNetworkWatcher para recuperar o observador de rede. O seguinte exemplo obtém um observador de rede existente com o nome NetworkWatcher_eastus que se encontra no grupo de recursos NetworkWatcherRG:

$networkWatcher = Get-AzNetworkWatcher `
  -Name NetworkWatcher_eastus `
  -ResourceGroupName NetworkWatcherRG

Se você ainda não tiver um observador de rede habilitado na região Leste dos EUA, use New-AzNetworkWatcher para criar um observador de rede na região Leste dos EUA:

$networkWatcher = New-AzNetworkWatcher `
  -Name "NetworkWatcher_eastus" `
  -ResourceGroupName "NetworkWatcherRG" `
  -Location "East US"

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 o comando Get-AzNetworkWatcherNextHop 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:

Get-AzNetworkWatcherNextHop `
  -NetworkWatcher $networkWatcher `
  -TargetVirtualMachineId $VM.Id `
  -SourceIPAddress 192.168.1.4 `
  -DestinationIPAddress 13.107.21.200

Após alguns segundos, a saída informa que o NextHopType é Internet e que o 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:

Get-AzNetworkWatcherNextHop `
  -NetworkWatcher $networkWatcher `
  -TargetVirtualMachineId $VM.Id `
  -SourceIPAddress 192.168.1.4 `
  -DestinationIPAddress 172.31.0.100

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 Get-AzEffectiveRouteTable :

Get-AzEffectiveRouteTable `
  -NetworkInterfaceName myVm `
  -ResourceGroupName myResourceGroup |
  Format-table

A saída que inclui o seguinte texto é retornada:

Name State  Source  AddressPrefix           NextHopType NextHopIpAddress
---- -----  ------  -------------           ----------- ----------------
     Active Default {192.168.0.0/16}        VnetLocal   {}              
     Active Default {0.0.0.0/0}             Internet    {}              
     Active Default {10.0.0.0/8}            None        {}              
     Active Default {100.64.0.0/10}         None        {}              
     Active Default {172.16.0.0/12}         None        {}              

Como você pode ver na saída anterior, a rota com o AddressPrefix de 0.0.0.0/0 roteia todo o tráfego não destinado a endereços dentro dos prefixos de endereço de outra rota com um próximo salto de Internet. Como você também pode ver na saída, 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 não for mais necessário, você pode usar Remove-AzResourceGroup para remover o grupo de recursos e todos os recursos que ele contém:

Remove-AzResourceGroup -Name myResourceGroup -Force

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.