Rozwiązywanie problemów z połączeniami wychodzącym przy użyciu programu PowerShell
Z tego artykułu dowiesz się, jak używać funkcji rozwiązywania problemów z połączeniem usługi Azure Network Watcher do diagnozowania i rozwiązywania problemów z łącznością. Aby uzyskać więcej informacji na temat rozwiązywania problemów z połączeniem, zobacz Omówienie rozwiązywania problemów z połączeniem.
Wymagania wstępne
Konto platformy Azure z aktywną subskrypcją. Utwórz konto bezpłatnie.
Usługa Network Watcher włączona w regionie maszyny wirtualnej, którą chcesz rozwiązać. Domyślnie platforma Azure włącza usługę Network Watcher w regionie podczas tworzenia w niej sieci wirtualnej. Aby uzyskać więcej informacji, zobacz Włączanie lub wyłączanie usługi Azure Network Watcher.
Maszyna wirtualna z zainstalowanym rozszerzeniem maszyny wirtualnej agenta usługi Network Watcher i ma następującą łączność wychodzącą TCP:
- do 169.254.169.254 przez port 80
- do 168.63.129.16 przez port 8037
Druga maszyna wirtualna z przychodzącą łącznością TCP z wersji 168.63.129.16 przez testowany port (w przypadku testu diagnostycznego skanera portów).
Azure Cloud Shell lub Azure PowerShell.
Kroki opisane w tym artykule uruchamiają interaktywne polecenia cmdlet programu Azure PowerShell w usłudze Azure Cloud Shell. Aby uruchomić polecenia w usłudze Cloud Shell, wybierz pozycję Otwórz usługę Cloud Shell w prawym górnym rogu bloku kodu. Wybierz pozycję Kopiuj , aby skopiować kod, a następnie wklej go w usłudze Cloud Shell, aby go uruchomić. Możesz również uruchomić usługę Cloud Shell z poziomu witryny Azure Portal.
Możesz również zainstalować program Azure PowerShell lokalnie, aby uruchomić polecenia cmdlet. Ten artykuł wymaga modułu Az programu PowerShell. Aby uzyskać więcej informacji, zobacz How to install Azure PowerShell (Jak zainstalować program Azure PowerShell). Aby dowiedzieć się, jaka wersja została zainstalowana, uruchom polecenie
Get-InstalledModule -Name Az
. Jeśli uruchomisz program PowerShell lokalnie, zaloguj się do platformy Azure przy użyciu polecenia cmdlet Connect-AzAccount .
Uwaga
- Aby zainstalować rozszerzenie na maszynie wirtualnej z systemem Windows, zobacz Rozszerzenie maszyny wirtualnej agenta usługi Network Watcher dla systemu Windows.
- Aby zainstalować rozszerzenie na maszynie wirtualnej z systemem Linux, zobacz Rozszerzenie maszyny wirtualnej agenta usługi Network Watcher dla systemu Linux.
- Aby zaktualizować już zainstalowane rozszerzenie, zobacz Aktualizowanie rozszerzenia maszyny wirtualnej agenta usługi Network Watcher do najnowszej wersji.
Sprawdzanie łączności z maszyną wirtualną
W tym przykładzie sprawdzane jest połączenie z docelową maszyną wirtualną za pośrednictwem portu 80. Ten przykład wymaga włączenia usługi Network Watcher w regionie zawierającym źródłową maszynę wirtualną.
Przykład
$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
Poniższa odpowiedź pochodzi z poprzedniego przykładu. W tej odpowiedzi parametr ConnectionStatus
jest niemożliwy do osiągnięcia. Widać, że wszystkie wysłane sondy nie powiodły się. Łączność nie powiodła się na urządzeniu wirtualnym z powodu skonfigurowanego NetworkSecurityRule
przez użytkownika o nazwie UserRule_Port80 skonfigurowanego do blokowania ruchu przychodzącego na porcie 80. Te informacje mogą służyć do badania problemów z połączeniem.
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": []
}
]
Weryfikowanie problemów z routingiem
W tym przykładzie sprawdza się łączność między maszyną wirtualną a zdalnym punktem końcowym. Ten przykład wymaga włączenia usługi Network Watcher w regionie zawierającym źródłową maszynę wirtualną.
Przykład
$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
W poniższym przykładzie ConnectionStatus
element jest wyświetlany jako Niemożliwy do osiągnięcia. W szczegółach Hops
widaćIssues
, że ruch został zablokowany z powodu .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": []
}
]
Sprawdzanie opóźnienia witryny internetowej
Poniższy przykład sprawdza łączność z witryną internetową. Ten przykład wymaga włączenia usługi Network Watcher w regionie zawierającym źródłową maszynę wirtualną.
Przykład
$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
W poniższej odpowiedzi można zobaczyć pokazy ConnectionStatus
jako Osiągalne. Po pomyślnym nawiązaniu połączenia zostaną podane wartości opóźnienia.
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": []
}
]
Sprawdzanie łączności z punktem końcowym magazynu
Poniższy przykład sprawdza łączność z maszyny wirtualnej do konta magazynu w blogu. Ten przykład wymaga włączenia usługi Network Watcher w regionie zawierającym źródłową maszynę wirtualną.
Przykład
$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
Poniższy kod json to przykładowa odpowiedź z uruchomienia poprzedniego polecenia cmdlet. Gdy miejsce docelowe jest osiągalne, ConnectionStatus
właściwość jest wyświetlana jako Osiągalna. Podano szczegółowe informacje dotyczące liczby przeskoków wymaganych do osiągnięcia obiektu blob magazynu i opóźnienia.
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": []
}
]