Diagnosticar um problema de roteamento de rede de máquina virtual usando o PowerShell
Neste artigo, você aprenderá a usar a ferramenta de próximo salto do Observador de Rede do Azure para solucionar e diagnosticar um problema de roteamento de máquina virtual (VM) que está impedindo que ela se comunique corretamente com outros recursos.
Pré-requisitos
Uma conta do Azure com uma subscrição ativa. Crie uma conta gratuitamente.
Azure Cloud Shell ou Azure PowerShell.
As etapas neste artigo executam os cmdlets do Azure PowerShell interativamente no Azure Cloud Shell. Para executar os cmdlets no Cloud Shell, selecione Open Cloud Shell no canto superior direito de um bloco de código. Selecione Copiar para copiar o código e cole-o no Cloud Shell para executá-lo. Você também pode executar o Cloud Shell de dentro do portal do Azure.
Você também pode instalar o Azure PowerShell localmente para executar os cmdlets. Execute Get-Module -ListAvailable Az para encontrar a versão instalada. Se você executar o PowerShell localmente, entre no Azure usando o cmdlet Connect-AzAccount .
Criar uma máquina virtual
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.