Partilhar via


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

Neste artigo, você aprenderá a diagnosticar problemas de filtro de tráfego de rede para uma máquina virtual (VM). O processo envolve a visualização das regras de segurança eficazes aplicadas pelo grupo de segurança de rede (NSG).

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. Expanda Rede no painel esquerdo. Selecione Configurações de rede. As figuras a seguir mostram as configurações do grupo de segurança de rede para a interface de rede da VM.

    Captura de tela das regras de segurança para NSG nsg-subnet.

    Captura de tela das regras de segurança para NSG nsg-nic.

    As regras listadas nas figuras anteriores são para uma interface de rede chamada vm-1445. Você vê que há regras de porta de entrada para a interface de rede de dois grupos de segurança de rede diferentes:

    • nsg-subnet: Associado à sub-rede em que a interface de rede se encontra.
    • nsg-nic: Associado à interface de rede na VM denominada vm-1445.

    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. As regras de porta de saída para a interface de rede são listadas.

    Embora a imagem mostre apenas quatro regras de entrada para cada NSG, os 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. Para exibir as regras de segurança efetivas, selecione a interface nas configurações de rede da máquina virtual. Verifique se a VM está em um estado de execução antes de continuar.

  5. Nas configurações da interface de rede, expanda Ajuda e selecione Regras de segurança efetivas.

    O exemplo a seguir mostra o exemplo de interface de rede vm-1445 com as regras de segurança eficazes selecionadas.

    Captura de ecrã das regras de segurança eficazes para a interface de rede vm-1445.

    As regras listadas são as mesmas que viste na etapa 3, embora haja abas 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.

  6. As etapas anteriores mostraram as regras de segurança para uma interface de rede chamada vm-1445. E se uma VM tiver duas interfaces de rede? 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 para a interface de rede vm-nic-2, selecione-a . Como mostrado no exemplo a seguir, a interface de rede tem as mesmas regras associadas à sua sub-rede que a interface de rede vm-1445 , 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.

    Captura de tela das regras de segurança para nic vm-nic-2.

    Ao contrário da interface de rede vm-1445 , a interface de rede vm-nic-2 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 estiveres a executar o PowerShell localmente, também precisarás de executar o comando Connect-AzAccount para iniciar sessão 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 vm-nic que está em um grupo de recursos chamado test-rg:

$Params = @{
  NetworkInterfaceName = "vm-nic"
  ResourceGroupName    = "test-rg"
}
Get-AzEffectiveNetworkSecurityGroup @Params

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 NSGs diferentes aplicados. Ao solucionar problemas, execute o comando para cada interface de rede.

Se continuar a ter um problema de conectividade, consulte mais diagnósticos e considerações.

Se você souber apenas o nome da VM, use os comandos a seguir para listar todas as IDs de interface de rede anexadas à VM.

$Params = @{
  Name              = "vm-1"
  ResourceGroupName = "test-rg"
}
$VM = Get-AzVM @Params
$VM.NetworkProfile

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

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

Na saída anterior, o nome da interface de rede é vm-nic.

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 efetivas 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 vm-nic que está em um grupo de recursos chamado test-rg:

az network nic list-effective-nsg \
  --name vm-nic \
  --resource-group test-rg

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 NSGs diferentes aplicados. Ao solucionar problemas, execute o comando para cada interface de rede.

Se continuar a ter um problema de conectividade, consulte mais diagnósticos e considerações.

Se você souber apenas o nome da VM, use os comandos a seguir para listar todas as IDs de interface de rede anexadas à VM.

az vm show \
  --name vm-1 \
  --resource-group test-rg

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

"networkProfile": {
    "additionalProperties": {},
    "networkInterfaces": [
      {
        "additionalProperties": {},
        "id": "/subscriptions/<ID>/resourceGroups/test-rg/providers/Microsoft.Network/networkInterfaces/vm-nic",
        "primary": true,
        "resourceGroup": "test-rg"
      },

Na saída anterior, o nome da interface de rede é vm-nic

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: indica se o grupo de segurança de rede está vinculado a uma NetworkInterface ou Sub-rede. Se o status de associação do NSG mudar antes de executar o comando, aguarde alguns segundos para que a saída reflita a atualização.
  • 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 criadas pelo usuário. As regras que especificam uma etiqueta 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 etiqueta de serviço.

Regras duplicadas aparecem na saída quando um NSG está vinculado à interface de rede e à sub-rede. As regras padrão e quaisquer regras personalizadas compartilhadas entre os NSGs causam essas duplicações.

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 uma prioridade mais alta (número menor) permite a entrada na porta 80 a partir da internet.

Resolver um problema

Você pode diagnosticar o problema descrito no cenário usando o portal do Azure, o PowerShell ou a CLI do Azure. A solução é criar uma regra de segurança de rede com as seguintes propriedades:

Propriedade Valor
Fonte 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-Todos

Após a criação da regra, a porta 80 está autorizada a partir da Internet, porque a sua prioridade é maior do que a regra Padrão DenyAllInBound. Se os NSGs estiverem associados à interface de rede e à sub-rede, crie a mesma regra em ambos os NSGs. Saiba como criar uma regra de segurança.

Quando o Azure processa o tráfego de entrada, ele processa regras no NSG associado à 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 mais diagnósticos.

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.

  • Para redes virtuais emparelhadas, por padrão, a marca de serviço VIRTUAL_NETWORK se expande automaticamente para incluir prefixos para redes virtuais emparelhadas. Para resolver problemas relacionados com o emparelhamento de redes virtuais, podes visualizar os prefixos na lista ExpandedAddressPrefix. Saiba mais sobre emparelhamento de rede virtual e tags de serviço.

  • O Azure só mostra regras de segurança eficazes para uma interface de rede quando um NSG está associado à interface de rede ou sub-rede da VM. Além disso, a VM deve estar no estado de execução.

  • Se a interface de rede ou sub-rede não tiver um NSG associado, todas as portas permanecerão abertas para acesso de entrada e saída quando uma VM tiver um endereço IP público. Esta configuração permite acesso irrestrito de e para qualquer lugar. Para proteger a VM, aplique um NSG à sub-rede que hospeda a interface de rede se ela tiver um endereço IP público.

Mais diagnósticos

  • Para executar um teste rápido para determinar se o tráfego é permitido para ou de uma VM, utilize a capacidade 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 causem falha na conectividade de rede de uma VM, 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