Risolvere i problemi relativi ai gruppi di sicurezza di rete tramite Azure PowerShellTroubleshoot Network Security Groups using Azure PowerShell

Se sono stati configurati gruppi di sicurezza di rete nella macchina virtuale (VM) e si verificano problemi di connettività alla VM, questo articolo offre una panoramica delle funzionalità di diagnostica per i gruppi di sicurezza di rete per risolvere il problema.If you configured Network Security Groups (NSGs) on your virtual machine (VM) and are experiencing VM connectivity issues, this article provides an overview of diagnostics capabilities for NSGs to help troubleshoot further.

I gruppi di sicurezza di rete consentono di controllare i tipi di traffico che scorrono dentro e fuori le macchine virtuali (VM).NSGs enable you to control the types of traffic that flow in and out of your virtual machines (VMs). I gruppi di sicurezza di rete possono essere applicati alle subnet in una rete virtuale di Azure, nelle interfacce di rete o in entrambe.NSGs can be applied to subnets in an Azure Virtual Network (VNet), network interfaces (NIC), or both. Le regole effettive applicate a un'interfaccia di rete (NIC) sono un'aggregazione delle regole esistenti nei gruppi di sicurezza di rete applicati a un'interfaccia di rete e alla subnet a cui è connessa.The effective rules applied to a NIC are an aggregation of the rules that exist in the NSGs applied to a NIC and the subnet it is connected to. Talvolta le regole nei gruppi di sicurezza di rete possono essere in conflitto tra loro e influire sulla connettività di rete della VM.Rules across these NSGs can sometimes conflict with each other and impact a VM's network connectivity.

È possibile visualizzare tutte le regole di sicurezza effettive dai gruppi di sicurezza di rete, così come vengono applicate nelle interfacce di rete della VM.You can view all the effective security rules from your NSGs, as applied on your VM's NICs. Questo articolo illustra come risolvere i problemi di connettività delle VM usando queste regole nel modello di distribuzione Azure Resource Manager.This article shows how to troubleshoot VM connectivity issues using these rules in the Azure Resource Manager deployment model. Se si ha scarsa dimestichezza con i concetti di rete virtuale e gruppo di sicurezza di rete, vedere gli articoli generali sulle reti virtuali e sui gruppi di sicurezza di rete.If you're not familiar with VNet and NSG concepts, read the Virtual network and Network security groups overview articles.

Uso di regole di sicurezza effettive per risolvere i problemi di flusso del traffico delle VMUsing Effective Security Rules to troubleshoot VM traffic flow

Lo scenario seguente è un esempio di un problema di connessione comune:The scenario that follows is an example of a common connection problem:

Una macchina virtuale denominata VM1 fa parte di una subnet denominata Subnet1 in una rete virtuale denominata WestUS-VNet1.A VM named VM1 is part of a subnet named Subnet1 within a VNet named WestUS-VNet1. Un tentativo di connettersi alla VM con RDP su porta TCP 3389 ha esito negativo.An attempt to connect to the VM using RDP over TCP port 3389 fails. I gruppi di sicurezza di rete vengono applicati sia all'interfaccia di rete VM1-NIC1 che alla subnet Subnet1.NSGs are applied at both the NIC VM1-NIC1 and the subnet Subnet1. Il traffico verso la porta TCP 3389 è consentito nel gruppo di sicurezza di rete associato all'interfaccia di rete VM1 NIC1, tuttavia il comando ping TCP per VM1 della porta 3389 ha esito negativo.Traffic to TCP port 3389 is allowed in the NSG associated with the network interface VM1-NIC1, however TCP ping to VM1's port 3389 fails.

Sebbene in questo esempio si usi la porta TCP 3389, è possibile attenersi alla procedura seguente per determinare gli errori di connessione in ingresso e in uscita su qualsiasi porta.While this example uses TCP port 3389, the following steps can be used to determine inbound and outbound connection failures over any port.

Procedura di risoluzione dei problemi dettagliataDetailed Troubleshooting Steps

Completare i passaggi seguenti per risolvere i problemi dei gruppi di sicurezza di rete per una VM:Complete the following steps to troubleshoot NSGs for a VM:

  1. Avviare una sessione di Azure PowerShell e accedere ad Azure.Start an Azure PowerShell session and login to Azure. Se non si ha dimestichezza con Azure PowerShell, leggere l'articolo Come installare e configurare Azure PowerShell .If you're not familiar with using Azure PowerShell, read the How to install and configure Azure PowerShell article.
  2. Immettere il comando seguente per restituire tutte le regole dei gruppi di sicurezza di rete applicate a un'interfaccia di rete denominata VM1 NIC1 nel gruppo di risorse RG1:Enter the following command to return all NSG rules applied to a NIC named VM1-NIC1 in the resource group RG1:

     Get-AzureRmEffectiveNetworkSecurityGroup -NetworkInterfaceName VM1-NIC1 -ResourceGroupName RG1
    

    Suggerimento

    Se non si conosce il nome di un'interfaccia di rete, immettere il comando seguente per recuperare i nomi di tutte le interfacce di rete in un gruppo di risorse:If you don't know the name of a NIC, enter the following command to retrieve the names of all NICs in a resource group:

    Get-AzureRmNetworkInterface -ResourceGroupName RG1 | Format-Table Name

    Il testo riportato di seguito è un esempio delle regole valide restituite per l'interfaccia di rete VM1 NIC1 :The following text is a sample of the effective rules output returned for the VM1-NIC1 NIC:

     NetworkSecurityGroup   : {
                                "Id": "/subscriptions/[Subscription ID]/resourceGroups/RG1/providers/Microsoft.Network/networkSecurityGroups/VM1-NIC1-NSG"
                              }
     Association            : {
                                "NetworkInterface": {
                                  "Id": "/subscriptions/[Subscription ID]/resourceGroups/RG1/providers/Microsoft.Network/networkInterfaces/VM1-NIC1"
                                }
                              }
     EffectiveSecurityRules : [
                              {
                              "Name": "securityRules/allowRDP",
                              "Protocol": "Tcp",
                              "SourcePortRange": "0-65535",
                              "DestinationPortRange": "3389-3389",
                              "SourceAddressPrefix": "Internet",
                              "DestinationAddressPrefix": "0.0.0.0/0",
                              "ExpandedSourceAddressPrefix": [… ],
                              "ExpandedDestinationAddressPrefix": [],
                              "Access": "Allow",
                              "Priority": 1000,
                              "Direction": "Inbound"
                              },
                              {
                              "Name": "defaultSecurityRules/AllowVnetInBound",
                              "Protocol": "All",
                              "SourcePortRange": "0-65535",
                              "DestinationPortRange": "0-65535",
                              "SourceAddressPrefix": "VirtualNetwork",
                              "DestinationAddressPrefix": "VirtualNetwork",
                              "ExpandedSourceAddressPrefix": [
                               "10.9.0.0/16",
                               "168.63.129.16/32",
                               "10.0.0.0/16",
                               "10.1.0.0/16"
                               ],
                              "ExpandedDestinationAddressPrefix": [
                               "10.9.0.0/16",
                               "168.63.129.16/32",
                               "10.0.0.0/16",
                               "10.1.0.0/16"
                               ],
                               "Access": "Allow",
                               "Priority": 65000,
                               "Direction": "Inbound"
                               },…
                      ]
    
     NetworkSecurityGroup   : {
                                "Id": 
                              "/subscriptions/[Subscription ID]/resourceGroups/RG1/providers/Microsoft.Network/networkSecurityGroups/Subnet1-NSG"
                              }
     Association            : {
                                "Subnet": {
                                  "Id": 
                              "/subscriptions/[Subscription ID]/resourceGroups/RG1/providers/Microsoft.Network/virtualNetworks/WestUS-VNet1/subnets/Subnet1"
                              }
                              }
     EffectiveSecurityRules : [
                              {
                             "Name": "securityRules/denyRDP",
                             "Protocol": "Tcp",
                             "SourcePortRange": "0-65535",
                             "DestinationPortRange": "3389-3389",
                             "SourceAddressPrefix": "Internet",
                             "DestinationAddressPrefix": "0.0.0.0/0",
                             "ExpandedSourceAddressPrefix": [
                                ... ],
                             "ExpandedDestinationAddressPrefix": [],
                             "Access": "Deny",
                             "Priority": 1000,
                             "Direction": "Inbound"
                             },
                             {
                             "Name": "defaultSecurityRules/AllowVnetInBound",
                             "Protocol": "All",
                             "SourcePortRange": "0-65535",
                             "DestinationPortRange": "0-65535",
                             "SourceAddressPrefix": "VirtualNetwork",
                             "DestinationAddressPrefix": "VirtualNetwork",
                             "ExpandedSourceAddressPrefix": [
                             "10.9.0.0/16",
                             "168.63.129.16/32",
                             "10.0.0.0/16",
                             "10.1.0.0/16"
                             ],
                             "ExpandedDestinationAddressPrefix": [
                             "10.9.0.0/16",
                             "168.63.129.16/32",
                             "10.0.0.0/16",
                             "10.1.0.0/16"
                             ],
                             "Access": "Allow",
                             "Priority": 65000,
                             "Direction": "Inbound"
                             },...
                             ]
    

    Tenere presenti le seguenti informazioni nell'output:Note the following information in the output:

    • Esistono due sezioni in NetworkSecurityGroup: una è associata a una subnet (Subnet1), l'altra a un'interfaccia di rete (VM1-NIC1).There are two NetworkSecurityGroup sections: One is associated with a subnet (Subnet1) and one is associated with a NIC (VM1-NIC1). In questo esempio, è stato applicato un gruppo di sicurezza di rete a ciascuna.In this example, an NSG has been applied to each.
    • Associazione mostra la risorsa (subnet o interfaccia di rete) a cui è associato un determinato gruppo di sicurezza di rete.Association shows the resource (subnet or NIC) a given NSG is associated with. Se la risorsa del gruppo di sicurezza di rete viene spostata oppure se viene eliminata la sua associazione appena prima di eseguire il comando, potrebbe essere necessario attendere qualche secondo prima che la modifica sia effettiva nell'output del comando.If the NSG resource is moved/disassociated immediately before running this command, you may need to wait a few seconds for the change to reflect in the command output.
    • I nomi delle regole precedute da defaultSecurityRules: quando viene creato un gruppo di risorse di rete, vengono create varie regole predefinite al suo interno.The rule names that are prefaced with defaultSecurityRules: When an NSG is created, several default security rules are created within it. Le regole predefinite non possono essere rimosse, tuttavia possono essere sostituite con regole dalla priorità più elevata.Default rules can't be removed, but they can be overridden with higher priority rules. Per ulteriori informazioni sulle regole di sicurezza predefinite dei gruppi di sicurezza di rete, leggere l'articolo Panoramica dei gruppi di sicurezza di rete .Read the NSG overview article to learn more about NSG default security rules.
    • ExpandedAddressPrefix espande i prefissi degli indirizzi per i tag predefiniti dei gruppi di sicurezza di rete.ExpandedAddressPrefix expands the address prefixes for NSG default tags. I tag rappresentano più prefissi di indirizzi.Tags represent multiple address prefixes. L'espansione dei tag può essere utile per la risoluzione dei problemi di connettività delle VM da e verso prefissi di indirizzi specifici.Expansion of the tags can be useful when troubleshooting VM connectivity to/from specific address prefixes. Ad esempio, con il peering reti virtuali, il tag VIRTUAL_NETWORK viene espanso per visualizzare i prefissi delle reti virtuali con peering nell'output precedente.For example, with VNET peering, VIRTUAL_NETWORK tag expands to show peered VNet prefixes in the previous output.

      Nota

      Il comando mostra regole efficaci solo se un gruppo di sicurezza di rete è associato a una subnet, a un'interfaccia di rete o a entrambe.The command only shows effective rules if an NSG is associated with either a subnet, a NIC, or both. Una VM può avere diverse interfacce di rete a cui sono applicati vari gruppi di sicurezza di rete.A VM may have multiple NICs with different NSGs applied. Per risolvere il problema, eseguire il comando per ogni interfaccia di rete.When troubleshooting, run the command for each NIC.

  3. Per semplificare l'applicazione di filtri a grandi quantità di regole per i gruppi di sicurezza di rete, immettere i seguenti comandi per risolvere il problema:To ease filtering over larger number of NSG rules, enter the following commands to troubleshoot further:

     $NSGs = Get-AzureRmEffectiveNetworkSecurityGroup -NetworkInterfaceName VM1-NIC1 -ResourceGroupName RG1
     $NSGs.EffectiveSecurityRules | Sort-Object Direction, Access, Priority | Out-GridView
    

    Viene applicato un filtro per il traffico RDP (porta TCP 3389) alla visualizzazione griglia, come illustrato nell'immagine seguente:A filter for RDP traffic (TCP port 3389), is applied to the grid view, as shown in the following picture:

    Elenco di regole

  4. Come si può vedere, sono presenti regole sia di tipo "allow" che di tipo "deny" per RDP.As you can see in the grid view, there are both allow and deny rules for RDP. L'output del passaggio 2 mostra che la regola DenyRDP si trova nel gruppo di sicurezza di rete applicato alla subnet.The output from step 2 shows that the DenyRDP rule is in the NSG applied to the subnet. Per le regole in entrata, vengono elaborati per primi i gruppi di sicurezza di rete applicati alla subnet.For inbound rules, NSGs applied to the subnet are processed first. Se viene trovata una corrispondenza, il gruppo di sicurezza di rete applicato all'interfaccia di rete non viene elaborato.If a match is found, the NSG applied to the network interface is not processed. In questo caso, la regola DenyRDP della subnet blocca RDP verso la VM (VM1).In this case, the DenyRDP rule from the subnet blocks RDP to the VM (VM1).

    Nota

    A una VM potrebbero essere collegate più interfacce di rete.A VM may have multiple NICs attached to it. Ognuna può essere collegata a una subnet diversa.Each may be connected to a different subnet. Dal momento che i comandi nei passaggi precedenti vengono eseguiti su un'interfaccia di rete, è importante assicurarsi di specificare l'interfaccia di rete su cui si verifica l'errore di connettività.Since the commands in the previous steps are run against a NIC, it's important to ensure that you specify the NIC you're having the connectivity failure to. Se non si è certi, è sempre possibile eseguire i comandi su ogni interfaccia di rete collegata alla VM.If you're not sure, you can always run the commands against each NIC attached to the VM.

  5. Per effettuare una connessione RDP a VM1, modificare la regola Deny RDP (3389) in Allow RDP(3389) nel gruppo di sicurezza di rete Subnet1-NSG.To RDP into VM1, change the Deny RDP (3389) rule to Allow RDP(3389) in the Subnet1-NSG NSG. Verificare che la porta TCP 3389 sia aperta aprendo una connessione RDP alla VM o usando lo strumento PsPing.Confirm that TCP port 3389 is open by opening an RDP connection to the VM or using the PsPing tool. Per trovare ulteriori informazioni su PsPing, consultare la pagina di download di PsPingYou can learn more about PsPing by reading the PsPing download page

    È possibile rimuovere le regole da un gruppo di sicurezza di rete usando le informazioni nell'output dal seguente comando:You can or remove rules from an NSG by using the information in the output from the following command:

     Get-Help *-AzureRmNetworkSecurityRuleConfig
    

ConsiderazioniConsiderations

Durante la risoluzione dei problemi di connettività, tenere presente quanto segue:Consider the following points when troubleshooting connectivity problems:

  • Le regole predefinite dei gruppi di sicurezza di rete bloccano l'accesso in ingresso da Internet e consentono solo il traffico di rete in ingresso nella rete virtuale.Default NSG rules will block inbound access from the internet and only permit VNet inbound traffic. È necessario aggiungere regole in modo esplicito per consentire l'accesso in ingresso da Internet, come richiesto.Rules should be explicitly added to allow inbound access from Internet, as required.
  • Se non sono presenti regole dei gruppi di sicurezza di rete che causano un errore di connettività della VM, il problema potrebbe essere dovuto a:If there are no NSG security rules causing a VM’s network connectivity to fail, the problem may be due to:
    • Software del firewall in esecuzione all'interno del sistema operativo della VMFirewall software running within the VM's operating system
    • Route configurate per appliance virtuali o traffico locale.Routes configured for virtual appliances or on-premises traffic. Il traffico Internet può essere reindirizzato al traffico locale tramite tunneling forzato.Internet traffic can be redirected to on-premises via forced-tunneling. Una connessione RDP o SSH da Internet alla VM potrebbe non funzionare con questa impostazione, a seconda di come l'hardware di rete locale gestisce questo traffico.An RDP/SSH connection from the Internet to your VM may not work with this setting, depending on how the on-premises network hardware handles this traffic. Per informazioni su come diagnosticare problemi di route che potrebbero impedire il flusso del traffico in ingresso e in uscita dalla VM, vedere l'articolo Troubleshooting Routes (Risoluzione dei problemi di route).Read the Troubleshooting Routes article to learn how to diagnose route problems that may be impeding the flow of traffic in and out of the VM.
  • Se si hanno reti virtuali con peering, il tag VIRTUAL_NETWORK si espanderà automaticamente per impostazione predefinita in modo da includere i prefissi delle reti virtuali con peering.If you have peered VNets, by default, the VIRTUAL_NETWORK tag will automatically expand to include prefixes for peered VNets. È possibile vedere questi prefissi nell'elenco ExpandedAddressPrefix per risolvere eventuali problemi legati alla connettività di peering della rete virtuale.You can view these prefixes in the ExpandedAddressPrefix list, to troubleshoot any issues related to VNet peering connectivity.
  • Le regole di sicurezza effettive vengono visualizzate solo se c'è un gruppo di sicurezza di rete associato all'interfaccia di rete o alla subnet della VM.Effective security rules are only shown if there is an NSG associated with the VM’s NIC and or subnet.
  • Se non esistono gruppi di sicurezza di rete associati all'interfaccia di rete o alla subnet e si dispone di un indirizzo IP pubblico assegnato alla VM, tutte le porte saranno aperte per l'accesso in ingresso e in uscita.If there are no NSGs associated with the NIC or subnet and you have a public IP address assigned to your VM, all ports will be open for inbound and outbound access. Se la VM ha un indirizzo IP pubblico, è consigliabile applicare gruppi di sicurezza di rete all'interfaccia di rete o alla subnet.If the VM has a public IP address, applying NSGs to the NIC or subnet is strongly recommended.