Controllare se il traffico è consentito o negato con la verifica del flusso IP, una funzionalità di Azure Network WatcherCheck if traffic is allowed or denied with IP flow verify a component of Azure Network Watcher

La verifica del flusso IP è una funzionalità di Network Watcher che consente di verificare se il traffico da o verso una macchina virtuale è consentito o negato.IP flow verify is a feature of Network Watcher that allows you to verify if traffic is allowed to or from a virtual machine. La convalida può essere eseguita per il traffico in ingresso o in uscita.The validation can be run for incoming or outgoing traffic. Questo scenario è utile per stabilire se una macchina virtuale può comunicare con una risorsa esterna o back-end.This scenario is useful to get a current state of whether a virtual machine can talk to an external resource or backend. La funzionalità può essere usata per verificare se le regole del gruppo di sicurezza di rete sono configurate correttamente e per risolvere i problemi dei flussi bloccati da tali regole.IP flow verify can be used to verify if your Network Security Group (NSG) rules are properly configured and troubleshoot flows that are being blocked by NSG rules. La verifica del flusso IP consente inoltre di verificare che il traffico che si vuole bloccare sia correttamente bloccato dal gruppo di sicurezza di rete.Another reason for using IP flow verify is to ensure traffic that you want blocked is being blocked properly by the NSG.

Prima di iniziareBefore you begin

ARMclient viene usato per chiamare l'API REST con PowerShell.ARMclient is used to call the REST API using PowerShell. ARMClient è reperibile in Chocolatey in ARMClient on Chocolatey (ARMClient in Chocolatey)ARMClient is found on chocolatey at ARMClient on Chocolatey

Questo scenario presuppone il completamento dei passaggi descritti in Creare un servizio Network Watcher per creare un servizio Network Watcher.This scenario assumes you have already followed the steps in Create a Network Watcher to create a Network Watcher.

ScenarioScenario

Questo scenario usa la verifica del flusso IP per verificare se una macchina virtuale può comunicare con un altro computer sulla porta 443.This scenario uses IP flow Verify to verify if a virtual machine can talk to another machine over port 443. Se il traffico viene negato, restituisce la regola di sicurezza che nega il traffico.If the traffic is denied, it returns the security rule that is denying that traffic. Per altre informazioni sulla verifica del flusso IP, leggere la panoramica sulla verifica del flusso IPTo learn more about IP flow Verify, visit IP flow verify overview

In questo scenario:In this scenario, you:

  • Recuperare una macchina virtualeRetrieve a virtual machine
  • Chiamare la verifica del flusso IPCall IP flow verify
  • Verificare i risultatiVerify results

Accedere con ARMClientLog in with ARMClient

armclient login

Recuperare una macchina virtualeRetrieve a virtual machine

Eseguire lo script seguente per restituire la macchina virtuale.Run the following script to return a virtual machine. Il codice seguente richiede valori per le variabili:The following code needs values for the variables:

  • subscriptionId: l'ID sottoscrizione da usare.subscriptionId - The subscription Id to use.
  • resourceGroupName: il nome di un gruppo di risorse contenente le macchine virtuali.resourceGroupName - The name of a resource group that contains virtual machines.
$subscriptionId = "<subscription id>"
$resourceGroupName = "<resource group name>"

armclient get https://management.azure.com/subscriptions/${subscriptionId}/ResourceGroups/${resourceGroupName}/providers/Microsoft.Compute/virtualMachines?api-version=2015-05-01-preview

L'informazione necessaria è l'ID, disponibile nel tipo Microsoft.Compute/virtualMachines.The information that is needed is the id under the type Microsoft.Compute/virtualMachines. I risultati dovrebbero essere simili all'esempio di codice seguente:The results should be similar to the following code sample:

...,
        "networkProfile": {
          "networkInterfaces": [
            {
              "id": "/subscriptions/{00000000-0000-0000-0000-000000000000}/resourceGroups/ContosoExampleRG/providers/Microsoft
.Network/networkInterfaces/contosovm842"
            }
          ]
        },
        "provisioningState": "Succeeded"
      },
      "resources": [
        {
          "id": "/subscriptions/{00000000-0000-0000-0000-000000000000}/resourceGroups/ContosoExampleRG/providers/Microsoft.Com
pute/virtualMachines/ContosoVM/extensions/CustomScriptExtension"
        }
      ],
      "type": "Microsoft.Compute/virtualMachines",
      "location": "westcentralus",
      "id": "/subscriptions/{00000000-0000-0000-0000-000000000000}/resourceGroups/ContosoExampleRG/providers/Microsoft.Compute
/virtualMachines/ContosoVM",
      "name": "ContosoVM"
    }
  ]
}

Chiamare la verifica del flusso IPCall IP flow Verify

L'esempio seguente crea una richiesta per verificare il traffico per una macchina virtuale specificata.The following example creates a request to verify the traffic for a specified virtual machine. La risposta restituita indica se il traffico è consentito o negato.The response returns if the traffic is allowed or if the traffic is denied. Se il traffico viene negato, restituisce anche la regola che blocca il traffico.If traffic is denied it also returns what rule blocks the traffic.

Nota

La verifica del flusso IP richiede che la risorsa VM sia allocata.IP flow verify requires that the VM resource is allocated.

Lo script richiede l'ID risorsa di una macchina virtuale e di una scheda di interfaccia di rete nella macchina virtuale.The script requires the resource Id of a virtual machine and of a network interface card on the virtual machine. Questi valori sono disponibili nell'output precedente.These values are provided by the preceding output.

Importante

Per tutte le chiamate REST di Network Watcher, è il nome del gruppo di risorse nell'URI della richiesta che contiene l'istanza di Network Watcher, non le risorse su cui si eseguono le azioni di diagnostica.For all Network Watcher REST calls the resource group name in the request URI is the one that contains the Network Watcher instance, not the resources you are performing the diagnostic actions on.

$subscriptionId = "<subscription id>"
$resourceGroupName = "<resource group name>"
$networkWatcherName = "<network watcher name>"
$vmName = "<vm name>"
$vmNICName = "<vm NIC name>"
$direction = "<direction of traffic>" # Examples are: Inbound or Outbound
$localIP = "<source IP>"
$localPort = "<source Port>"
$remoteIP = "<destination IP>"
$remotePort = "<destination Port>" # Examples are: 80, or 80-120
$protocol = "<UDP, TCP or *>"
$targetUri = "<uri of target resource>" # Example: /subscriptions/${subscriptionId}/resourceGroups/${resourceGroupName}/providers/Microsoft.compute/virtualMachine/${vmName}
$targetNic = "<uri of target nic resource>" # Example: /subscriptions/${subscriptionId}/resourceGroups/${resourceGroupName}/providers/Microsoft.Network/networkInterfaces/${vmNICName}

$requestBody = @"
{
    'targetResourceId':  '$targetUri',
    'direction':  '$direction',
    'protocol':  '$protocol',
    'localPort':  '$localPort',
    'remotePort':  '$remotePort',
    'localIPAddress':  '$localIP',
    'remoteIPAddress':  '$remoteIP',
    'targetNICResourceId':  '$targetNic'
}
"@

armclient post "https://management.azure.com/subscriptions/${subscriptionId}/ResourceGroups/${resourceGroupName}/providers/Microsoft.Network/networkWatchers/${networkWatcherName}/ipFlowVerify?api-version=2016-12-01" $requestBody -verbose

Informazioni sui risultatiUnderstanding the results

La risposta che viene restituita indica se il traffico è consentito o negato.The response you get back tells you whether the traffic is allowed or denied. La risposta ha un aspetto simile a uno degli esempi seguenti:The response looks like one of the following examples:

ConsentitoAllowed

{
  "access": "Allow",
  "ruleName": "defaultSecurityRules/AllowInternetOutBound"
}

NegatoDenied

{
  "access": "Deny",
  "ruleName": "defaultSecurityRules/DefaultInboundDenyAll"
}

Passaggi successiviNext steps

Se il traffico risulta bloccato e non dovrebbe esserlo, vedere Gestire gruppi di sicurezza di rete per informazioni al riguardo.If traffic is being blocked and it should not be, see Manage Network Security Groups to learn more about Network Security Groups.