진단 로그를 사용하여 Azure VPN Gateway 문제 해결

이 문서는 VPN Gateway 진단에 사용할 수 있는 여러 로그와 이러한 로그를 사용하여 VPN Gateway 문제를 효과적으로 해결하는 방법을 이해하는 데 도움이 됩니다.

Azure 문제와 관련된 정보가 이 문서에 없을 경우 Microsoft Q&A 및 Stack Overflow에서 Azure 포럼을 방문합니다. 이러한 포럼이나 Twitter의 @AzureSupport에 문제를 게시할 수 있습니다. 또한 Azure 지원 요청을 제출할 수 있습니다. 지원 요청을 제출하려면 Azure 지원 페이지에서 지원 받기를 선택합니다.

Azure에서 사용할 수 있는* 로그는 다음과 같습니다.

이름 설명
GatewayDiagnosticLog 게이트웨이 구성 이벤트, 기본 변경, 유지 관리 이벤트에 대한 진단 로그를 포함합니다.
TunnelDiagnosticLog 터널 상태 변경 이벤트를 포함합니다. 터널 연결/연결 끊기 이벤트에는 상태 변경의 요약된 이유(해당하는 경우)가 있습니다.
RouteDiagnosticLog 게이트웨이에서 발생하는 고정 경로 및 BGP 이벤트에 대한 변경 내용을 로그합니다.
IKEDiagnosticLog 게이트웨이에서 IKE 제어 메시지 및 이벤트를 로그합니다.
P2SDiagnosticLog 게이트웨이에서 지점 및 사이트 제어 메시지와 이벤트를 로깅합니다.

*정책 기반 게이트웨이의 경우 GatewayDiagnosticLog 및 RouteDiagnosticLog만 사용할 수 있습니다.

이러한 테이블에서 여러 열을 사용할 수 있습니다. 이 문서에서는 로그를 보다 쉽게 사용할 수 있도록 가장 관련성이 높은 항목만 설명합니다.

로깅 설정

다음 절차에 따라 Azure Log Analytics를 사용하여 Azure VPN Gateway에서 진단 로그 이벤트를 설정하는 방법을 알아봅니다.

  1. 이 문서를 사용하여 Log Analytics 작업 영역을 만듭니다.

  2. 모니터링 > 진단 설정 블레이드에서 VPN 게이트웨이를 찾습니다.

Screenshot of the Diagnostic settings blade.

  1. 게이트웨이를 선택하고 "진단 설정 추가"를 클릭합니다.

Screenshot of the Add diagnostic setting interface.

  1. 진단 설정 이름을 입력하고 모든 로그 범주를 선택하고 Log Analytics 작업 영역을 선택합니다.

Detailed screenshot of the Add diagnostic setting properties.

참고 항목

데이터가 처음으로 보이기까지는 몇 시간이 걸릴 수 있습니다.

GatewayDiagnosticLog

구성 변경 내용은 GatewayDiagnosticLog 테이블에서 감사됩니다. 실행한 변경 내용이 로그에 반영되기까지 몇 분 정도 걸릴 수 있습니다.

다음 샘플 쿼리를 참조로 사용할 수 있습니다.

AzureDiagnostics  
| where Category == "GatewayDiagnosticLog"  
| project TimeGenerated, OperationName, Message, Resource, ResourceGroup  
| sort by TimeGenerated asc

GatewayDiagnosticLog에 대한 이 쿼리는 여러 열을 표시합니다.

이름 설명
TimeGenerated 각 이벤트의 타임스탬프(UTC 표준 시간대)입니다.
OperationName 발생한 이벤트입니다. SetGatewayConfiguration, SetConnectionConfiguration, HostMaintenanceEvent, GatewayTenantPrimaryChanged, MigrateCustomerSubscription, GatewayResourceMove, ValidateGatewayConfiguration 중 하나일 수 있습니다.
Message 작업의 세부 정보를 표시하고 성공/실패 결과를 나열합니다.

아래 예제는 새 구성이 적용될 때 로그된 활동을 보여 줍니다.

Example of a Set Gateway Operation seen in GatewayDiagnosticLog.

VPN Gateway 또는 로컬 네트워크 게이트웨이에서 일부 구성이 수정될 때마다 SetGatewayConfiguration이 로그됩니다. 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에 대한 이 쿼리는 여러 열을 표시합니다.

이름 설명
TimeGenerated 각 이벤트의 타임스탬프(UTC 표준 시간대)입니다.
OperationName 발생한 이벤트입니다. TunnelConnected 또는 TunnelDisconnected일 수 있습니다.
remoteIP_s 온-프레미스 VPN 디바이스의 IP 주소 실제 시나리오에서는 관련 온-프레미스 디바이스가 둘 이상인 경우 해당 디바이스의 IP 주소로 필터링하는 것이 유용합니다.
Instance_s 이벤트를 트리거한 게이트웨이 역할 인스턴스입니다. 게이트웨이의 두 인스턴스 이름인 GatewayTenantWorker_IN_0 또는 GatewayTenantWorker_IN_1일 수 있습니다.
리소스 VPN 게이트웨이의 이름을 나타냅니다.
ResourceGroup 게이트웨이가 있는 리소스 그룹을 나타냅니다.

예제 출력:

Example of a Tunnel Connected Event seen in TunnelDiagnosticLog.

TunnelDiagnosticLog는 예기치 않은 VPN 연결 끊김에 관한 이전 이벤트 문제 해결에 매우 유용합니다. 경량이기 때문에 적은 노력으로 여러 날에 걸친 큰 시간 범위를 분석할 수 있습니다. 연결 끊김 타임스탬프를 확인한 후에만 IKEdiagnosticLog 테이블에 대한 자세한 분석으로 전환하여 연결 끊김의 이유가 IPsec과 관련이 있는지 자세히 살펴볼 수 있습니다.

몇 가지 문제 해결 팁:

  • 한 게이트웨이 인스턴스에서 연결 끊김 이벤트가 발생하고 몇 초 후에 다른 게이트웨이 인스턴스에서 연결 이벤트가 발생한다면 게이트웨이 장애 조치(failover)입니다. 이는 게이트웨이 인스턴스에 대한 유지 관리로 인해 일반적으로 예상되는 동작입니다. 이 동작에 대해 자세히 알아보려면 Azure VPN gateway 중복도 정보를 참조하세요.
  • Azure 쪽에서 의도적으로 게이트웨이 재설정을 실행하여 활성 게이트웨이 인스턴스를 다시 부팅하는 경우에도 동일한 동작이 관찰됩니다. 이 동작에 대해 자세히 알아보려면 VPN Gateway 다시 설정을 참조하세요.
  • 한 게이트웨이 인스턴스에서 연결 끊김 이벤트가 발생하고 몇 초 후에 동일한 게이트웨이 인스턴스에서 연결 이벤트가 발생한다면 DPD 시간 초과를 유발하는 네트워크 결함이거나 온-프레미스 디바이스가 잘못 전송한 연결 끊김입니다.

RouteDiagnosticLog

RouteDiagnosticLog 테이블은 BGP를 통해 수신되는 정적으로 수정된 경로 또는 경로에 대한 활동을 추적합니다.

다음 샘플 쿼리를 참조로 사용할 수 있습니다.

AzureDiagnostics
| where Category == "RouteDiagnosticLog"
| project TimeGenerated, OperationName, Message, Resource, ResourceGroup

RouteDiagnosticLog에 대한 이 쿼리는 여러 열을 표시합니다.

이름 설명
TimeGenerated 각 이벤트의 타임스탬프(UTC 표준 시간대)입니다.
OperationName 발생한 이벤트입니다. StaticRouteUpdate, BgpRouteUpdate, BgpConnectedEvent, BgpDisconnectedEvent 중 하나일 수 있습니다.
Message 실행 중인 작업의 세부 정보입니다.

출력에는 연결/연결 해제된 BGP 피어 및 교환된 경로에 대한 유용한 정보가 표시됩니다.

예시:

Example of BGP route exchange activity seen in RouteDiagnosticLog.

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에 대한 이 쿼리는 여러 열을 표시합니다.

이름 설명
TimeGenerated 각 이벤트의 타임스탬프(UTC 표준 시간대)입니다.
RemoteIP 온-프레미스 VPN 디바이스의 IP 주소 실제 시나리오에서는 관련 온-프레미스 디바이스가 둘 이상인 경우 해당 디바이스의 IP 주소로 필터링하는 것이 유용합니다.
LocalIP 문제를 해결할 VPN Gateway의 IP 주소입니다. 실제 시나리오에서는 구독에 관련 VPN 게이트웨이가 둘 이상 있는 경우 해당 VPN 게이트웨이의 IP 주소로 필터링하는 것이 유용합니다.
이벤트 문제 해결에 유용한 진단 메시지를 포함합니다. 일반적으로 키워드로 시작하며 Azure 게이트웨이에서 수행되는 작업을 참조합니다. [SEND]는 Azure 게이트웨이에서 보낸 IPSec 패킷으로 인한 이벤트를 나타냅니다. [RECEIVED]는 온-프레미스 디바이스에서 수신한 패킷으로 인한 이벤트를 나타냅니다. [LOCAL]은 Azure 게이트웨이에서 로컬로 수행하는 작업을 나타냅니다.

RemoteIP, LocalIP, Event 열은 AzureDiagnostics 데이터베이스의 원래 열 목록에는 없지만 ‘Message’ 열의 출력을 구문 분석하여 쿼리에 추가하면 분석이 간소화됩니다.

문제 해결 팁:

  • IPSec 협상의 시작을 식별하려면 초기 SA_INIT 메시지를 찾아야 합니다. 이러한 메시지는 터널의 어느 쪽에서도 전송될 수 있습니다. 첫 번째 패킷을 전송하는 쪽을 IPsec 용어로 ‘개시자’라고 하며, 반대쪽은 ‘응답자’가 됩니다. 첫 번째 SA_INIT 메시지는 항상 rCookie = 0인 메시지입니다.

  • IPsec 터널을 설정하지 못하면 Azure는 몇 초마다 재시도를 계속합니다. 따라서 IKEdiagnosticLog에서 ‘VPN 다운’ 문제를 해결하는 것이 매우 편리합니다. 문제를 재현하기 위해 특정 시간 동안 기다릴 필요가 없기 때문입니다. 또한 시도할 때마다 실패는 이론적으로 항상 동일하기 때문에 언제든지 하나의 ‘샘플’ 협상 실패만 살펴보면 됩니다.

  • SA_INIT에는 피어가 이 IPsec 협상에 사용하려는 IPsec 매개 변수가 포함됩니다. 공식 문서
    기본 IPsec/IKE 매개 변수는 기본 설정으로 Azure 게이트웨이에서 지원하는 IPsec 매개 변수를 나열합니다.

P2SDiagnosticLog

VPN 진단에 사용할 수 있는 마지막 테이블은 P2SDiagnosticLog입니다. 이 테이블은 지점 및 사이트 간 활동(IKEv2 및 OpenVPN 프로토콜만)을 추적합니다.

다음 샘플 쿼리를 참조로 사용할 수 있습니다.

AzureDiagnostics  
| where Category == "P2SDiagnosticLog"  
| project TimeGenerated, OperationName, Message, Resource, ResourceGroup

P2SDiagnosticLog에 대한 이 쿼리는 여러 열을 표시합니다.

이름 설명
TimeGenerated 각 이벤트의 타임스탬프(UTC 표준 시간대)입니다.
OperationName 발생한 이벤트입니다. P2SLogEvent가 됩니다.
Message 실행 중인 작업의 세부 정보입니다.

출력에는 게이트웨이가 적용한 모든 지점-사이트 간 설정과 적용되는 IPsec 정책이 표시됩니다.

Example of Point to Site connection seen in P2SDiagnosticLog.

또한 클라이언트가 IKEv2 또는 OpenVPN P2S를 통해 연결할 때마다 이 테이블은 패킷 활동, EAP/RADIUS 대화 및 성공/실패 결과를 사용자별로 로그합니다.

Example of EAP authentication seen in P2SDiagnosticLog.

다음 단계

터널 리소스 로그에 대한 경고를 구성하려면 VPN Gateway 리소스 로그에 대한 경고 설정을 참조하세요.