Diagnosticar um problema de filtro de tráfego de rede na máquina virtual

Neste artigo, você aprenderá a diagnosticar um problema de filtro de tráfego de rede exibindo as regras de segurança NSG (grupo de segurança de rede) que são eficazes para uma máquina virtual (VM).

Os NSGs permitem controlar os tipos de tráfego que entram e saem de uma VM. Você pode associar um NSG a uma sub-rede em uma rede virtual do Azure, uma interface de rede conectada a uma VM ou ambos. As regras de segurança efetivas aplicadas a uma interface de rede são uma agregação das regras existentes no NSG associadas a uma interface de rede e a sub-rede em que a interface de rede se encontra. Às vezes, regras em NSGs diferentes podem entrar em conflito entre si e afetar a conectividade de rede de uma VM. Você pode exibir todas as regras de segurança eficazes de NSGs que são aplicadas nas interfaces de rede da sua VM. Se você não estiver familiarizado com os conceitos de rede virtual, interface de rede ou NSG, consulte Visão geral de rede virtual, Interface de rede e Visão geral de grupos de segurança de rede.

Cenário

Você tenta se conectar a uma VM pela porta 80 da Internet, mas a conexão falha. Para determinar por que você não pode acessar a porta 80 da Internet, você pode exibir as regras de segurança eficazes para uma interface de rede usando o portal do Azure, o PowerShell ou a CLI do Azure.

As etapas a seguir pressupõem que você tenha uma VM existente para exibir as regras de segurança efetivas. Se você não tiver uma VM existente, primeiro implante uma VM Linux ou Windows para concluir as tarefas neste artigo. Os exemplos neste artigo são para uma VM chamada myVM com uma interface de rede chamada myVMVMNic. A VM e a interface de rede estão em um grupo de recursos chamado myResourceGroup e estão na região Leste dos EUA. Altere os valores nas etapas, conforme apropriado, para a VM para a qual você está diagnosticando o problema.

Diagnosticar usando o portal do Azure

  1. Faça logon no portal do Azure com uma conta do Azure que tenha as permissões necessárias.

  2. Na parte superior do portal do Azure, digite o nome da VM na caixa de pesquisa. Quando o nome da VM aparecer nos resultados da pesquisa, selecione-o.

  3. Em CONFIGURAÇÕES, selecione Rede, conforme mostrado na imagem a seguir:

    A captura de tela mostra o portal do Azure com configurações de rede para meu V M V M Nic.

    As regras listadas na imagem anterior são para uma interface de rede chamada myVMVMNic. Você vê que existem REGRAS DE PORTA DE ENTRADA para a interface de rede de dois grupos de segurança de rede diferentes:

    • mySubnetNSG: Associado à sub-rede em que a interface de rede se encontra.
    • myVMNSG: Associado à interface de rede na VM denominada myVMVMNic.

    A regra chamada DenyAllInBound é o que está impedindo a comunicação de entrada para a VM pela porta 80, da Internet, conforme descrito no cenário. A regra lista 0.0.0.0/0 para SOURCE, que inclui a internet. Nenhuma outra regra com uma prioridade mais alta (número mais baixo) permite a entrada da porta 80. Para permitir a entrada da porta 80 para a VM a partir da Internet, consulte Resolver um problema. Para saber mais sobre regras de segurança e como o Azure as aplica, consulte Grupos de segurança de rede.

    Na parte inferior da imagem, você também vê REGRAS DE PORTA DE SAÍDA. Sob isso estão as regras de porta de saída para a interface de rede. Embora a imagem mostre apenas quatro regras de entrada para cada NSG, seus NSGs podem ter muito mais do que quatro regras. Na imagem, você vê VirtualNetwork em SOURCE and DESTINATION e AzureLoadBalancer em SOURCE. VirtualNetwork e AzureLoadBalancer são marcas de serviço. As tags de serviço representam um grupo de prefixos de endereço IP para ajudar a minimizar a complexidade da criação de regras de segurança.

  4. Verifique se a VM está no estado de execução e selecione Regras de segurança efetivas, conforme mostrado na imagem anterior, para ver as regras de segurança efetivas, mostradas na imagem a seguir:

    A captura de tela mostra o painel Regras de segurança efetivas com Download selecionado e a regra de entrada AllowAzureLoadBalancerInbound selecionada.

    As regras listadas são as mesmas que você viu na etapa 3, embora haja guias diferentes para o NSG associado à interface de rede e à sub-rede. Como você pode ver na imagem, apenas as primeiras 50 regras são mostradas. Para baixar um arquivo de .csv que contém todas as regras, selecione Download.

    Para ver quais prefixos cada marca de serviço representa, selecione uma regra, como a regra chamada AllowAzureLoadBalancerInbound. A imagem a seguir mostra os prefixos para a marca de serviço AzureLoadBalancer :

    A captura de tela mostra os prefixos de endereço para AllowAzureLoadBalancerInbound inseridos.

    Embora a marca de serviço AzureLoadBalancer represente apenas um prefixo, outras marcas de serviço representam vários prefixos.

  5. As etapas anteriores mostraram as regras de segurança para uma interface de rede chamada myVMVMNic, mas você também viu uma interface de rede chamada myVMVMNic2 em algumas das imagens anteriores. A VM neste exemplo tem duas interfaces de rede conectadas a ela. As regras de segurança eficazes podem ser diferentes para cada interface de rede.

    Para ver as regras da interface de rede myVMVMNic2 , selecione-a. Como mostrado na imagem a seguir, a interface de rede tem as mesmas regras associadas à sua sub-rede que a interface de rede myVMVMNic , porque ambas as interfaces de rede estão na mesma sub-rede. Quando você associa um NSG a uma sub-rede, suas regras são aplicadas a todas as interfaces de rede na sub-rede.

    A captura de tela mostra o portal do Azure com configurações de rede para meu V M V M Nic 2.

    Ao contrário da interface de rede myVMVMNic , a interface de rede myVMVMNic2 não tem um grupo de segurança de rede associado a ela. Cada interface de rede e sub-rede pode ter zero, ou um, NSG associado a ela. O NSG associado a cada interface de rede ou sub-rede pode ser o mesmo ou diferente. Você pode associar o mesmo grupo de segurança de rede a quantas interfaces de rede e sub-redes desejar.

Embora regras de segurança eficazes tenham sido visualizadas por meio da VM, você também pode exibir regras de segurança eficazes por meio de um indivíduo:

Diagnosticar usando o PowerShell

Nota

Recomendamos que utilize o módulo Azure Az do PowerShell para interagir com o Azure. Para começar, consulte Instalar o Azure PowerShell. Para saber como migrar para o módulo do Az PowerShell, veja Migrar o Azure PowerShell do AzureRM para o Az.

Você pode executar os comandos que seguem no Azure Cloud Shell ou executando o PowerShell do seu computador. O Azure Cloud Shell é um shell interativo gratuito. Tem as ferramentas comuns do Azure pré-instaladas e configuradas para utilização com a sua conta. Se você executar o PowerShell a partir do seu computador, precisará do módulo do Azure PowerShell, versão 1.0.0 ou posterior. Execute Get-Module -ListAvailable Az no seu computador, para encontrar a versão instalada. Se precisar de atualizar, veja Install Azure PowerShell module (Instalar o módulo do Azure PowerShell). Se você estiver executando o PowerShell localmente, também precisará executar para fazer Connect-AzAccount logon no Azure com uma conta que tenha as permissões necessárias].

Obtenha as regras de segurança eficazes para uma interface de rede com Get-AzEffectiveNetworkSecurityGroup. O exemplo a seguir obtém as regras de segurança efetivas para uma interface de rede chamada myVMVMNic, que está em um grupo de recursos chamado myResourceGroup:

Get-AzEffectiveNetworkSecurityGroup `
  -NetworkInterfaceName myVMVMNic `
  -ResourceGroupName myResourceGroup

A saída é retornada no formato json. Para entender a saída, consulte interpretar saída de comando. A saída só é retornada se um NSG estiver associado à interface de rede, à sub-rede em que a interface de rede está ou a ambas. A VM deve estar no estado de execução. Uma VM pode ter várias interfaces de rede com diferentes NSGs aplicados. Ao solucionar problemas, execute o comando para cada interface de rede.

Se você ainda estiver tendo um problema de conectividade, consulte diagnósticos e considerações adicionais.

Se você não souber o nome de uma interface de rede, mas souber o nome da VM à qual a interface de rede está conectada, os comandos a seguir retornarão as IDs de todas as interfaces de rede conectadas a uma VM:

$VM = Get-AzVM -Name myVM -ResourceGroupName myResourceGroup
$VM.NetworkProfile

Você recebe uma saída semelhante ao exemplo a seguir:

NetworkInterfaces
-----------------
{/subscriptions/<ID>/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkInterfaces/myVMVMNic

Na saída anterior, o nome da interface de rede é myVMVMNic.

Diagnosticar usando a CLI do Azure

Se estiver usando comandos da CLI do Azure para concluir tarefas neste artigo, execute os comandos no Azure Cloud Shell ou executando a CLI do Azure a partir do seu computador. Este artigo requer a CLI do Azure versão 2.0.32 ou posterior. Execute az --version para localizar a versão instalada. Se precisar de instalar ou atualizar, veja Install Azure CLI (Instalar o Azure CLI). Se você estiver executando a CLI do Azure localmente, também precisará executar az login e fazer logon no Azure com uma conta que tenha as permissões necessárias.

Obtenha as regras de segurança eficazes para uma interface de rede com az network nic list-effective-nsg. O exemplo a seguir obtém as regras de segurança efetivas para uma interface de rede chamada myVMVMNic que está em um grupo de recursos chamado myResourceGroup:

az network nic list-effective-nsg \
  --name myVMVMNic \
  --resource-group myResourceGroup

A saída é retornada no formato json. Para entender a saída, consulte interpretar saída de comando. A saída só é retornada se um NSG estiver associado à interface de rede, à sub-rede em que a interface de rede está ou a ambas. A VM deve estar no estado de execução. Uma VM pode ter várias interfaces de rede com diferentes NSGs aplicados. Ao solucionar problemas, execute o comando para cada interface de rede.

Se você ainda estiver tendo um problema de conectividade, consulte diagnósticos e considerações adicionais.

Se você não souber o nome de uma interface de rede, mas souber o nome da VM à qual a interface de rede está conectada, os comandos a seguir retornarão as IDs de todas as interfaces de rede conectadas a uma VM:

az vm show \
  --name myVM \
  --resource-group myResourceGroup

Dentro da saída retornada, você vê informações semelhantes ao exemplo a seguir:

"networkProfile": {
    "additionalProperties": {},
    "networkInterfaces": [
      {
        "additionalProperties": {},
        "id": "/subscriptions/<ID>/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkInterfaces/myVMVMNic",
        "primary": true,
        "resourceGroup": "myResourceGroup"
      },

Na saída anterior, o nome da interface de rede é myVMVMNic interface.

Interpretar saída de comando

Independentemente de você ter usado o PowerShell ou a CLI do Azure para diagnosticar o problema, você recebe uma saída que contém as seguintes informações:

  • NetworkSecurityGroup: A ID do grupo de segurança de rede.
  • Associação: se o grupo de segurança de rede está associado a uma NetworkInterface ou Sub-rede. Se um NSG estiver associado a ambos, a saída será retornada com NetworkSecurityGroup, Association e EffectiveSecurityRules, para cada NSG. Se o NSG estiver associado ou desassociado imediatamente antes de executar o comando para exibir as regras de segurança efetivas, talvez seja necessário aguardar alguns segundos para que a alteração reflita na saída do comando.
  • EffectiveSecurityRules: Uma explicação de cada propriedade é detalhada em Criar uma regra de segurança. Nomes de regras precedidos de defaultSecurityRules/ são regras de segurança padrão que existem em cada NSG. Nomes de regras precedidos de securityRules/ são regras que você criou. As regras que especificam uma marca de serviço, como Internet, VirtualNetwork e AzureLoadBalancer para as propriedades destinationAddressPrefix ou sourceAddressPrefix , também têm valores para a propriedade expandedDestinationAddressPrefix . A propriedade expandedDestinationAddressPrefix lista todos os prefixos de endereço representados pela marca de serviço.

Se você vir regras duplicadas listadas na saída, é porque um NSG está associado à interface de rede e à sub-rede. Ambos os NSGs têm as mesmas regras padrão e podem ter regras duplicadas adicionais, se você tiver criado suas próprias regras que são as mesmas em ambos os NSGs.

A regra chamada defaultSecurityRules/DenyAllInBound é o que está impedindo a comunicação de entrada para a VM pela porta 80, da Internet, conforme descrito no cenário. Nenhuma outra regra com prioridade mais alta (número menor) permite a entrada da porta 80 da internet.

Resolver um problema

Quer você use o portal do Azure, o PowerShell ou a CLI do Azure para diagnosticar o problema apresentado no cenário deste artigo, a solução é criar uma regra de segurança de rede com as seguintes propriedades:

Property Value
Source Qualquer
Intervalo de portas de origem Qualquer
Destino O endereço IP da VM, um intervalo de endereços IP ou todos os endereços na sub-rede.
Intervalos de portas de destino 80
Protocolo TCP
Ação Permitir
Prioridade 100
Nome Permitir-HTTP-All

Depois de criar a regra, a porta 80 é permitida a entrada da Internet, porque a prioridade da regra é maior do que a regra de segurança padrão chamada DenyAllInBound, que nega o tráfego. Saiba como criar uma regra de segurança. Se NSGs diferentes estiverem associados à interface de rede e à sub-rede, você deverá criar a mesma regra em ambos os NSGs.

Quando o Azure processa o tráfego de entrada, ele processa regras no NSG associadas à sub-rede (se houver um NSG associado) e, em seguida, processa as regras no NSG associado à interface de rede. Se houver um NSG associado à interface de rede e à sub-rede, a porta deverá estar aberta em ambos os NSGs, para que o tráfego chegue à VM. Para facilitar os problemas de administração e comunicação, recomendamos que você associe um NSG a uma sub-rede, em vez de interfaces de rede individuais. Se as VMs dentro de uma sub-rede precisarem de regras de segurança diferentes, você poderá tornar as interfaces de rede membros de um grupo de segurança de aplicativo (ASG) e especificar um ASG como origem e destino de uma regra de segurança. Saiba mais sobre grupos de segurança de aplicativos.

Se continuar a ter problemas de comunicação, consulte Considerações e diagnóstico adicional.

Considerações

Considere os seguintes pontos ao solucionar problemas de conectividade:

  • As regras de segurança padrão bloqueiam o acesso de entrada da Internet e só permitem o tráfego de entrada da rede virtual. Para permitir o tráfego de entrada da Internet, adicione regras de segurança com uma prioridade maior do que as regras padrão. Saiba mais sobre as regras de segurança padrão ou como adicionar uma regra de segurança.
  • Se você tiver redes virtuais emparelhadas, por padrão, a marca de serviço VIRTUAL_NETWORK será expandida automaticamente para incluir prefixos para redes virtuais emparelhadas. Para solucionar problemas relacionados ao emparelhamento de rede virtual, você pode exibir os prefixos na lista ExpandedAddressPrefix . Saiba mais sobre emparelhamento de rede virtual e tags de serviço.
  • As regras de segurança eficazes só são mostradas para uma interface de rede se houver um NSG associado à interface de rede e, ou, sub-rede da VM, e se a VM estiver no estado de execução.
  • Se não houver NSGs associados à interface de rede ou sub-rede e você tiver um endereço IP público atribuído a uma VM, todas as portas estarão abertas para acesso de entrada e saída para qualquer lugar. Se a VM tiver um endereço IP público, recomendamos aplicar um NSG à sub-rede da interface de rede.

Diagnóstico adicional

  • Para executar um teste rápido para determinar se o tráfego é permitido de ou para uma VM, use o recurso de verificação de fluxo IP do Azure Network Watcher. A verificação do fluxo de IP informa se o tráfego é permitido ou negado. Se negada, a verificação de fluxo de IP informa qual regra de segurança está negando o tráfego.
  • Se não houver regras de segurança que façam com que a conectividade de rede de uma VM falhe, o problema pode ser devido a:
    • Software de firewall em execução no sistema operacional da VM
    • Rotas configuradas para dispositivos virtuais ou tráfego local. O tráfego da Internet pode ser redirecionado para a sua rede local através de tunelamento forçado. Se você forçar o tráfego de túnel da Internet para um dispositivo virtual ou local, talvez não consiga se conectar à VM pela Internet. Para saber como diagnosticar problemas de rota que podem impedir o fluxo de tráfego para fora da VM, consulte Diagnosticar um problema de roteamento de tráfego de rede de máquina virtual.

Próximos passos