Share via


PowerShell을 사용하여 Azure Network Watcher로 가상 머신 확장 집합에서 패킷 캡처 관리

Network Watcher 패킷 캡처를 사용하면 캡처 세션을 만들어 가상 머신 확장 집합 인스턴스와 주고받는 트래픽을 추적할 수 있습니다. 원하는 트래픽만 캡처할 수 있도록 캡처 세션에 대 한 필터가 제공됩니다. 패킷 캡처를 통해 사후 및 사전 대응적으로 네트워크 예외를 진단할 수 있습니다. 또한 네트워크 침입에 대한 정보를 가져오는 네트워크 통계를 수집하는 것을 포함하여 클라이언트 서버 간 통신을 디버그할 수 있습니다. 패킷 캡처를 원격으로 트리거할 수 있으므로 원하는 가상 머신 확장 집합 인스턴스에서 수동으로 패킷 캡처를 실행해야 하는 부담을 줄여 소중한 시간을 절약할 수 있습니다.

이 문서에서는 패킷 캡처를 위해 현재 사용할 수 있는 여러 관리 태스크를 설명합니다.

시작하기 전에

이 문서에서는 사용자에게 다음 리소스가 있는 것으로 가정합니다.

  • 패킷 캡처를 만들려는 영역의 Network Watcher 인스턴스

Important

패킷 캡처에는 가상 머신 확장 집합 확장 AzureNetworkWatcherExtension이 필요합니다. Windows VM에서 확장을 설치하려면 Windows용 Azure Network Watcher 에이전트 가상 머신 확장을 방문하고 Linux VM인 경우 Linux용 Azure Network Watcher 에이전트 가상 머신 확장을 방문하세요.

가상 머신 확장 집합 확장 설치

단계 1

$vmss = Get-AzVmss -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet"

2단계

가상 머신 확장 집합/가상 머신 확장 집합 인스턴스에 networkWatcherAgent 설치

Add-AzVmssExtension -VirtualMachineScaleSet $vmss -Name "AzureNetworkWatcherExtension" -Publisher "Microsoft.Azure.NetworkWatcher" -Type "NetworkWatcherAgentWindows" -TypeHandlerVersion "1.4" -AutoUpgradeMinorVersion $True

Update-AzVmss -ResourceGroupName "$resourceGroupName" -Name $virtualMachineScaleSetName -VirtualMachineScaleSet $vmss
Update-AzVmssInstance -ResourceGroupName "$resourceGroupName" -VMScaleSetName $vmss.Name -InstanceId 0
> The `Set-AzVMExtension` cmdlet may take several minutes to complete.

3단계

에이전트가 설치되었는지 확인하려면 1단계를 따릅니다.

Get-AzVMss -ResourceGroupName $vmss.ResourceGroupName  -VMNScaleSetName $vmss.Name

패킷 캡처 시작

이전 단계가 완료되면 패킷 캡처 에이전트는 가상 머신 확장 집합에 설치됩니다.

1단계

다음 단계는 Network Watcher 인스턴스를 검색하는 것입니다. 이 변수는 4단계에서 New-AzNetworkWatcherPacketCapture cmdlet으로 전달됩니다.

$networkWatcher = Get-AzNetworkWatcher  | Where {$_.Location -eq "westcentralus" }

2단계

스토리지 계정을 검색합니다. 이 스토리지 계정은 패킷 캡처 파일을 저장하는 데 사용됩니다.

$storageAccount = Get-AzStorageAccount -ResourceGroupName testrg -Name testrgsa123

3단계

패킷 캡처에 의해 저장되는 데이터를 제한하는 데 필터를 사용할 수 있습니다. 다음 예제에서는 두 필터를 설정합니다. 한 필터는 로컬 IP 10.0.0.3에서 대상 포트 20, 80 및 443으로 나가는 TCP 트래픽을 수집합니다. 두 번째 필터는 UDP 트래픽만을 수집합니다.

$filter1 = New-AzPacketCaptureFilterConfig -Protocol TCP -RemoteIPAddress "1.1.1.1-255.255.255.255" -LocalIPAddress "10.0.0.3" -LocalPort "1-65535" -RemotePort "20;80;443"
$filter2 = New-AzPacketCaptureFilterConfig -Protocol UDP

참고 항목

패킷 캡처를 위해 여러 필터를 정의할 수 있습니다.

단계 4

패킷 캡처를 위한 범위 만들기

$s1 = New-AzPacketCaptureScopeConfig -Include "0", "1"

5단계

New-AzNetworkWatcherPacketCaptureV2 cmdlet을 실행하여 패킷 캡처 프로세스를 시작하고 이전 단계에서 검색한 필수 값을 전달합니다.


New-AzNetworkWatcherPacketCaptureV2 -NetworkWatcher $networkwatcher -PacketCaptureName $pcName -TargetId $vmss.Id -TargetType "azurevmss" -StorageAccountId $storageAccount.id -Filter $filter1, $filter2

패킷 캡처 가져오기

Get-AzNetworkWatcherPacketCapture cmdlet을 실행하고 현재 실행 중이거나 완료된 패킷 캡처의 상태를 검색합니다.

Get-AzNetworkWatcherPacketCapture -NetworkWatcher $networkWatcher -PacketCaptureName "PacketCaptureTest"

다음 예제는 Get-AzNetworkWatcherPacketCapture cmdlet의 출력입니다. 다음 예제는 캡처를 완료한 이후입니다. PacketCaptureStatus 값은 TimeExceeded의 StopReason과 함께 중지됨입니다. 이 값은 패킷 캡처가 성공했으며 해당 시간을 실행했음을 보여 줍니다.

Name                    : PacketCaptureTest
Id                      : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/NetworkWatcherRG/providers/Microsoft.Network/networkWatcher
                          s/NetworkWatcher_westcentralus/packetCaptures/PacketCaptureTest
Etag                    : W/"4b9a81ed-dc63-472e-869e-96d7166ccb9b"
ProvisioningState       : Succeeded
Target                  : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testrg/providers/Microsoft.Compute/virtualMachines/testvm1
BytesToCapturePerPacket : 0
TotalBytesPerSession    : 1073741824
TimeLimitInSeconds      : 60
StorageLocation         : {
                            "StorageId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testrg/providers/Microsoft.Storage/storageA
                          ccounts/examplestorage",
                            "StoragePath": "https://examplestorage.blob.core.windows.net/network-watcher-logs/subscriptions/00000000-0000-0000-0000-00000
                          0000000/resourcegroups/testrg/providers/microsoft.compute/virtualmachines/testvm1/2017/02/01/packetcapture_22_42_48_238.cap"
                          }
Filters                 : [
                            {
                              "Protocol": "TCP",
                              "RemoteIPAddress": "1.1.1.1-255.255.255",
                              "LocalIPAddress": "10.0.0.3",
                              "LocalPort": "1-65535",
                              "RemotePort": "20;80;443"
                            },
                            {
                              "Protocol": "UDP",
                              "RemoteIPAddress": "",
                              "LocalIPAddress": "",
                              "LocalPort": "",
                              "RemotePort": ""
                            }
                          ]
CaptureStartTime        : 2/1/2017 10:43:01 PM
PacketCaptureStatus     : Stopped
StopReason              : TimeExceeded
PacketCaptureError      : []

패킷 캡처 중지

Stop-AzNetworkWatcherPacketCapture cmdlet을 실행하여 캡처 세션이 진행 중인 경우 중지됩니다.

Stop-AzNetworkWatcherPacketCapture -NetworkWatcher $networkWatcher -PacketCaptureName "PacketCaptureTest"

참고 항목

cmdlet은 현재 실행 중인 캡처 세션 또는 이미 중지된 기존 세션에서 실행되는 경우 응답을 반환하지 않습니다.

패킷 캡처 삭제

Remove-AzNetworkWatcherPacketCapture -NetworkWatcher $networkWatcher -PacketCaptureName "PacketCaptureTest"

참고 항목

패킷 캡처를 삭제하면 스토리지 계정에서 파일을 삭제하지 않습니다.

패킷 캡처 다운로드

패킷 캡처 세션이 완료되면 캡처 파일을 Blob Storage 또는 인스턴스의 로컬 파일에 업로드할 수 있습니다. 패킷 캡처의 스토리지 위치는 세션 생성 시 정의됩니다. 스토리지 계정에 저장된 캡처 파일에 액세스하는 데 편리한 도구는 Microsoft Azure Storage Explorer이며 https://storageexplorer.com/에서 다운로드할 수 있습니다.

스토리지 계정이 지정되어 있으면 패킷 캡처 파일은 다음 위치에서 스토리지 계정에 저장됩니다.

여러 인스턴스를 선택한 경우

https://{storageAccountName}.blob.core.windows.net/network-watcher-logs/subscriptions/{subscriptionId}/resourcegroups/{storageAccountResourceGroup}/providers/microsoft.compute/virtualmachinescalesets/{VMSSName}/{year}/{month}/{day}/packetCapture_{creationTime}

단일 인스턴스를 선택한 경우

https://{storageAccountName}.blob.core.windows.net/network-watcher-logs/subscriptions/{subscriptionId}/resourcegroups/{storageAccountResourceGroup}/providers/microsoft.compute/virtualmachinescalesets/{VMSSName}/virtualMachines/{instance}/{year}/{month}/{day}/packetCapture_{creationTime}.cap

다음 단계

IP 흐름 확인 확인을 방문하여 특정 트래픽이 VM에서 허용되는지 알아봅니다.