Condividi tramite


Diagnosticare un problema di routing di una macchina virtuale

Questo articolo illustra come diagnosticare i problemi di routing visualizzando le route valide per un'interfaccia di rete in una macchina virtuale. Azure crea automaticamente route predefinite per ogni subnet di rete virtuale. È possibile eseguire l'override di queste route predefinite definendo route personalizzate in una tabella di route e associando la tabella a una subnet. Le route valide per un'interfaccia di rete sono una combinazione di route predefinite di Azure, route personalizzate definite e tutte le route propagate dalla rete locale tramite un gateway VPN di Azure usando il protocollo BGP (Border Gateway Protocol). Se non si ha familiarità con reti virtuali, interfacce di rete o routing, vedere Panoramica della rete virtuale, Interfaccia di rete e Panoramica del routing.

Scenario

Si prova a connettersi a una macchina virtuale, ma la connessione non riesce. Per determinare perché non è possibile connettersi alla macchina virtuale, è possibile visualizzare le route 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 macchina virtuale per visualizzarne le route valide. In mancanza di una VM esistente, distribuire prima una VM Linux o Windows con cui completare le attività descritte in questo articolo. Gli esempi in questo articolo sono relativi a una macchina virtuale denominata vm-1 con un'interfaccia di rete denominata vm-1445. La macchina virtuale e l'interfaccia di rete si trovano in un gruppo di risorse denominato test-rg e si trovano 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

  1. Accedere al portale di Azure con un account Azure con le autorizzazioni necessarie.

  2. Nella parte superiore del portale di Azure immettere nella casella di ricerca il nome di una macchina virtuale in stato di esecuzione. Quando il nome della VM viene visualizzato nei risultati della ricerca, selezionarlo.

  3. Espandere la sezione Rete e selezionare Impostazioni di rete.

  4. Per selezionare l'interfaccia, selezionarne il nome.

    Screenshot dell'interfaccia di rete nelle impostazioni della macchina virtuale.

  5. Nell'interfaccia di rete espandere Guida. Selezionare Route valide.

    Screenshot delle rotte effettive dell'interfaccia di rete.

    Selezionare l'interfaccia di rete desiderata per visualizzare le route valide. Ogni interfaccia può appartenere a una subnet diversa, generando route univoche. L'esempio nell'immagine mostra le route predefinite create da Azure per ogni subnet. L'elenco include le route predefinite e potrebbe includere anche route aggiuntive. Le route possono derivare da funzionalità come il peering di rete virtuale o le connessioni alle reti locali tramite un gateway VPN di Azure. Per informazioni dettagliate sulle route, vedere Routing del traffico di rete virtuale. Se sono presenti molte route, usare l'opzione Download per salvarle come file di .csv per una revisione più semplice.

Anche se nei passaggi precedenti le route valide sono state visualizzate tramite la macchina virtuale, è possibile visualizzarle anche tramite:

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 route valide per un'interfaccia di rete con Get-AzEffectiveRouteTable. L'esempio seguente ottiene le route valide per un'interfaccia di rete denominata vm-1445 in un gruppo di risorse denominato test-rg:

$Params = @{
  NetworkInterfaceName = "vm-1445"
  ResourceGroupName    = "test-rg"
}
Get-AzEffectiveRouteTable @Params | Format-Table

Per comprendere le informazioni restituite nell'output, vedere Panoramica sul routing. L'output viene restituito solo se la macchina virtuale è nello stato di esecuzione. Se alla macchina virtuale sono collegate più interfacce di rete, è possibile esaminare le route valide per ognuna delle interfacce. Poiché ogni interfaccia di rete può trovarsi in una subnet diversa, ogni interfaccia di rete può avere route valide differenti. Se si verifica ancora un problema di comunicazione, vedere altre diagnosi e considerazioni.

Se si conosce il nome della macchina virtuale ma non il nome dell'interfaccia di rete, usare i comandi seguenti per restituire l'ID di tutte le interfacce di rete collegate 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/test-rg/providers/Microsoft.Network/networkInterfaces/vm-1445

Nell'output precedente il nome dell'interfaccia di rete è vm-1445.

Diagnosi tramite l'interfaccia della riga di comando di Azure

È possibile eseguire i comandi seguenti in Azure Cloud Shell oppure eseguendo l'interfaccia della riga di comando sul computer. 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 route valide per un'interfaccia di rete con az network nic show-effective-route-table. Il comando seguente ottiene le route valide per un'interfaccia di rete denominata vm-1445 che si trova in un gruppo di risorse denominato test-rg:

az network nic show-effective-route-table \
  --name vm-1445 \
  --resource-group test-rg

Per comprendere le informazioni restituite nell'output, vedere Panoramica sul routing. L'output viene restituito solo se la macchina virtuale è nello stato di esecuzione. Se alla macchina virtuale sono collegate più interfacce di rete, è possibile esaminare le route valide per ognuna delle interfacce. Poiché ogni interfaccia di rete può trovarsi in una subnet diversa, ogni interfaccia di rete può avere route valide differenti. Se si verifica ancora un problema di comunicazione, vedere altre diagnosi e considerazioni.

Se si conosce il nome della macchina virtuale ma non il nome dell'interfaccia di rete, usare i comandi seguenti per restituire l'ID di tutte le interfacce di rete collegate alla macchina virtuale:

az vm show \
  --name vm-1 \
  --resource-group test-rg

Risolvere un problema

La risoluzione dei problemi di routing è in genere costituita dalle procedure seguenti:

  • Aggiunta di una route personalizzata per eseguire l'override di una delle route predefinite di Azure. Informazioni su come aggiungere una route personalizzata.

  • Modifica o rimozione di una route personalizzata che potrebbe causare il routing a una posizione indesiderata. Informazioni su come modificare oppure eliminare una route personalizzata.

  • Assicurarsi che la tabella di route contenente le route personalizzate definite sia associata alla subnet in cui si trova l'interfaccia di rete. Informazioni su come associare una tabella di routing a una subnet.

  • Assicurarsi che i dispositivi come il gateway VPN di Azure o le appliance virtuali di rete distribuite siano operabili. Usare la funzionalità di diagnostica VPN di Network Watcher per individuare eventuali problemi con un gateway VPN di Azure.

Se si verificano ancora problemi di comunicazione, vedere Considerazioni e altre diagnosi.

Considerazioni

Durante la risoluzione dei problemi di comunicazione, tenere presente quanto segue:

  • Il routing usa la corrispondenza con prefisso più lunga (LPM) per determinare la route migliore tra le route di sistema, BGP e route personalizzate. Se più route condividono la stessa corrispondenza LPM, Azure ne seleziona uno in base all'ordine di priorità in Panoramica del routing. Le route valide mostrano solo le route con corrispondenza LPM, semplificando l'identificazione e la risoluzione dei problemi relativi alle route che influiscono sulla comunicazione delle macchine virtuali.

  • Se le route personalizzate indirizzano il traffico a un'appliance virtuale di rete (NVA) con Appliance virtuale come tipo hop successivo, verificare che l'inoltro IP dell'appliance virtuale di rete sia abilitato; in caso contrario, i pacchetti vengono eliminati. Informazioni su come abilitare l'inoltro IP per un'interfaccia di rete e configurare il sistema operativo o l'applicazione dell'appliance virtuale di rete per inoltrare il traffico.

  • Se viene creata una route a 0.0.0.0/0, tutto il traffico Internet in uscita viene instradato all'hop successivo specificato, ad esempio a un NVA o a un gateway VPN. La creazione di una route di questo tipo viene spesso definita tunneling forzato. Le connessioni remote che usano i protocolli RDP o SSH da Internet alla macchina virtuale potrebbero non funzionare con questa route, a seconda del modo in cui l'hop successivo gestisce il traffico. È possibile abilitare il tunneling forzato:

    • Quando si usa la VPN da sito a sito, creando una route con un tipo di hop successivo Gateway VPN. Altre informazioni sulla configurazione del tunneling forzato.
    • Se una route predefinita 0.0.0.0/0 viene annunciata su BGP tramite un gateway di rete virtuale quando si usa una VPN da sito a sito o un circuito ExpressRoute. Altre informazioni sull'uso di BGP con una VPN da sito a sito o con ExpressRoute.
  • Per il corretto funzionamento del traffico peering di rete virtuale deve esistere una route di sistema con un tipo di hop successivo Peering reti virtuali per l'intervallo di prefissi della rete virtuale con peering. Se non esiste una route di questo tipo e il collegamento per il peering di rete virtuale è Connesso:

  • Anche se Azure assegna route predefinite a ogni sua interfaccia di rete, se alla macchina virtuale sono collegate più interfacce di rete solo all'interfaccia di rete primaria vengono assegnati un gateway o una route predefinita (0.0.0.0/0), all'interno del sistema operativo della VM. Informazioni su come creare una route predefinita per le interfacce di rete secondarie collegate a una VM Windows o Linux. Altre informazioni sulle interfacce di rete primarie e secondarie.

Altre diagnosi

  • Per eseguire un rapido test per determinare il tipo di hop successivo per il traffico destinato a una posizione, usare la funzionalità Hop successivo di Azure Network Watcher. "Next hop indica il tipo di hop successivo per il traffico destinato a una destinazione specificata."

  • Se non sono presenti route che causano un errore di comunicazione di rete vm, il problema potrebbe essere dovuto al software firewall in esecuzione all'interno del sistema operativo della macchina virtuale

  • Se si forza il tunneling del traffico a un dispositivo locale tramite un gateway VPN o un'appliance virtuale di rete, potrebbe essere impossibile connettersi a una macchina virtuale da Internet, a seconda del modo in cui si è configurato il routing per i dispositivi. Verificare che il routing configurato per il dispositivo instrada il traffico a un indirizzo IP pubblico o privato per la macchina virtuale.

  • Usare la funzionalità di risoluzione dei problemi di connessione di Network Watcher per determinare le cause associate a routing, filtro e sistema operativo dei problemi di comunicazione in uscita.

Passaggi successivi