Risolvere i problemi relativi alle connessioni in uscita con PowerShell
Questo articolo illustra come usare la funzionalità di risoluzione dei problemi di connessione di Azure Network Watcher per diagnosticare e risolvere i problemi di connettività. Per altre informazioni sulla risoluzione dei problemi di connessione, vedere Panoramica della risoluzione dei problemi di connessione.
Prerequisiti
Un account Azure con una sottoscrizione attiva. Creare un account gratuitamente.
Network Watcher abilitato nell'area della macchina virtuale (VM) che si vuole risolvere i problemi. Per impostazione predefinita, Azure abilita Network Watcher in un'area quando si crea una rete virtuale. Per altre informazioni, vedere Abilitare o disabilitare Azure Network Watcher.
Una macchina virtuale con l'estensione macchina virtuale dell'agente Network Watcher installata e dispone della connettività TCP in uscita seguente:
- a 169.254.169.254 sulla porta 80
- a 168.63.129.16 sulla porta 8037
Una seconda macchina virtuale con connettività TCP in ingresso dalla versione 168.63.129.16 sulla porta testata (per il test di diagnostica dello scanner di porta).
Azure Cloud Shell o Azure PowerShell.
I passaggi descritti in questo articolo eseguono i cmdlet di Azure PowerShell 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 dal portale di Azure.
È anche possibile installare Azure PowerShell in locale per eseguire i cmdlet. In questo articolo si presuppone che il modulo Azure PowerShell sia disponibile. Per altre informazioni, vedere Installare Azure PowerShell. Per trovare la versione installata, eseguire
Get-InstalledModule -Name Az
. Se si esegue PowerShell in locale, accedere ad Azure usando il cmdlet Connect-AzAccount.
Nota
- Per installare l'estensione in una macchina virtuale Windows, vedere Estensione macchina virtuale dell'agente Network Watcher per Windows.
- Per installare l'estensione in una macchina virtuale Linux, vedere Estensione macchina virtuale dell'agente Network Watcher per Linux.
- Per aggiornare un'estensione già installata, vedere Aggiornare l'estensione macchina virtuale dell'agente Network Watcher alla versione più recente.
Controllare la connettività a una macchina virtuale
Questo esempio controlla una connessione a una macchina virtuale di destinazione sulla porta 80. Questo esempio presuppone che Network Watcher sia abilitato nell'area che contiene la macchina virtuale di origine.
Esempio
$rgName = "ContosoRG"
$sourceVMName = "MultiTierApp0"
$destVMName = "Database0"
$RG = Get-AzResourceGroup -Name $rgName
$VM1 = Get-AzVM -ResourceGroupName $rgName | Where-Object -Property Name -EQ $sourceVMName
$VM2 = Get-AzVM -ResourceGroupName $rgName | Where-Object -Property Name -EQ $destVMName
$networkWatcher = Get-AzNetworkWatcher | Where-Object -Property Location -EQ -Value $VM1.Location
Test-AzNetworkWatcherConnectivity -NetworkWatcher $networkWatcher -SourceId $VM1.Id -DestinationId $VM2.Id -DestinationPort 80
Response
La risposta seguente è relativa all'esempio precedente. In questa risposta ConnectionStatus
è Unreachable. Si noti che tutti i probe inviati presentano un errore. Si è verificato un problema di connettività nell'appliance virtuale a causa di un valore NetworkSecurityRule
configurato dall'utente per bloccare il traffico in ingresso sulla porta 80, denominato UserRule_Port80. Queste informazioni possono essere usate per analizzare i problemi di connessione.
ConnectionStatus : Unreachable
AvgLatencyInMs :
MinLatencyInMs :
MaxLatencyInMs :
ProbesSent : 100
ProbesFailed : 100
Hops : [
{
"Type": "Source",
"Id": "c5222ea0-3213-4f85-a642-cee63217c2f3",
"Address": "10.1.1.4",
"ResourceId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGrou
ps/ContosoRG/providers/Microsoft.Network/networkInterfaces/appNic0/ipConfigurat
ions/ipconfig1",
"NextHopIds": [
"9283a9f0-cc5e-4239-8f5e-ae0f3c19fbaa"
],
"Issues": []
},
{
"Type": "VirtualAppliance",
"Id": "9283a9f0-cc5e-4239-8f5e-ae0f3c19fbaa",
"Address": "10.1.2.4",
"ResourceId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGrou
ps/ContosoRG/providers/Microsoft.Network/networkInterfaces/fwNic/ipConfiguratio
ns/ipconfig1",
"NextHopIds": [
"0f1500cd-c512-4d43-b431-7267e4e67017"
],
"Issues": []
},
{
"Type": "VirtualAppliance",
"Id": "0f1500cd-c512-4d43-b431-7267e4e67017",
"Address": "10.1.3.4",
"ResourceId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGrou
ps/ContosoRG/providers/Microsoft.Network/networkInterfaces/auNic/ipConfiguratio
ns/ipconfig1",
"NextHopIds": [
"a88940f8-5fbe-40da-8d99-1dee89240f64"
],
"Issues": [
{
"Origin": "Outbound",
"Severity": "Error",
"Type": "NetworkSecurityRule",
"Context": [
{
"key": "RuleName",
"value": "UserRule_Port80"
}
]
}
]
},
{
"Type": "VnetLocal",
"Id": "a88940f8-5fbe-40da-8d99-1dee89240f64",
"Address": "10.1.4.4",
"ResourceId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGrou
ps/ContosoRG/providers/Microsoft.Network/networkInterfaces/dbNic0/ipConfigurati
ons/ipconfig1",
"NextHopIds": [],
"Issues": []
}
]
Problemi relativi alla convalida del routing
L'esempio verifica la connettività tra una macchina virtuale e un endpoint remoto. Questo esempio presuppone che Network Watcher sia abilitato nell'area che contiene la macchina virtuale di origine.
Esempio
$rgName = "ContosoRG"
$sourceVMName = "MultiTierApp0"
$RG = Get-AzResourceGroup -Name $rgName
$VM1 = Get-AzVM -ResourceGroupName $rgName | Where-Object -Property Name -EQ $sourceVMName
$networkWatcher = Get-AzNetworkWatcher | Where-Object -Property Location -EQ -Value $VM1.Location
Test-AzNetworkWatcherConnectivity -NetworkWatcher $networkWatcher -SourceId $VM1.Id -DestinationAddress 13.107.21.200 -DestinationPort 80
Response
Nell'esempio seguente ConnectionStatus
è Unreachable. I dettagli relativi a Hops
sotto Issues
indicano che il traffico è stato bloccato a causa di un valore UserDefinedRoute
.
ConnectionStatus : Unreachable
AvgLatencyInMs :
MinLatencyInMs :
MaxLatencyInMs :
ProbesSent : 100
ProbesFailed : 100
Hops : [
{
"Type": "Source",
"Id": "b4f7bceb-07a3-44ca-8bae-adec6628225f",
"Address": "10.1.1.4",
"ResourceId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/ContosoRG/providers/Microsoft.Network/networkInterfaces/appNic0/ipConfigurations/ipconfig1",
"NextHopIds": [
"3fee8adf-692f-4523-b742-f6fdf6da6584"
],
"Issues": [
{
"Origin": "Outbound",
"Severity": "Error",
"Type": "UserDefinedRoute",
"Context": [
{
"key": "RouteType",
"value": "User"
}
]
}
]
},
{
"Type": "Destination",
"Id": "3fee8adf-692f-4523-b742-f6fdf6da6584",
"Address": "13.107.21.200",
"ResourceId": "Unknown",
"NextHopIds": [],
"Issues": []
}
]
Controllare la latenza del sito Web
L'esempio seguente controlla la connettività a un sito Web. Questo esempio presuppone che Network Watcher sia abilitato nell'area che contiene la macchina virtuale di origine.
Esempio
$rgName = "ContosoRG"
$sourceVMName = "MultiTierApp0"
$RG = Get-AzResourceGroup -Name $rgName
$VM1 = Get-AzVM -ResourceGroupName $rgName | Where-Object -Property Name -EQ $sourceVMName
$networkWatcher = Get-AzNetworkWatcher | Where-Object -Property Location -EQ -Value $VM1.Location
Test-AzNetworkWatcherConnectivity -NetworkWatcher $networkWatcher -SourceId $VM1.Id -DestinationAddress https://bing.com/
Response
Nella risposta seguente il valore indicato per ConnectionStatus
è Reachable. In caso di esito positivo della connessione vengono forniti i valori della latenza.
ConnectionStatus : Reachable
AvgLatencyInMs : 1
MinLatencyInMs : 0
MaxLatencyInMs : 7
ProbesSent : 100
ProbesFailed : 0
Hops : [
{
"Type": "Source",
"Id": "1f0e3415-27b0-4bf7-a59d-3e19fb854e3e",
"Address": "10.1.1.4",
"ResourceId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/ContosoRG/providers/Microsoft.Network/networkInterfaces/appNic0/ipConfigurations/ipconfig1",
"NextHopIds": [
"f99f2bd1-42e8-4bbf-85b6-5d21d00c84e0"
],
"Issues": []
},
{
"Type": "Internet",
"Id": "f99f2bd1-42e8-4bbf-85b6-5d21d00c84e0",
"Address": "204.79.197.200",
"ResourceId": "Internet",
"NextHopIds": [],
"Issues": []
}
]
Controllare la connettività a un endpoint di archiviazione
L'esempio seguente controlla la connettività da una macchina virtuale a un account di archiviazione BLOB. Questo esempio presuppone che Network Watcher sia abilitato nell'area che contiene la macchina virtuale di origine.
Esempio
$rgName = "ContosoRG"
$sourceVMName = "MultiTierApp0"
$RG = Get-AzResourceGroup -Name $rgName
$VM1 = Get-AzVM -ResourceGroupName $rgName | Where-Object -Property Name -EQ $sourceVMName
$networkWatcher = Get-AzNetworkWatcher | Where-Object -Property Location -EQ -Value $VM1.Location
Test-AzNetworkWatcherConnectivity -NetworkWatcher $networkWatcher -SourceId $VM1.Id -DestinationAddress https://contosostorageexample.blob.core.windows.net/
Response
Il codice JSON seguente è la risposta di esempio generata dall'esecuzione del cmdlet precedente. Poiché la destinazione è raggiungibile, la proprietà ConnectionStatus
risulta Reachable. Vengono forniti i dettagli relativi al numero di hop necessari per raggiungere il BLOB di archiviazione e la latenza.
ConnectionStatus : Reachable
AvgLatencyInMs : 1
MinLatencyInMs : 0
MaxLatencyInMs : 8
ProbesSent : 100
ProbesFailed : 0
Hops : [
{
"Type": "Source",
"Id": "9e7f61d9-fb45-41db-83e2-c815a919b8ed",
"Address": "10.1.1.4",
"ResourceId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/ContosoRG/providers/Microsoft.Network/networkInterfaces/appNic0/ipConfigurations/ipconfig1",
"NextHopIds": [
"1e6d4b3c-7964-4afd-b959-aaa746ee0f15"
],
"Issues": []
},
{
"Type": "Internet",
"Id": "1e6d4b3c-7964-4afd-b959-aaa746ee0f15",
"Address": "13.71.200.248",
"ResourceId": "Internet",
"NextHopIds": [],
"Issues": []
}
]