Устранение неполадок с VPN-шлюзом Azure с помощью журналов диагностики
В этой статье содержатся сведения о различных журналах, доступных для диагностики VPN-шлюза, а также об их использовании для эффективного устранения неполадок VPN-шлюза.
Если проблема Azure не устранена в этой статье, посетите форумы Azure на форумах Microsoft Q и A и Stack Overflow. Описание своей проблемы можно опубликовать на этих форумах или написать в Twitter (@AzureSupport). Также можно отправить запрос в службу поддержки Azure. Чтобы отправить такой запрос, на странице поддержки Azure щелкните Получить поддержку.
В Azure доступны следующие журналы:
- GatewayDiagnosticLog
- TunnelDiagnosticLog
- RouteDiagnosticLog
- IKEDiagnosticLog
- P2SDiagnosticLog
Для шлюзов на основе политик доступны только GatewayDiagnosticLog и RouteDiagnosticLog .
Сведения обо всех журналах VPN-шлюз см. в справочнике по данным мониторинга azure VPN-шлюз
Сведения о настройке событий журнала диагностики из Azure VPN-шлюз с помощью Azure Log Analytics см. в статье "Создание параметров диагностики" в Azure Monitor.
GatewayDiagnosticLog
В таблице GatewayDiagnosticLog осуществляется аудит изменений конфигурации. На отражение внесенных изменений в журналах может потребоваться несколько минут.
Вот пример запроса:
AzureDiagnostics
| where Category == "GatewayDiagnosticLog"
| project TimeGenerated, OperationName, Message, Resource, ResourceGroup
| sort by TimeGenerated asc
Этот запрос в GatewayDiagnosticLog показывает несколько столбцов.
Имя | Description |
---|---|
TimeGenerated | Метка времени каждого события в часовом поясе UTC. |
OperationName | Произошедшее событие. Это может быть одно из таких событий: SetGatewayConfiguration, SetConnectionConfiguration, HostMaintenanceEvent, GatewayTenantPrimaryChanged, MigrateCustomerSubscription, GatewayResourceMove, ValidateGatewayConfiguration. |
Сообщение | Подробные сведения о выполняемой операции и список успешных и неудачных результатов. |
В следующем примере показано действие, зарегистрированное при применении новой конфигурации:
Обратите внимание, что SetGatewayConfiguration регистрируется при каждом изменении конфигурации в VPN-шлюз или шлюзе локальной сети.
Сравнение результатов из таблицы GatewayDiagnosticLog с результатами таблицы TunnelDiagnosticLog может помочь определить, произошел ли сбой подключения к туннелю во время изменения конфигурации или действия обслуживания. Если да, это дает значительное представление о потенциальной первопричине.
TunnelDiagnosticLog
Таблица TunnelDiagnosticLog полезна для проверки состояния исторического подключения туннеля.
Вот пример запроса:
AzureDiagnostics
| where Category == "TunnelDiagnosticLog"
//| where remoteIP_s == "<REMOTE IP OF TUNNEL>"
| project TimeGenerated, OperationName, remoteIP_s, instance_s, Resource, ResourceGroup
| sort by TimeGenerated asc
Этот запрос в TunnelDiagnosticLog показывает несколько столбцов.
Имя | Description |
---|---|
TimeGenerated | Метка времени каждого события в часовом поясе UTC. |
OperationName | Произошедшее событие. Это может быть событие TunnelConnected или TunnelDisconnected. |
remoteIP_s | IP-адрес локального VPN-устройства. В реальных сценариях полезно фильтровать по IP-адресу соответствующего локального устройства. |
Instance_s | Экземпляр роли шлюза, который активировал событие. Это может быть GatewayTenantWorker_IN_0 или GatewayTenantWorker_IN_1 (имена двух экземпляров шлюза). |
Ресурс | Имя VPN-шлюза. |
ResourceGroup | Группа ресурсов, в которой находится шлюз. |
Пример результата:
ТуннельDiagnosticLog полезен для устранения неполадок с прошлыми событиями о непредвиденных отключениях VPN. Данные представлены в простой форме, что дает возможность с минимальными усилиями анализировать большие диапазоны времени через несколько дней. Только после того, как вы определите метку времени отключения, можно перейти к более подробному анализу таблицы IKEdiagnosticLog, чтобы тщательно изучить причины отключения, если они связаны с IPSec.
Советы по устранению неполадок
- Если вы наблюдаете событие отключения на одном экземпляре шлюза, за которым следует событие подключения в другом экземпляре шлюза в течение нескольких секунд, оно указывает на отработку отказа шлюза. Такое событие обычно возникает из-за обслуживания экземпляра шлюза. Дополнительные сведения об этом см. в разделе Избыточность VPN-шлюзов Azure.
- Такое же поведение наблюдается при намеренном запуске сброса шлюза на стороне Azure, что приводит к перезагрузке активного экземпляра шлюза. Дополнительные сведения об этом см. в статье Сброс VPN-шлюза.
- Если в одном экземпляре шлюза отображается событие отключения, за которым следует событие подключения в одном экземпляре шлюза в течение нескольких секунд, может возникнуть сбой сети, вызывающий истечение времени ожидания DPD, или отключение ошибочно отправлено локальным устройством.
RouteDiagnosticLog
В таблице RouteDiagnosticLog отслеживаются действия для статически измененных маршрутов или маршрутов, полученных по протоколу BGP.
Вот пример запроса:
AzureDiagnostics
| where Category == "RouteDiagnosticLog"
| project TimeGenerated, OperationName, Message, Resource, ResourceGroup
Этот запрос в RouteDiagnosticLog показывает несколько столбцов.
Имя | Description |
---|---|
TimeGenerated | Метка времени каждого события в часовом поясе UTC. |
OperationName | Произошедшее событие. Это может быть событие StaticRouteUpdate, BgpRouteUpdate, BgpConnectedEvent или BgpDisconnectedEvent. |
Сообщение | Сведения о выполняемой операции. |
В выходных данных показаны полезные сведения о одноранговых узлах BGP, подключенных или отключенных, а также маршрутах, обменяемых данными.
Пример:
IKEDiagnosticLog
В таблице IKEDiagnosticLog содержатся подробные данные журнала отладки для IKE/IPSec. Это полезно для проверки при устранении неполадок при отключении или сбое подключения к сценариям VPN.
Вот пример запроса:
AzureDiagnostics
| where Category == "IKEDiagnosticLog"
| extend Message1=Message
| parse Message with * "Remote " RemoteIP ":" * "500: Local " LocalIP ":" * "500: " Message2
| extend Event = iif(Message has "SESSION_ID",Message2,Message1)
| project TimeGenerated, RemoteIP, LocalIP, Event, Level
| sort by TimeGenerated asc
Этот запрос в IKEDiagnosticLog показывает несколько столбцов.
Имя | Description |
---|---|
TimeGenerated | Метка времени каждого события в часовом поясе UTC. |
RemoteIP | IP-адрес локального VPN-устройства. В реальных сценариях полезно фильтровать по IP-адресу соответствующего локального устройства. |
LocalIP | IP-адрес VPN-шлюз, который мы устраняем. В реальных сценариях полезно фильтровать по IP-адресу соответствующего VPN-шлюза, если в вашей подписке будет несколько. |
Событие | Содержит диагностическое сообщение, полезное для устранения неполадок. Обычно начинается с ключевого слова и описывает действия, выполненные шлюзом Azure. SEND указывает на событие, вызванное пакетом IPSec, который отправлен шлюзом Azure. RECEIVED указывает на событие, вызванное пакетом, который получен от локального устройства. LOCAL означает действие, выполненное локально шлюзом Azure. |
Обратите внимание, что столбцы RemoteIP, LocalIP и Event отсутствуют в исходном списке столбцов в базе данных AzureDiagnostics, но добавляются в запрос, анализируя выходные данные столбца Message, чтобы упростить его анализ.
Советы по устранению неполадок
Чтобы определить начало согласования IPSec, необходимо найти исходное сообщение SA_INIT. Такое сообщение может быть отправлено любой из сторон туннеля. Отправитель первого пакета называется в терминологии IPsec называется инициатором, а вторая сторона становится отвечающим устройством. Первым сообщением SA_INIT всегда является то, в котором rCookie = 0.
Если не удается установить туннель IPsec, Azure продолжает повторяться каждые несколько секунд. По этой причине устранение неполадок с "VPN вниз" удобно в IKEdiagnosticLog, так как вам не нужно ждать определенного времени для воспроизведения проблемы. Кроме того, теоретически эта ошибка будет всегда одинаковой при каждой попытке, поэтому можно рассмотреть подробно одно согласование в качестве примера в любое время.
Сообщение SA_INIT содержит параметры IPsec, которые узел хочет использовать для этого согласования IPSec. В официальном документе
Параметры IPsec/IKE по умолчанию перечислены параметры IPsec, поддерживаемые шлюзом Azure, со значениями по умолчанию.
P2SDiagnosticLog
Последняя доступная таблица для диагностики VPN — P2SDiagnosticLog. В этой таблице отслеживаются действия "Точка — сеть" (только протоколы IKEv2 и OpenVPN).
Вот пример запроса:
AzureDiagnostics
| where Category == "P2SDiagnosticLog"
| project TimeGenerated, OperationName, Message, Resource, ResourceGroup
Этот запрос к P2SDiagnosticLog возвращает несколько столбцов.
Имя | Description |
---|---|
TimeGenerated | Метка времени каждого события в часовом поясе UTC. |
OperationName | Произошедшее событие. В данном случае — это P2SLogEvent. |
Сообщение | Сведения о выполняемой операции. |
В выходных данных отображаются все параметры "Точка — сеть", примененные шлюзом, и политики IPsec.
Кроме того, когда клиент устанавливает подключение с помощью Проверки подлинности OpenVPN и Идентификатора Microsoft Entra для типа "точка — сеть", таблица записывает действие пакета следующим образом:
[MSG] [default] [OVPN_XXXXXXXXXXXXXXXXXXXXXXXXXXX] Connect request received. IP=0.X.X.X:XXX
[MSG] [default] [OVPN_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx] AAD authentication succeeded. Username=***tosouser@contoso.com
[MSG] [default] [OVPN_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx] Connection successful. Username=***tosouser@contoso.com IP=10.0.0.1
Примечание.
В журнале "точка — сеть" имя пользователя частично скрыто. Первый октет IP-адреса пользователя клиента заменен на 0
.
Next Steps
Сведения о настройке оповещений для журналов ресурсов туннеля см. в разделе Настройка оповещений для журналов ресурсов VPN-шлюза.