Diagnosticar um problema de roteamento de rede de máquina virtual usando o PowerShell
Neste artigo, você aprenderá a usar a ferramenta próximo salto do Observador de Rede do Azure para solucionar problemas e diagnosticar um problema de roteamento de VM (máquina virtual) que o impede de se comunicar corretamente com outros recursos.
Pré-requisitos
Uma conta do Azure com uma assinatura ativa. Crie uma conta gratuitamente.
Azure Cloud Shell ou Azure PowerShell.
As etapas desse 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 no portal do Azure.
Você também pode instalar o Azure PowerShell localmente para executar os cmdlets. Execute o Get-Module -ListAvailable Az para localizar a versão instalada. Se você executar o PowerShell localmente, entre no Azure usando a cmdlet Connect-AzAccount.
Criar uma máquina virtual
Antes de criar uma VM, você deve criar um grupo de recursos para conter a VM. Crie um grupo de recursos com New-AzResourceGroup. O exemplo a seguir cria um grupo de recursos chamado myResourceGroup no local eastus.
New-AzResourceGroup -Name myResourceGroup -Location EastUS
Crie a VM com New-AzVM. Ao executar esta etapa, credenciais serão solicitadas de você. Os valores que você inseriu são configurados como o nome de usuário e senha para a VM.
$vM = New-AzVm `
-ResourceGroupName "myResourceGroup" `
-Name "myVm" `
-Location "East US"
A VM demora alguns minutos para criar. Não continue com as etapas restantes até que a VM seja criada e o PowerShell retorne a saída.
Testar comunicação de rede
Para testar a comunicação de rede com o Observador de Rede, primeiro habilite um observador de rede na região onde está localizada a VM que deseja testar e, em seguida, use a funcionalidade de próximo salto do Observador de Rede para testar a comunicação.
Habilitar 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 recupera um observador de rede existente chamado NetworkWatcher_eastus que está 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"
Usar próximo salto
O Azure cria automaticamente as rotas para destinos padrão. Você pode criar rotas personalizadas que substituem as rotas padrão. Às vezes, as rotas personalizadas podem causar falha 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 a RouteTableId é Rota do Sistema. Esse resultado permite que você saiba que há uma rota válida para o destino.
Teste a comunicação de saída da VM em 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 Nenhum é o NextHopType e que a RouteTableId também é Rota do Sistema. Esse resultado permite que você saiba que, embora haja uma rota do sistema válida para o destino, não há nenhum próximo salto para encaminhar o tráfego para o destino.
Exibir detalhes de uma rota
Para analisar o roteamento adicional, examine as rotas reais 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 é possível ver na saída anterior, a rota com 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 outras rotas 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 é Nenhum. O Azure cria uma rota padrão para 172.16.0.0/12, mas não especifica um tipo de próximo salto até que haja um motivo. 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 da rota. Em seguida, uma verificação mostra a Rede virtual como o nextHopType.
Limpar os recursos
Quando não for mais necessário, você poderá usar Remove-AzResourceGroup para remover o grupo de recursos e todos os recursos que ele contém:
Remove-AzResourceGroup -Name myResourceGroup -Force
Próximas etapas
Neste artigo, você criou uma VM e o roteamento de rede diagnosticado da VM. Você aprendeu que o Azure cria várias rotas padrão e testou o roteamento para dois destinos diferentes. Saiba mais sobre o roteamento no Azure e como criar rotas personalizadas.
Para conexões de VM de saída, determine também a latência e o tráfego de rede permitido e negado entre a VM e um ponto de extremidade, usando a funcionalidade solução de problemas de conexão do Observador de Rede. Você pode monitorar a comunicação entre uma VM e um ponto de extremidade, como um endereço de IP ou uma URL, ao longo do tempo usando a funcionalidade do monitor de conexão do Observador de Rede. Para obter mais informações, consulte Monitorar uma conexão de rede.