Устранение неполадок подключений в службе "Наблюдатель за сетями Azure" с помощью Azure REST API
Узнайте, как проверить возможность прямого подключения TCP между виртуальной машиной и определенной конечной точкой с помощью функции устранения неполадок подключения.
Подготовка к работе
В данной статье предполагается, что у вас есть следующие ресурсы:
- Экземпляр службы "Наблюдатель за сетями" в регионе, в котором нужно устранить проблему подключения.
- Виртуальные машины, на которых требуется устранить неполадки подключения.
Внимание
Чтобы устранить неполадки подключения на виртуальной машине, установите на ней расширение AzureNetworkWatcherExtension
. Информацию об установке расширения для виртуальной машины Windows см. в статье Расширение виртуальной машины агента Наблюдателя за сетями для Windows, а для виртуальной машины Linux — в статье Расширение виртуальной машины агента Наблюдателя за сетями для Linux. Эта расширение не нужно устанавливать на целевой конечной точке.
выполните вход с помощью ARMClient;
Войдите в ARMClient, используя учетные данные Azure.
armclient login
Получение виртуальной машины
Выполните следующий скрипт, чтобы получить сведения о виртуальной машине. Эти сведения потребуются для подключения.
Выполните приведенный ниже код, указав в нем значения следующих переменных:
- subscriptionId — идентификатор используемой подписки.
- resourceGroupName — имя группы ресурсов, в которой содержатся виртуальные машины.
$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
Идентификатор виртуальной машины используется в следующем примере.
...
,
"type": "Microsoft.Compute/virtualMachines",
"location": "westcentralus",
"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/ContosoExampleRG/providers/Microsoft.Compute
/virtualMachines/ContosoVM",
"name": "ContosoVM"
}
]
}
Проверка возможности подключения к виртуальной машине
В этом примере проверяется возможность подключения к целевой виртуальной машине через порт 80.
Пример
$subscriptionId = "00000000-0000-0000-0000-000000000000"
$resourceGroupName = "NetworkWatcherRG"
$networkWatcherName = "NetworkWatcher_westcentralus"
$sourceResourceId = "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/ContosoRG/providers/Microsoft.Compute/virtualMachines/MultiTierApp0"
$destinationResourceId = "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/ContosoRG/providers/Microsoft.Compute/virtualMachines/Database0"
$destinationPort = "0"
$requestBody = @"
{
'source': {
'resourceId': '${sourceResourceId}',
'port': 0
},
'destination': {
'resourceId': '${destinationResourceId}',
'port': ${destinationPort}
}
}
"@
$response = armclient post "https://management.azure.com/subscriptions/${subscriptionId}/ResourceGroups/${resourceGroupName}/providers/Microsoft.Network/networkWatchers/${networkWatcherName}/connectivityCheck?api-version=2017-03-01" $requestBody
Так как эта операция выполняется долго, URI результата возвращается в заголовке ответа, как показано в следующем примере.
Важные значения
- Location (Расположение) — это свойство содержит универсальный код ресурса (URI), где находятся результаты после выполнения операции.
HTTP/1.1 202 Accepted
Pragma: no-cache
Retry-After: 10
x-ms-request-id: f09b55fe-1d3a-4df7-817f-bceb8d2a94c8
Strict-Transport-Security: max-age=31536000; includeSubDomains
Cache-Control: no-cache
Location: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westcentralus/operationResults/f09b55fe-1d3a-4df7-817f-bceb8d2a94c8?api-version=2017-03-01
Server: Microsoft-HTTPAPI/2.0; Microsoft-HTTPAPI/2.0
x-ms-ratelimit-remaining-subscription-writes: 1199
x-ms-correlation-request-id: 367a91aa-7142-436a-867d-d3a36f80bc54
x-ms-routing-request-id: WESTUS2:20170602T202117Z:367a91aa-7142-436a-867d-d3a36f80bc54
Date: Fri, 02 Jun 2017 20:21:16 GMT
null
Response
Следующий ответ взят из предыдущего примера. В этом ответе параметр ConnectionStatus
имеет значение Unreachable (Недоступно). Как видите, все отправленные пробы завершились неудачей. Попытка подключения завершилась сбоем в виртуальном модуле из-за пользовательского правила NetworkSecurityRule
с именем UserRule_Port80, настроенного на блокировку входящего трафика на порту 80. Эти сведения можно использовать для анализа проблем с подключением.
{
"hops": [
{
"type": "Source",
"id": "0cb75c91-7ebf-4df8-8424-15594d6fb51c",
"address": "10.1.1.4",
"resourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/ContosoRG/providers/Microsoft.Network/networkInterfaces/appNic0/ipConfigurations/ipconfig1",
"nextHopIds": [
"06dee00a-9c4a-4fb1-b2ea-fa0a539ca684"
],
"issues": []
},
{
"type": "VirtualAppliance",
"id": "06dee00a-9c4a-4fb1-b2ea-fa0a539ca684",
"address": "10.1.2.4",
"resourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/ContosoRG/providers/Microsoft.Network/networkInterfaces/fwNic/ipConfigurations/ipconfig1",
"nextHopIds": [
"75e0cfa5-f9d2-48d8-b705-2c7016f81570"
],
"issues": []
},
{
"type": "VirtualAppliance",
"id": "75e0cfa5-f9d2-48d8-b705-2c7016f81570",
"address": "10.1.3.4",
"resourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/ContosoRG/providers/Microsoft.Network/networkInterfaces/auNic/ipConfigurations/ipconfig1",
"nextHopIds": [
"86caf6aa-33b0-48a1-b4da-f3c9ce785072"
],
"issues": [
{
"origin": "Outbound",
"severity": "Error",
"type": "NetworkSecurityRule",
"context": [
{
"key": "RuleName",
"value": "UserRule_Port80"
}
]
}
]
},
{
"type": "VnetLocal",
"id": "86caf6aa-33b0-48a1-b4da-f3c9ce785072",
"address": "10.1.4.4",
"resourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/ContosoRG/providers/Microsoft.Network/networkInterfaces/dbNic0/ipConfigurations/ipconfig1",
"nextHopIds": [],
"issues": []
}
],
"connectionStatus": "Unreachable",
"probesSent": 100,
"probesFailed": 100
}
Проверка проблем с маршрутизацией
В этом примере проверяется возможность подключения между виртуальной машиной и удаленной конечной точкой.
Пример
$subscriptionId = "00000000-0000-0000-0000-000000000000"
$resourceGroupName = "NetworkWatcherRG"
$networkWatcherName = "NetworkWatcher_westcentralus"
$sourceResourceId = "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/ContosoRG/providers/Microsoft.Compute/virtualMachines/MultiTierApp0"
$destinationResourceId = "13.107.21.200"
$destinationPort = "80"
$requestBody = @"
{
'source': {
'resourceId': '${sourceResourceId}',
'port': 0
},
'destination': {
'address': '${destinationResourceId}',
'port': ${destinationPort}
}
}
"@
$response = armclient post "https://management.azure.com/subscriptions/${subscriptionId}/ResourceGroups/${resourceGroupName}/providers/Microsoft.Network/networkWatchers/${networkWatcherName}/connectivityCheck?api-version=2017-03-01" $requestBody
Так как эта операция выполняется долго, URI результата возвращается в заголовке ответа, как показано в следующем примере.
Важные значения
- Location (Расположение) — это свойство содержит универсальный код ресурса (URI), где находятся результаты после выполнения операции.
HTTP/1.1 202 Accepted
Pragma: no-cache
Retry-After: 10
x-ms-request-id: 15eeeb69-fcef-41db-bc4a-e2adcf2658e0
Strict-Transport-Security: max-age=31536000; includeSubDomains
Cache-Control: no-cache
Location: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westcentralus/operationResults/15eeeb69-fcef-41db-bc4a-e2adcf2658e0?api-version=2017-03-01
Server: Microsoft-HTTPAPI/2.0; Microsoft-HTTPAPI/2.0
x-ms-ratelimit-remaining-subscription-writes: 1199
x-ms-correlation-request-id: 4370b798-cd8b-4d3e-ba28-22232bc81dc5
x-ms-routing-request-id: WESTUS:20170602T202606Z:4370b798-cd8b-4d3e-ba28-22232bc81dc5
Date: Fri, 02 Jun 2017 20:26:05 GMT
null
Response
В следующем примере состояние connectionStatus
отображается как Unreachable (Недоступно). В блоке hops
в разделе issues
видно, что трафик заблокирован из-за UserDefinedRoute
.
{
"hops": [
{
"type": "Source",
"id": "5528055a-b393-4751-97bc-353d8c0aaeff",
"address": "10.1.1.4",
"resourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/ContosoRG/providers/Microsoft.Network/networkInterfaces/appNic0/ipConfigurations/ipconfig1",
"nextHopIds": [
"66eefa79-5bfe-48b2-b6ca-eec8247457a3"
],
"issues": [
{
"origin": "Outbound",
"severity": "Error",
"type": "UserDefinedRoute",
"context": [
{
"key": "RouteType",
"value": "User"
}
]
}
]
},
{
"type": "Destination",
"id": "66eefa79-5bfe-48b2-b6ca-eec8247457a3",
"address": "13.107.21.200",
"resourceId": "Unknown",
"nextHopIds": [],
"issues": []
}
],
"connectionStatus": "Unreachable",
"probesSent": 100,
"probesFailed": 100
}
Проверка задержки веб-сайта
В следующем примере проверяется возможность подключения к веб-сайту.
Пример
$subscriptionId = "00000000-0000-0000-0000-000000000000"
$resourceGroupName = "NetworkWatcherRG"
$networkWatcherName = "NetworkWatcher_westcentralus"
$sourceResourceId = "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/ContosoRG/providers/Microsoft.Compute/virtualMachines/MultiTierApp0"
$destinationResourceId = "https://bing.com"
$destinationPort = "0"
$requestBody = @"
{
'source': {
'resourceId': '${sourceResourceId}',
'port': 0
},
'destination': {
'address': '${destinationResourceId}',
'port': ${destinationPort}
}
}
"@
$response = armclient post "https://management.azure.com/subscriptions/${subscriptionId}/ResourceGroups/${resourceGroupName}/providers/Microsoft.Network/networkWatchers/${networkWatcherName}/connectivityCheck?api-version=2017-03-01" $requestBody
Так как эта операция выполняется долго, URI результата возвращается в заголовке ответа, как показано в следующем примере.
Важные значения
- Location (Расположение) — это свойство содержит универсальный код ресурса (URI), где находятся результаты после выполнения операции.
HTTP/1.1 202 Accepted
Pragma: no-cache
Retry-After: 10
x-ms-request-id: e49b12c7-c232-472c-b6d2-6c257ce80fa5
Strict-Transport-Security: max-age=31536000; includeSubDomains
Cache-Control: no-cache
Location: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westcentralus/operationResults/e49b12c7-c232-472c-b6d2-6c257ce80fa5?api-version=2017-03-01
Server: Microsoft-HTTPAPI/2.0; Microsoft-HTTPAPI/2.0
x-ms-ratelimit-remaining-subscription-writes: 1199
x-ms-correlation-request-id: c3d9744f-5683-427d-bdd1-636b68ab01b6
x-ms-routing-request-id: WESTUS:20170602T203101Z:c3d9744f-5683-427d-bdd1-636b68ab01b6
Date: Fri, 02 Jun 2017 20:31:00 GMT
null
Response
В следующем ответе видно, что параметр connectionStatus
отображается со значением Reachable (Достижимо). Когда подключение будет установлено, отобразятся значения задержки.
{
"hops": [
{
"type": "Source",
"id": "6adc0fe1-e384-4220-b1b1-f0d181220072",
"address": "10.1.1.4",
"resourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/ContosoRG/providers/Microsoft.Network/networkInterfaces/appNic0/ipConfigurations/ipconfig1",
"nextHopIds": [
"b50b7076-9ff2-4782-b40e-0b89cf758f74"
],
"issues": []
},
{
"type": "Internet",
"id": "b50b7076-9ff2-4782-b40e-0b89cf758f74",
"address": "204.79.197.200",
"resourceId": "Internet",
"nextHopIds": [],
"issues": []
}
],
"connectionStatus": "Reachable",
"avgLatencyInMs": 1,
"minLatencyInMs": 0,
"maxLatencyInMs": 7,
"probesSent": 100,
"probesFailed": 0
}
Проверка возможности подключения к конечной точке хранилища
В следующем примере проверяется возможность подключения с виртуальной машины к учетной записи хранилища BLOB-объектов.
Пример
$subscriptionId = "00000000-0000-0000-0000-000000000000"
$resourceGroupName = "NetworkWatcherRG"
$networkWatcherName = "NetworkWatcher_westcentralus"
$sourceResourceId = "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/ContosoRG/providers/Microsoft.Compute/virtualMachines/MultiTierApp0"
$destinationResourceId = "https://build2017nwdiag360.blob.core.windows.net/"
$destinationPort = "0"
$requestBody = @"
{
'source': {
'resourceId': '${sourceResourceId}',
'port': 0
},
'destination': {
'address': '${destinationResourceId}',
'port': ${destinationPort}
}
}
"@
$response = armclient post "https://management.azure.com/subscriptions/${subscriptionId}/ResourceGroups/${resourceGroupName}/providers/Microsoft.Network/networkWatchers/${networkWatcherName}/connectivityCheck?api-version=2017-03-01" $requestBody
Так как эта операция выполняется долго, URI результата возвращается в заголовке ответа, как показано в следующем примере.
Важные значения
- Location (Расположение) — это свойство содержит универсальный код ресурса (URI), где находятся результаты после выполнения операции.
HTTP/1.1 202 Accepted
Pragma: no-cache
Retry-After: 10
x-ms-request-id: c4ed3806-61ea-4a6b-abc1-9d6f2afc79c2
Strict-Transport-Security: max-age=31536000; includeSubDomains
Cache-Control: no-cache
Location: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Network/locations/westcentralus/operationResults/c4ed3806-61ea-4a6b-abc1-9d6f2afc79c2?api-version=2017-03-01
Server: Microsoft-HTTPAPI/2.0; Microsoft-HTTPAPI/2.0
x-ms-ratelimit-remaining-subscription-writes: 1199
x-ms-correlation-request-id: 93bf5af0-fef5-4b7a-bb9e-9976ba5cdb95
x-ms-routing-request-id: WESTUS2:20170602T200504Z:93bf5af0-fef5-4b7a-bb9e-9976ba5cdb95
Date: Fri, 02 Jun 2017 20:05:03 GMT
null
Response
Ниже представлен пример ответа на выполнение предыдущего вызова API. Так как проверка выполнена успешно, свойство connectionStatus
отображается со значением Reachable (Достижимо). Также отображаются сведения о числе прыжков, необходимых для доступа к BLOB-объекту в хранилище, а также о задержке.
{
"hops": [
{
"type": "Source",
"id": "6adc0fe1-e384-4220-b1b1-f0d181220072",
"address": "10.1.1.4",
"resourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/ContosoRG/providers/Microsoft.Network/networkInterfaces/appNic0/ipConfigurations/ipconfig1",
"nextHopIds": [
"b50b7076-9ff2-4782-b40e-0b89cf758f74"
],
"issues": []
},
{
"type": "Internet",
"id": "b50b7076-9ff2-4782-b40e-0b89cf758f74",
"address": "13.71.200.248",
"resourceId": "Internet",
"nextHopIds": [],
"issues": []
}
],
"connectionStatus": "Reachable",
"avgLatencyInMs": 1,
"minLatencyInMs": 0,
"maxLatencyInMs": 7,
"probesSent": 100,
"probesFailed": 0
}
Следующие шаги
Дополнительные сведения об автоматизации записи пакетов с помощью оповещений на виртуальной машине см. в статье, посвященной созданию записи пакетов, активируемой с использованием оповещений.
Сведения о состоянии (разрешен или запрещен) входящего и исходящего трафика виртуальной машины см. в статье, посвященной проверке потока IP-адресов.