Início Rápido: Diagnostice um problema de filtro de tráfego de rede em máquinas virtuais usando CLI do Azure

Neste início rápido, você implanta uma máquina virtual e usa a verificação de fluxo de IP do Observador de Rede para testar a conectividade de e para endereços IP diferentes. Usando os resultados da verificação do fluxo IP, você pode determinar a regra de segurança que está bloqueando o tráfego e causando a falha de comunicação. Você também aprende como resolver o problema. Você também aprenderá a usar as regras de segurança em vigor para um adaptador de rede para determinar por que uma regra de segurança está permitindo ou negando o tráfego.

O diagrama mostra os recursos criados no início rápido do Observador de Rede.

Se você não tiver uma assinatura do Azure, crie uma conta gratuita antes de começar.

Pré-requisitos

  • Uma conta do Azure com uma assinatura ativa.

  • Azure Cloud Shell ou CLI do Azure.

    As etapas desse artigo executam os comandos da CLI do Azure interativamente no Azure Cloud Shell. Para executar os comandos no Cloud Shell, selecione Abrir o Cloud Shell no canto superior direito de um bloco de código. Selecione Copiar para copiar o código e colá-lo no Cloud Shell para executá-lo. Você também pode executar o Cloud Shell no portal do Azure.

    Você também pode instalar a CLI do Azure localmente para executar os comandos. Este guia de início rápido exige a versão 2.0 ou posterior da CLI do Azure. Se você rodar o CLI do Azure localmente, faça login no Azure usando o comando az login.

Criar uma máquina virtual

Nesta seção, crie uma rede virtual e uma sub-rede na região leste dos EUA. Em seguida, crie uma máquina virtual na sub-rede com um grupo de segurança de rede padrão.

  1. Crie um grupo de recursos usando az group create. Um grupo de recursos do Azure é um contêiner lógico em que você implanta e gerencia os recursos do Azure.

    # Create a resource group.
    az group create --name 'myResourceGroup' --location 'eastus'
    
  2. Crie uma rede virtual usando az network vnet create.

    # Create a virtual network and a subnet.
    az network vnet create --resource-group 'myResourceGroup' --name 'myVNet' --subnet-name 'mySubnet' --subnet-prefixes 10.0.0.0/24 
    
  3. Crie um grupo padrão de segurança de rede usando o create do NSG da rede Az.

    # Create a default network security group.
    az network nsg create --name 'myVM-nsg' --resource-group 'myResourceGroup' --location 'eastus'
    

    Observação

    As regras padrão do grupo de segurança de rede bloqueiam todo o acesso de entrada da Internet, incluindo SSH. Para se conectar à máquina virtual, use o Azure Bastion. Para obter mais informações, consulte Início Rápido: Implantar o Azure Bastion com configurações padrão.

  4. Crie uma máquina virtual usando o az-VM create.

    # Create a Linux virtual machine using the latest Ubuntu 20.04 LTS image.
    az vm create --resource-group 'myResourceGroup' --name 'myVM' --location 'eastus' --vnet-name 'myVNet' --subnet 'mySubnet' --public-ip-address '' --nsg 'myVM-nsg' --image 'Canonical:0001-com-ubuntu-server-focal:20_04-lts-gen2:latest' --generate-ssh-keys
    

Teste a comunicação da rede usando a verificação de fluxo IP

Nesta seção, use a capacidade de verificação de fluxo IP do Observador de Rede para testar a comunicação de rede de e para a máquina virtual.

  1. Use o comando az-network watcher test-ip-flow para testar a comunicação de saída do myVM para 13.107.21.200 usando a verificação de fluxo IP (13.107.21.200 é um dos endereços IP públicos usados por www.bing.com):

    # Start the IP flow verify session to test outbound flow to www.bing.com.
    az network watcher test-ip-flow --direction 'outbound' --protocol 'TCP' --local '10.0.0.4:60000' --remote '13.107.21.200:80' --vm 'myVM' --nic 'myVmVMNic' --resource-group 'myResourceGroup' --out 'table'
    

    Após alguns segundos, você obtém uma saída semelhante ao do exemplo a seguir:

    Access  RuleName
    ------  --------
    Allow   defaultSecurityRules/AllowInternetOutBound
    

    O resultado do teste indica que o acesso é permitido a 13.107.21.200 devido à regra de segurança padrão AllowInternetOutBound. Por padrão, as máquinas virtuais do Azure podem acessar a Internet.

  2. Altere o RemoteIPAddress para 10.0.1.10 e repita o teste. 10.0.1.10 é um endereço IP privado no espaço de endereço de myVNet.

    # Start the IP flow verify session to test outbound flow to 10.0.1.10.
    az network watcher test-ip-flow --direction 'outbound' --protocol 'TCP' --local '10.0.0.4:60000' --remote '10.0.1.10:80' --vm 'myVM' --nic 'myVmVMNic' --resource-group 'myResourceGroup' --out 'table'
    

    Após alguns segundos, você obtém uma saída semelhante ao do exemplo a seguir:

    Access RuleName
    ------ --------
    Allow  defaultSecurityRules/AllowVnetOutBound
    

    O resultado do segundo teste indica que o acesso é permitido a 10.0.1.10 devido à regra de segurança padrão AllowVnetOutBound. Por padrão, uma máquina virtual do Azure pode acessar todos os endereços IP no espaço de endereço de sua rede virtual.

  3. Altere o RemoteIPAddress para 10.10.10.10 e repita o teste. 10.10.10.10 é um endereço IP privado que não está no espaço de endereço de myVNet.

    # Start the IP flow verify session to test outbound flow to 10.10.10.10.
    az network watcher test-ip-flow --direction 'outbound' --protocol 'TCP' --local '10.0.0.4:60000' --remote '10.10.10.10:80' --vm 'myVM' --nic 'myVmVMNic' --resource-group 'myResourceGroup' --out 'table'
    

    Após alguns segundos, você obtém uma saída semelhante ao do exemplo a seguir:

    Access RuleName
    ------ --------
    Deny   defaultSecurityRules/DenyAllOutBound
    

    O resultado do terceiro teste indica que o acesso foi negado a 10.10.10.10 devido à regra de segurança padrão DenyAllOutBound.

  4. Altere a direção para entrada, a porta local para 80 e a porta remota para 60000 e repita o teste.

    # Start the IP flow verify session to test inbound flow from 10.10.10.10.
    az network watcher test-ip-flow --direction 'inbound' --protocol 'TCP' --local '10.0.0.4:80' --remote '10.10.10.10:6000' --vm 'myVM' --nic 'myVmVMNic' --resource-group 'myResourceGroup' --out 'table'
    

    Após alguns segundos, você vê uma saída semelhante ao seguinte exemplo:

    Access RuleName
    ------ --------
    Deny   defaultSecurityRules/DenyAllInBound
    

    O resultado do quarto teste indica que o acesso foi negado de 10.10.10.10 devido à regra de segurança padrão DenyAllInBound. Por padrão, todo o acesso a uma máquina virtual do Azure de fora da rede virtual é negado.

Exibir os detalhes de uma regra de segurança

Para entender por que as regras da seção anterior permitem ou negam comunicação, revise as regras de segurança eficazes para a interface de rede da máquina virtual myVM usando o comando az-network nic list-effective-nsg :

# Get the effective security rules for the network interface of myVM.
az network nic list-effective-nsg --resource-group 'myResourceGroup' --name 'myVmVMNic'

A saída retornada inclui as seguintes informações para a regra AllowInternetOutbound que concede acesso de saída a www.bing.com:

{
  "access": "Allow",
  "destinationAddressPrefix": "Internet",
  "destinationAddressPrefixes": [
	"Internet"
  ],
  "destinationPortRange": "0-65535",
  "destinationPortRanges": [
	"0-65535"
  ],
  "direction": "Outbound",
  "expandedDestinationAddressPrefix": [
	"1.0.0.0/8",
	"2.0.0.0/7",
	"4.0.0.0/9",
	"4.144.0.0/12",
	"4.160.0.0/11",
	"4.192.0.0/10",
	"5.0.0.0/8",
	"6.0.0.0/7",
	"8.0.0.0/7",
	"11.0.0.0/8",
	"12.0.0.0/8",
	"13.0.0.0/10",
	"13.64.0.0/11",
	"13.104.0.0/13",
	"13.112.0.0/12",
	"13.128.0.0/9",
	"14.0.0.0/7",
	...
	...
	...
	"200.0.0.0/5",
	"208.0.0.0/4"
  ],
  "name": "defaultSecurityRules/AllowInternetOutBound",
  "priority": 65001,
  "protocol": "All",
  "sourceAddressPrefix": "0.0.0.0/0",
  "sourceAddressPrefixes": [
	"0.0.0.0/0",
	"0.0.0.0/0"
  ],
  "sourcePortRange": "0-65535",
  "sourcePortRanges": [
	"0-65535"
  ]
},

Você vê na saída que o prefixo de endereço 13.104.0.0/13 está entre os prefixos de endereço da regra AllowInternetOutBound . Esse prefixo abrange o endereço IP 13.107.21.200, que você usou para testar a comunicação de saída para www.bing.com.

Da mesma forma, você pode verificar as outras regras para ver os prefixos de endereço IP de origem e de destino sob cada regra.

Limpar os recursos

Quando você não precisar mais dos recursos, use o az group delete para excluir o grupo de recursos myResourceGroup e todos os recursos que ele contém:

# Delete the resource group and all resources it contains.
az group delete --name 'myResourceGroup' --yes

Próxima etapa