Compartilhar via


Início Rápido: diagnosticar um problema de filtro do tráfego de rede de máquina virtual usando a 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 de fluxo de IP, você determina a regra de segurança que está bloqueando o tráfego e causando a falha de comunicação e aprende como pode resolvê-la. 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ê executar a CLI do Azure localmente, entre 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. Criar um grupo de recursos usando az group create. Um grupo de recursos do Azure é um contêiner lógico no qual os recursos do Azure são implantados e gerenciados.

    # 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 de segurança de rede padrão usando az network nsg create.

    # Create a default network security group.
    az network nsg create --name 'myVM-nsg' --resource-group 'myResourceGroup' --location 'eastus'
    
  4. Crie uma máquina virtual com az vm create. Quando solicitado, digite seu nome de usuário e senha.

    # 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'
    

Testar a comunicação de rede usando a verificação de fluxo de IP

Nesta seção, você usará a funcionalidade de verificação de fluxo de IP de 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 de myVM para 13.107.21.200 usando a verificação de fluxo de 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
    ------ --------
    Allow  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ê obtém uma saída semelhante ao do exemplo a seguir:

    Access RuleName
    ------ --------
    Allow  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 determinar por que as regras da seção anterior permitem ou negam a comunicação, examine as regras de segurança em vigor da 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 permitiu o 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ê pode ver 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ê utilizou para testar a comunicação de saída com o www.bing.com.

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

Limpar os recursos

Quando não for mais necessário, use 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