Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo illustra come diagnosticare i problemi di filtro del traffico di rete per una macchina virtuale. Il processo prevede la visualizzazione delle regole di sicurezza effettive applicate dal gruppo di sicurezza di rete (NSG).
I gruppi di sicurezza di rete consentono di controllare i tipi di traffico che scorrono dentro e fuori le VM. È possibile associare un gruppo di sicurezza di rete a una subnet in una rete virtuale di Azure, a un'interfaccia di rete associata a una VM o a entrambe. Le regole di sicurezza applicate a un'interfaccia di rete sono una combinazione tra le regole di sicurezza presenti nel gruppo di sicurezza associato all'interfaccia di rete e quelle della subnet in cui l'interfaccia di rete si trova. Le regole in gruppi di sicurezza di rete diversi possono talvolta entrare in conflitto tra loro e influire sulla connettività di rete di una macchina virtuale. È possibile visualizzare tutte le regole di sicurezza effettive degli NSG applicate nelle interfacce di rete della VM. Se non si ha familiarità con le rete virtuali, le interfacce di rete o i concetti di NSG, vedere Panoramica di Rete virtuale, Interfaccia di rete e Panoramica dei gruppi di sicurezza di rete.
Scenario
Si sta cercando di eseguire la connessione a una VM dalla porta 80 da Internet, ma la connessione non riesce. Per determinare perché non è possibile connettersi dalla porta 80 da Internet, è possibile visualizzare le regole di sicurezza valide per un'interfaccia di rete usando il portale di Azure, PowerShell o l'interfaccia della riga di comando di Azure.
I passaggi che seguono presuppongono la disponibilità di una VM per visualizzare le relative regole di sicurezza. In mancanza di una VM esistente, distribuire prima una VM Linux o Windows con cui completare le attività descritte in questo articolo. Gli esempi di questo articolo sono per una VM denominata myVM con un'interfaccia di rete denominata myVMVMNic. L'interfaccia di rete e la VM si trovano in un gruppo di risorse denominato myResourceGroup nell'area Stati Uniti orientali. Modificare i valori nei passaggi, in base alle esigenze, per la macchina virtuale per cui si sta diagnosticando il problema.
Diagnosi tramite il portale di Azure
Accedere al portale di Azure con un account di Azure che abbia le autorizzazioni necessarie.
Nella parte superiore del portale di Azure immettere nella casella di ricerca il nome della VM. Quando il nome della VM viene visualizzato nei risultati della ricerca, selezionarlo.
Espandi Connessioni di rete nel riquadro sinistro. Selezionare Impostazioni di rete. Le figure seguenti illustrano le impostazioni del gruppo di sicurezza di rete per l'interfaccia di rete della macchina virtuale.
Le regole elencate nelle figure precedenti sono relative a un'interfaccia di rete denominata vm-1445. Si noterà che sono presenti regole di porta in ingresso per l'interfaccia di rete da due gruppi di sicurezza di rete diversi:
- nsg-subnet: associato alla subnet in cui si trova l'interfaccia di rete.
- nsg-nic: associato all'interfaccia di rete nella macchina virtuale denominata vm-1445.
È la regola denominata DenyAllInBound a impedire la comunicazione con la VM tramite la porta 80, da Internet, come descritto nello scenario. Nella regola è elencato il valore 0.0.0.0/0 per ORIGINE, che include anche Internet. Nessun altra regola con priorità più alta (numero più basso) consente le comunicazioni in ingresso dalla porta 80. Per consentire le comunicazioni verso la VM dalla porta 80 da Internet, vedere Risolvere il problema. Per altre informazioni sulle regole di sicurezza e su come vengono applicate in Azure, vedere Gruppi di sicurezza di rete.
Nella parte inferiore dell'immagine vengono visualizzate anche le regole delle porte in uscita. Sono elencate le regole delle porte in uscita per l'interfaccia di rete.
Anche se l'immagine mostra solo quattro regole in ingresso per ogni gruppo di sicurezza di rete, i tuoi gruppi di sicurezza di rete potrebbero avere molte più di quattro regole. Nell'immagine viene visualizzato VirtualNetwork in Origine e Destinazione e AzureLoadBalancer in SOURCE. VirtualNetwork e AzureLoadBalancer sono tag di servizio. I tag di servizio rappresentano un gruppo di prefissi di indirizzi IP che consentono di ridurre al minimo la complessità della creazione delle regole di sicurezza.
Per visualizzare le regole di sicurezza valide, selezionare l'interfaccia nelle impostazioni di rete della macchina virtuale. Verificare che la macchina virtuale sia in esecuzione prima di procedere.
Nelle impostazioni per l'interfaccia di rete espandere Guida e quindi selezionare Regole di sicurezza valide.
L'esempio seguente mostra l'interfaccia di rete di esempio vm-1445 con le regole di sicurezza valide selezionate.
Le regole elencate sono le stesse illustrate nel passaggio 3, anche se sono presenti diverse schede per il gruppo di sicurezza di rete associato all'interfaccia di rete e alla subnet. Come si può vedere nell'immagine, vengono visualizzate solo le prime 50 regole. Per scaricare un file con estensione csv che contiene tutte le regole, selezionare Download.
I passaggi precedenti hanno mostrato le regole di sicurezza per un'interfaccia di rete denominata vm-1445. Cosa accade se una macchina virtuale ha due interfacce di rete? La VM di questo esempio ha due interfacce di rete collegate. Le regole di sicurezza valide possono essere diverse per ogni interfaccia di rete.
Per visualizzare le regole per l'interfaccia di rete vm-nic-2 , selezionarla. Come illustrato nell'esempio seguente, l'interfaccia di rete ha le stesse regole associate alla subnet dell'interfaccia di rete vm-1445 , perché entrambe le interfacce di rete si trovano nella stessa subnet. Quando si associa un gruppo di sicurezza di rete a una subnet, le regole del gruppo vengono applicate a tutte le interfacce di rete presenti nella subnet.
A differenza dell'interfaccia di rete vm-1445 , l'interfaccia di rete vm-nic-2 non ha un gruppo di sicurezza di rete associato. Ogni interfaccia di rete e subnet può avere zero, o uno, NSG associato. Il gruppo di sicurezza di rete associato a ogni interfaccia di rete o subnet può essere lo stesso o un altro. Lo stesso gruppo di sicurezza di rete può essere associato a un numero qualsiasi di interfacce di rete e subnet.
Anche se le regole di sicurezza valide sono state visualizzate tramite la macchina virtuale, è possibile visualizzarle anche tramite:
- Interfaccia di rete: Scopri come visualizzare un'interfaccia di rete.
- NSG: informazioni su come visualizzare un NSG.
Diagnosi tramite PowerShell
Nota
È consigliabile usare il modulo Azure Az PowerShell per interagire con Azure. Per iniziare, vedere Installare Azure PowerShell. Per informazioni su come eseguire la migrazione al modulo AZ PowerShell, vedere Eseguire la migrazione di Azure PowerShell da AzureRM ad Az.
È possibile eseguire i comandi seguenti in Azure Cloud Shell oppure in PowerShell dal computer. Azure Cloud Shell è una shell interattiva gratuita. Include strumenti comuni di Azure preinstallati e configurati per l'uso con l'account. Se si esegue PowerShell dal computer, è necessario il modulo Azure PowerShell versione 1.0.0 o successiva. Per trovare la versione installata, eseguire Get-Module -ListAvailable Az
nel computer. Se è necessario eseguire l'aggiornamento, vedere Installare e configurare Azure PowerShell. Se si esegue PowerShell in locale, è anche necessario eseguire Connect-AzAccount
per accedere ad Azure con un account con le autorizzazioni necessarie.
Ottenere le regole di sicurezza valide per un'interfaccia di rete con Get-AzEffectiveNetworkSecurityGroup. L'esempio seguente ottiene le regole di sicurezza valide per un'interfaccia di rete denominata vm-nic che si trova in un gruppo di risorse denominato test-rg:
$Params = @{
NetworkInterfaceName = "vm-nic"
ResourceGroupName = "test-rg"
}
Get-AzEffectiveNetworkSecurityGroup @Params
L'output viene restituito in formato json. Per informazioni sull'output, vedere Interpretare l'output del comando. L'output viene restituito solo se un NSG è associato all'interfaccia di rete, alla subnet in cui si trova l'interfaccia di rete o a entrambe. La VM deve essere in esecuzione. Una macchina virtuale potrebbe avere più interfacce di rete con gruppi di sicurezza di rete diversi applicati. Per risolvere il problema, eseguire il comando per ogni interfaccia di rete.
Se si verifica ancora un problema di connettività, vedere altre diagnosi e considerazioni.
Se si conosce solo il nome della macchina virtuale, usare i comandi seguenti per elencare tutti gli ID dell'interfaccia di rete collegati alla macchina virtuale.
$Params = @{
Name = "vm-1"
ResourceGroupName = "test-rg"
}
$VM = Get-AzVM @Params
$VM.NetworkProfile
L'output che si riceve è simile all'esempio seguente:
NetworkInterfaces
-----------------
{/subscriptions/<ID>/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkInterfaces/vm-nic
Nell'output precedente il nome dell'interfaccia di rete è vm-nic.
Diagnosi tramite l'interfaccia della riga di comando di Azure
Se si usano i comandi dell'interfaccia della riga di comando di Azure per completare le attività in questo articolo, eseguire i comandi in Azure Cloud Shell o tramite l'interfaccia della riga di comando di Azure dal computer in uso. Questo articolo richiede l'interfaccia della riga di comando di Azure 2.0.32 o versioni successive. Eseguire az --version
per trovare la versione installata. Se è necessario eseguire l'installazione o l'aggiornamento, vedere Installare l'interfaccia della riga di comando di Azure. Se si esegue l'interfaccia della riga di comando di Azure in locale, è anche necessario eseguire az login
e accedere ad Azure con un account con le autorizzazioni necessarie.
Ottenere le regole di sicurezza valide per un'interfaccia di rete con az network nic list-effective-nsg. L'esempio seguente ottiene le regole di sicurezza valide per un'interfaccia di rete denominata vm-nic che si trova in un gruppo di risorse denominato test-rg:
az network nic list-effective-nsg \
--name vm-nic \
--resource-group test-rg
L'output viene restituito in formato json. Per informazioni sull'output, vedere Interpretare l'output del comando. L'output viene restituito solo se un NSG è associato all'interfaccia di rete, alla subnet in cui si trova l'interfaccia di rete o a entrambe. La VM deve essere in esecuzione. Una macchina virtuale potrebbe avere più interfacce di rete con gruppi di sicurezza di rete diversi applicati. Per risolvere il problema, eseguire il comando per ogni interfaccia di rete.
Se si verifica ancora un problema di connettività, vedere altre diagnosi e considerazioni.
Se si conosce solo il nome della macchina virtuale, usare i comandi seguenti per elencare tutti gli ID dell'interfaccia di rete collegati alla macchina virtuale.
az vm show \
--name vm-1 \
--resource-group test-rg
Nell'output restituito verranno visualizzate informazioni analoghe all'esempio seguente:
"networkProfile": {
"additionalProperties": {},
"networkInterfaces": [
{
"additionalProperties": {},
"id": "/subscriptions/<ID>/resourceGroups/test-rg/providers/Microsoft.Network/networkInterfaces/vm-nic",
"primary": true,
"resourceGroup": "test-rg"
},
Nell'output precedente il nome dell'interfaccia di rete è vm-nic
Interpretare l'output del comando
Indipendentemente dall'uso di PowerShell o dell'interfaccia della riga di comando di Azure per diagnosticare il problema, l'output restituito contiene le informazioni seguenti:
- NetworkSecurityGroup: l'ID del gruppo di sicurezza di rete.
- Associazione: indica se il gruppo di sicurezza di rete è collegato a un networkInterface o a una subnet. Se lo stato dell'associazione del gruppo di sicurezza di rete cambia immediatamente prima di eseguire il comando, attendere alcuni secondi affinché l'output rifletta l'aggiornamento.
- EffectiveSecurityRules: una spiegazione di ogni proprietà dettagliata in Creare una regola di sicurezza. I nomi delle regole preceduti da defaultSecurityRules/ indicano regole di sicurezza predefinite che esistono in ogni NSG. I nomi delle regole preceduti da securityRules/ sono regole create dall'utente. Le regole che specificano un tag del servizio, come ad esempio Internet, VirtualNetwork e AzureLoadBalancer per le proprietà destinationAddressPrefix oppure sourceAddressPrefix, hanno anche valori per la proprietà expandedDestinationAddressPrefix. La proprietà expandedDestinationAddressPrefix include tutti i prefissi di indirizzo rappresentati dal tag di servizio.
Le regole duplicate vengono visualizzate nell'output quando un gruppo di sicurezza di rete è collegato sia all'interfaccia di rete che alla subnet. Le regole predefinite e le regole personalizzate condivise tra i gruppi di sicurezza di rete causano questi duplicati.
È la regola denominata defaultSecurityRules/DenyAllInBound a impedire la comunicazione in ingresso con la VM tramite la porta 80, da Internet, come descritto nello scenario. Nessun altra regola con priorità più alta (numero più basso) consente le comunicazioni in ingresso dalla porta 80 da Internet.
Risolvere un problema
È possibile diagnosticare il problema descritto nello scenario usando il portale di Azure, PowerShell o l'interfaccia della riga di comando di Azure. La soluzione consiste nel creare una regola di sicurezza di rete con le proprietà seguenti:
Proprietà | Valore |
---|---|
Origine | Qualsiasi |
Intervalli di porte di origine | Qualsiasi |
Destinazione | L'indirizzo IP della VM, un intervallo di indirizzi IP o tutti gli indirizzi nella subnet. |
Intervalli di porte di destinazione | 80 |
Protocollo | TCP |
Azione | Allow |
Priorità | 100 |
Nome | Allow-HTTP-All |
Dopo la creazione della regola, la porta 80 è consentita in ingresso da Internet perché la priorità è superiore alla regola DenyAllInBound predefinita. Se i gruppi di sicurezza di rete sono associati sia all'interfaccia di rete che alla subnet, creare la stessa regola in entrambi i gruppi di sicurezza di rete. Informazioni su come creare una regola di sicurezza.
Quando Azure elabora il traffico in ingresso, elabora le regole nel gruppo di sicurezza di rete associato alla subnet (se è presente un gruppo di sicurezza di rete associato) e quindi elabora le regole nel gruppo di sicurezza di rete associato all'interfaccia di rete. Se è presente un NSG associato all'interfaccia di rete e alla subnet, la porta deve essere aperta in entrambi gli NSG per consentire al traffico di raggiungere la macchina virtuale. Per semplificare la soluzione dei problemi di gestione e comunicazione, è consigliabile associare un NSG a una subnet, anziché a interfacce di rete singole. Se le macchine virtuali all'interno di una subnet necessitano di regole di sicurezza diverse, è possibile rendere le interfacce di rete membri di un gruppo di sicurezza dell'applicazione e specificare un gruppo di sicurezza dell'applicazione come origine e destinazione di una regola di sicurezza. Per altre informazioni, vedere Gruppi di sicurezza delle applicazioni.
Se si verificano ancora problemi di comunicazione, vedere Considerazioni e altre diagnosi.
Considerazioni
Durante la risoluzione dei problemi di connettività, tenere presente quanto segue:
Le regole di sicurezza predefinite bloccano l'accesso in ingresso da Internet e consentono solo il traffico in ingresso dalla rete virtuale. Per consentire il traffico in ingresso da Internet, aggiungere regole di sicurezza con una priorità più alta rispetto alle regole predefinite. Per altre informazioni, vedere Regole di sicurezza predefinite, o Creare una regola di sicurezza.
Per le reti virtuali con peering, per impostazione predefinita, il tag del servizio VIRTUAL_NETWORK si espande automaticamente per includere prefissi per le reti virtuali con peering. Per risolvere problemi correlati alle reti virtuali con peering, è possibile visualizzare i prefissi nell'elenco ExpandedAddressPrefix. Per altre informazioni, vedere Peering di rete virtuale e Tag di servizio.
Azure mostra solo regole di sicurezza valide per un'interfaccia di rete quando un gruppo di sicurezza di rete è associato all'interfaccia di rete o alla subnet della macchina virtuale. Inoltre, la macchina virtuale deve trovarsi nello stato in esecuzione.
Se l'interfaccia di rete o la subnet non dispone di un gruppo di sicurezza di rete associato, tutte le porte rimangono aperte per l'accesso in ingresso e in uscita quando una macchina virtuale ha un indirizzo IP pubblico. Questa configurazione consente l'accesso senza restrizioni da e verso qualsiasi posizione. Per proteggere la macchina virtuale, applicare un NSG alla subnet che ospita l'interfaccia di rete se dispone di un indirizzo IP pubblico.
Altre diagnosi
- Per eseguire un rapido test per determinare se il traffico in ingresso o in uscita da una macchina virtuale è consentito, usare la funzionalità Verifica flusso IP di Azure Network Watcher. Il controllo del flusso IP indica se il traffico è consentito o bloccato. Se viene bloccato, la verifica del flusso IP indica quale regola di sicurezza sta bloccando il traffico.
- Se non sono presenti regole di sicurezza che causano un errore di connettività di rete di una macchina virtuale, il problema potrebbe essere dovuto a:
- Software del firewall in esecuzione all'interno del sistema operativo della VM
- Route configurate per appliance virtuali o traffico locale. Il traffico Internet può essere reindirizzato alla rete locale tramite il tunneling forzato. Se si esegue il tunneling forzato del traffico Internet in un'appliance virtuale o in locale, potrebbe non essere possibile connettersi alla VM da Internet. Per informazioni su come diagnosticare i problemi di route che potrebbero impedire il flusso del traffico dalla macchina virtuale, vedere Diagnosticare un problema di routing del traffico di rete della macchina virtuale.
Passaggi successivi
- Informazioni su tutte le attività, le proprietà e le impostazioni per un gruppo di sicurezza di rete e per le regole di sicurezza.
- Informazioni sulle regole di sicurezza predefinite, i tag di servizio, e su come Azure elabora le regole di sicurezza per il traffico in ingresso e in uscita per una VM.