Share via


Guida introduttiva: Diagnosticare un problema di filtro del traffico di rete di una macchina virtuale usando l'interfaccia della riga di comando di Azure

In questa guida introduttiva si distribuisce una macchina virtuale e si usa la verifica del flusso IP di Network Watcher per testare la connettività da e verso indirizzi IP diversi. Usando i risultati della verifica del flusso IP, si determina la regola di sicurezza che blocca il traffico e causa l'errore di comunicazione e si apprenderà come risolverlo. Si apprenderà anche come usare le regole di sicurezza valide per un'interfaccia di rete per determinare il motivo per cui una regola di sicurezza consente o nega il traffico.

Il diagramma mostra le risorse create nella guida introduttiva di Network Watcher.

Se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.

Prerequisiti

  • Un account Azure con una sottoscrizione attiva.

  • Azure Cloud Shell o interfaccia della riga di comando di Azure.

    I passaggi descritti in questo articolo eseguono i comandi dell'interfaccia della riga di comando di Azure in modo interattivo in Azure Cloud Shell. Per eseguire i comandi in Cloud Shell, selezionare Apri Cloud Shell nell'angolo superiore destro di un blocco di codice. Selezionare Copia per copiare il codice e incollarlo in Cloud Shell per eseguirlo. È anche possibile eseguire Cloud Shell dall'interno del portale di Azure.

    È anche possibile installare l'interfaccia della riga di comando di Azure in locale per eseguire i comandi. Questa guida di avvio rapido richiede l'interfaccia della riga di comando di Azure versione 2.0 o successiva. Se si esegue l'interfaccia della riga di comando di Azure in locale, accedere ad Azure usando il comando az login .

Creare una macchina virtuale

In questa sezione viene creata una rete virtuale e una subnet nell'area Stati Uniti orientali. Creare quindi una macchina virtuale nella subnet con un gruppo di sicurezza di rete predefinito.

  1. Creare un gruppo di risorse usando az group create. Un gruppo di risorse di Azure è un contenitore logico in cui le risorse di Azure vengono distribuite e gestite.

    # Create a resource group.
    az group create --name 'myResourceGroup' --location 'eastus'
    
  2. Creare una rete virtuale 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. Creare un gruppo di sicurezza di rete predefinito usando az network nsg create.

    # Create a default network security group.
    az network nsg create --name 'myVM-nsg' --resource-group 'myResourceGroup' --location 'eastus'
    
  4. Creare una macchina virtuale con az vm create. Quando richiesto, immettere nome utente e password.

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

Testare la comunicazione di rete usando la verifica del flusso IP

In questa sezione si usa la funzionalità di verifica del flusso IP di Network Watcher per testare la comunicazione di rete da e verso la macchina virtuale.

  1. Usare il comando az network watcher test-ip-flow per testare le comunicazioni in uscita da myVM a 13.107.21.200 usando la verifica del flusso IP (13.107.21.200 è uno degli indirizzi IP pubblici usati da 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'
    

    Dopo alcuni secondi, si ottiene un output simile all'esempio seguente:

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

    Il risultato del test indica che l'accesso è consentito a 13.107.21.200 a causa della regola di sicurezza predefinita AllowInternetOutBound. Per impostazione predefinita, le macchine virtuali di Azure possono accedere a Internet.

  2. Modificare RemoteIPAddress su 10.0.1.10 e ripetere il test. 10.0.1.10 è un indirizzo IP privato nello spazio indirizzi 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'
    

    Dopo alcuni secondi, si ottiene un output simile all'esempio seguente:

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

    Il risultato del secondo test indica che l'accesso è consentito a 10.0.1.10 a causa della regola di sicurezza predefinita AllowVnetOutBound. Per impostazione predefinita, una macchina virtuale di Azure può accedere a tutti gli indirizzi IP nello spazio indirizzi della rete virtuale.

  3. Modificare RemoteIPAddress su 10.10.10.10 e ripetere il test. 10.10.10.10 è un indirizzo IP privato che non si trova nello spazio indirizzi 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'
    

    Dopo alcuni secondi, si ottiene un output simile all'esempio seguente:

    Access RuleName
    ------ --------
    Allow  defaultSecurityRules/DenyAllOutBound
    

    Il risultato del terzo test indica che l'accesso viene negato a 10.10.10.10 a causa della regola di sicurezza predefinita DenyAllOutBound.

  4. Passare alla direzione in ingresso, alla porta locale a 80 e alla porta remota a 60000, quindi ripetere il test.

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

    Dopo alcuni secondi, si ottiene un output simile all'esempio seguente:

    Access RuleName
    ------ --------
    Allow  defaultSecurityRules/DenyAllInBound
    

    Il risultato del quarto test indica che l'accesso viene negato dalla versione 10.10.10.10 a causa della regola di sicurezza predefinita DenyAllInBound. Per impostazione predefinita, viene negato tutto l'accesso a una macchina virtuale di Azure dall'esterno della rete virtuale.

Visualizzare i dettagli di una regola di sicurezza

Per determinare il motivo per cui le regole nella sezione precedente consentono o negano la comunicazione, esaminare le regole di sicurezza valide per l'interfaccia di rete della macchina virtuale myVM usando il 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'

L'output restituito include le informazioni seguenti per la regola AllowInternetOutbound che ha consentito l'accesso in uscita 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"
  ]
},

Nell'output il prefisso dell'indirizzo 13.104.0.0.0/13 è tra i prefissi di indirizzo della regola AllowInternetOutBound . Questo prefisso include l'indirizzo IP 13.107.21.200, usato per testare la comunicazione in uscita verso www.bing.com.

Analogamente, è possibile controllare le altre regole per visualizzare i prefissi degli indirizzi IP di origine e di destinazione in ogni regola.

Pulire le risorse

Quando non è più necessario, usare az group delete per eliminare il gruppo di risorse myResourceGroup e tutte le risorse che contiene:

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

Passaggi successivi

In questa guida introduttiva si è appreso come creare una macchina virtuale e diagnosticare problemi dei filtri del traffico di rete in ingresso e in uscita. Si è appreso che le regole del gruppo di sicurezza di rete consentono o negano il traffico da e verso una macchina virtuale. Altre informazioni sulle regole di sicurezza e su come creare le regole di sicurezza.

Anche con i filtri del traffico di rete appropriati sul posto, la comunicazione con una macchina virtuale può comunque non riuscire a causa della configurazione del routing. Per informazioni su come diagnosticare i problemi di routing delle macchine virtuali, vedere Diagnosticare un problema di routing di rete della macchina virtuale. Per diagnosticare i problemi di routing, latenza e filtro del traffico in uscita con uno strumento, vedere Risolvere i problemi relativi alle connessioni con Azure Network Watcher.