PowerShell kullanarak Azure Ağ İzleyicisi ile sanal makineler için paket yakalamalarını yönetme

Ağ İzleyicisi paket yakalama aracı, Azure sanal makinesine (VM) gelen ve bu makineden gelen ağ trafiğini kaydetmek için yakalama oturumları oluşturmanıza olanak tanır. Yalnızca istediğiniz trafiği yakalamanızı sağlamak için yakalama oturumu için filtreler sağlanır. Paket yakalama, ağ anomalilerini hem reaktif hem de proaktif olarak tanılamaya yardımcı olur. Uygulamaları, anomali algılamanın ötesine geçerek ağ istatistikleri toplamayı, ağ yetkisiz girişleriyle ilgili içgörüler elde etme, istemci-sunucu iletişiminde hata ayıklama ve diğer çeşitli ağ sorunlarını gidermeyi içerir. Ağ İzleyicisi paket yakalama, belirli bir sanal makinede el ile yürütme gereksinimini ortadan kaldırın ve paket yakalamalarını uzaktan başlatmanızı sağlar.

Bu makalede, Azure PowerShell kullanarak bir sanal makine paket yakalamasını uzaktan yapılandırmayı, başlatmayı, durdurmayı, indirmeyi ve silmeyi öğreneceksiniz. Azure portalını veya Azure CLI'yı kullanarak paket yakalamalarını yönetmeyi öğrenmek için bkz . Azure portalını kullanarak sanal makineler için paket yakalamalarını yönetme veya Azure CLI kullanarak sanal makineler için paket yakalamalarını yönetme.

Önkoşullar

  • Etkin aboneliği olan bir Azure hesabı. Ücretsiz hesap oluşturun.

  • Azure Cloud Shell veya Azure PowerShell.

    Bu makaledeki adımlar Azure Cloud Shell'de Azure PowerShell cmdlet'lerini etkileşimli olarak çalıştırır. Komutları Cloud Shell'de çalıştırmak için kod bloğunun sağ üst köşesindeki Cloud Shell'i Aç'ı seçin. Kodu kopyalamak için Kopyala'yı seçin ve çalıştırmak için Cloud Shell'e yapıştırın. Cloud Shell'i Azure portalından da çalıştırabilirsiniz.

    Cmdlet'leri çalıştırmak için Azure PowerShell'i yerel olarak da yükleyebilirsiniz. Bu makale, Az PowerShell modülünü gerektirir. Daha fazla bilgi için bkz . Azure PowerShell'i yükleme. Yüklü sürümü bulmak için Get-InstalledModule -Name Az komutunu çalıştırın. PowerShell'i yerel olarak çalıştırıyorsanız Bağlan-AzAccount cmdlet'ini kullanarak Azure'da oturum açın.

  • Aşağıdaki giden TCP bağlantısına sahip bir sanal makine:

    • 443 numaralı bağlantı noktası üzerinden depolama hesabına
    • 80 numaralı bağlantı noktası üzerinden 169.254.169.254'e
    • 8037 numaralı bağlantı noktası üzerinden 168.63.129.16'ya

Not

  • Azure, Ağ İzleyicisi bu bölge için etkinleştirilmediyse sanal makinenin bölgesinde bir Ağ İzleyicisi örneği oluşturur. Daha fazla bilgi için bkz. Azure Ağ İzleyicisi etkinleştirme veya devre dışı bırakma.
  • Ağ İzleyicisi paket yakalama, hedef sanal makineye Ağ İzleyicisi aracı VM uzantısının yüklenmesini gerektirir. Daha fazla bilgi için bkz. Ağ İzleyicisi aracısını yükleme.
  • Önkoşullar bölümünde listelenen son iki IP adresi ve bağlantı noktası, Ağ İzleyicisi aracısını kullanan ve zaman zaman değişebilen tüm Ağ İzleyicisi araçlarda yaygındır.

Bir ağ güvenlik grubu ağ arabirimiyle veya ağ arabiriminin bulunduğu alt ağ ile ilişkiliyse, önceki bağlantı noktaları üzerinden giden bağlantıya izin vermek için kuralların mevcut olduğundan emin olun. Benzer şekilde, ağınıza kullanıcı tanımlı yollar eklerken önceki bağlantı noktaları üzerinden giden bağlantı olduğundan emin olun.

Ağ İzleyicisi aracıyı yükleme

Paket yakalamayı kullanmak için Ağ İzleyicisi aracısı sanal makine uzantısının sanal makineye yüklenmesi gerekir.

Uzantının sanal makinede yüklü olup olmadığını denetlemek için Get-AzVMExtension cmdlet'ini kullanın:

# List the installed extensions on the virtual machine.
Get-AzVMExtension -VMName 'myVM' -ResourceGroupName 'myResourceGroup' | format-table Name, Publisher, ExtensionType, EnableAutomaticUpgrade 

Uzantı sanal makinede yüklüyse, önceki komutun çıkışında listelendiğini görebilirsiniz:

Name                         Publisher                      ExtensionType            EnableAutomaticUpgrade
----                         ---------                      -------------            ----------------------
AzureNetworkWatcherExtension Microsoft.Azure.NetworkWatcher NetworkWatcherAgentLinux                   True

Uzantı yüklü değilse, yüklemek için Set-AzVMExtension cmdlet'ini kullanın:

# Install Network Watcher agent on a Linux virtual machine.
Set-AzVMExtension -Publisher 'Microsoft.Azure.NetworkWatcher' -ExtensionType 'NetworkWatcherAgentLinux' -Name 'AzureNetworkWatcherExtension' -VMName 'myVM' -ResourceGroupName 'myResourceGroup' -TypeHandlerVersion '1.4' -EnableAutomaticUpgrade 1 
# Install Network Watcher agent on a Windows virtual machine.
Set-AzVMExtension -Publisher 'Microsoft.Azure.NetworkWatcher' -ExtensionType 'NetworkWatcherAgentWindows' -Name 'AzureNetworkWatcherExtension' -VMName 'myVM' -ResourceGroupName 'myResourceGroup' -TypeHandlerVersion '1.4' -EnableAutomaticUpgrade 1 

Uzantı başarıyla yüklendikten sonra aşağıdaki çıkışı görürsünüz:

RequestId IsSuccessStatusCode StatusCode ReasonPhrase
--------- ------------------- ---------- ------------
                         True         OK 

Paket yakalamayı başlatma

Yakalama oturumu başlatmak için New-AzNetworkWatcherPacketCapture cmdlet'ini kullanın:

# Place the virtual machine configuration into a variable.
$vm = Get-AzVM -ResourceGroupName 'myResourceGroup' -Name 'myVM'

# Place the storage account configuration into a variable.
$storageAccount = Get-AzStorageAccount -ResourceGroupName 'myResourceGroup' -Name 'mystorageaccount'

# Start the Network Watcher capture session.
New-AzNetworkWatcherPacketCapture -Location 'eastus' -PacketCaptureName 'myVM_1' -TargetVirtualMachineId $vm.Id  -StorageAccountId $storageAccount.Id 

Yakalama oturumu başlatıldıktan sonra aşağıdaki çıkışı görürsünüz:

ProvisioningState Name   BytesToCapturePerPacket TotalBytesPerSession TimeLimitInSeconds
----------------- ----   ----------------------- -------------------- ------------------
Succeeded         myVM_1 0                       1073741824           18000

Aşağıdaki tabloda, cmdlet'iyle New-AzNetworkWatcherPacketCapture kullanabileceğiniz isteğe bağlı parametreler açıklanmaktadır:

Parametre açıklama
-Filter Yalnızca istediğiniz trafiği yakalamak için filtre ekleyin. Örneğin, belirli bir IP adresinden belirli bir bağlantı noktasına yalnızca TCP trafiğini yakalayabilirsiniz.
-TimeLimitInSeconds Yakalama oturumunun en uzun süresini ayarlayın. Varsayılan değer 18000 saniyedir (5 saat).
-BytesToCapturePerPacket Her paket için yakalanacak en fazla bayt sayısını ayarlayın. Kullanılmadıysa veya 0 girilirse tüm baytlar yakalanır.
-TotalBytesPerSession Yakalanan toplam bayt sayısını ayarlayın. Değere ulaşıldıktan sonra paket yakalama durdurulur. Kullanılmıyorsa en fazla 1 GB (1.073.741.824 bayt) yakalanır.
-LocalFilePath Yakalamanın hedef sanal makineye kaydedilmesini istiyorsanız geçerli bir yerel dosya yolu girin (örneğin, C:\Capture\myVM_1.cap). Linux makinesi kullanıyorsanız yolun /var/captures ile başlaması gerekir.

Paket yakalamayı durdurma

Çalışan paket yakalama oturumlarını el ile durdurmak için Stop-AzNetworkWatcherPacketCapture cmdlet'ini kullanın.

# Manually stop a packet capture session.
Stop-AzNetworkWatcherPacketCapture -Location 'eastus' -PacketCaptureName 'myVM_1'

Not

Cmdlet, çalışmakta olan bir yakalama oturumunda veya zaten durdurulmuş bir oturumda çalıştırılan bir yanıt döndürmez.

Paket yakalama alma

Paket yakalama durumunu almak için Get-AzNetworkWatcherPacketCapture cmdlet'ini kullanın (çalışıyor veya tamamlandı).

# Get information, properties, and status of a packet capture.
Get-AzNetworkWatcherPacketCapture -Location 'eastus' -PacketCaptureName 'myVM_1'

Aşağıdaki çıkış, cmdlet'in çıktısının Get-AzNetworkWatcherPacketCapture bir örneğidir. Aşağıdaki örnek, yakalama tamamlandıktan sonradır. PacketCaptureStatus değeri, StopReason of TimeExceeded değeriyle Durduruldu değeridir. Bu değer, paket yakalama işleminin başarılı olduğunu ve zamanını çalıştırdığını gösterir.

ProvisioningState Name   Target                                                                                                                              BytesToCapturePerPacket TotalBytesPerSession TimeLimitInSeconds
----------------- ----   ------                                                                                                                              ----------------------- -------------------- ------------------
Succeeded         myVM_1 /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM 0                       1073741824           18000

Not

Çıktıda daha fazla ayrıntı almak için komutun sonuna ekleyin | Format-List .

Paket yakalamayı indirme

Paket yakalama oturumunuzu tamamladıktan sonra elde edilen yakalama dosyası Azure depolamaya, hedef sanal makinedeki yerel bir dosyaya veya her ikisine de kaydedilir. Paket yakalama için depolama hedefi, oluşturma sırasında belirtilir. Daha fazla bilgi için bkz . Paket yakalamayı başlatma.

Bir depolama hesabı belirtilirse, yakalama dosyaları aşağıdaki yolda depolama hesabına kaydedilir:

https://{storageAccountName}.blob.core.windows.net/network-watcher-logs/subscriptions/{subscriptionId}/resourcegroups/{storageAccountResourceGroup}/providers/microsoft.compute/virtualmachines/{virtualMachineName}/{year}/{month}/{day}/packetcapture_{UTCcreationTime}.cap

Azure depolama alanına kaydedilmiş bir paket yakalama dosyasını indirmek için Get-Az Depolama BlobContent cmdlet'ini kullanın:

# Download the packet capture file from Azure storage container.
Get-AzStorageBlobContent -Container 'network-watcher-logs' -Blob 'subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/myresourcegroup/providers/microsoft.compute/virtualmachines/myvm/2024/01/25/packetcapture_22_44_54_342.cap' -Destination 'C:\Capture\myVM_1.cap'

Not

Yakalama dosyasını Azure Depolama Gezgini kullanarak depolama hesabı kapsayıcısından da indirebilirsiniz. Depolama Gezgini, Azure Depolama verilerine erişmek ve bunlarla çalışmak için kolayca kullanabileceğiniz tek başına bir uygulamadır. Daha fazla bilgi için bkz. Depolama Explorer'ı kullanmaya başlama.

Paket yakalamayı silme

# Remove a packet capture resource.
Remove-AzNetworkWatcherPacketCapture -Location 'eastus' -PacketCaptureName 'myVM_1'

Önemli

Ağ İzleyicisi'de paket yakalama silindiğinde, yakalama dosyası depolama hesabından veya sanal makineden silinmez. Yakalama dosyasına artık ihtiyacınız yoksa, depolama maliyetlerinin oluşmasını önlemek için dosyayı depolama hesabından el ile silmeniz gerekir.