Mengelola pengambilan paket untuk komputer virtual dengan Azure Network Watcher menggunakan PowerShell

Alat penangkapan paket Network Watcher memungkinkan Anda membuat sesi pengambilan untuk merekam lalu lintas jaringan ke dan dari komputer virtual (VM) Azure. Filter disediakan untuk sesi pengambilan untuk memastikan Anda hanya mengambil lalu lintas yang Anda inginkan. Pengambilan paket membantu dalam mendiagnosis anomali jaringan baik secara reaktif maupun proaktif. Aplikasinya melampaui deteksi anomali untuk mencakup pengumpulan statistik jaringan, memperoleh wawasan tentang penyusupan jaringan, men-debug komunikasi server klien, dan mengatasi berbagai tantangan jaringan lainnya. Pengambilan paket Network Watcher memungkinkan Anda memulai pengambilan paket dari jarak jauh, mengurangi kebutuhan akan eksekusi manual pada komputer virtual tertentu.

Dalam artikel ini, Anda mempelajari cara mengonfigurasi, memulai, menghentikan, mengunduh, dan menghapus pengambilan paket komputer virtual dari jarak jauh menggunakan Azure PowerShell. Untuk mempelajari cara mengelola pengambilan paket menggunakan portal Azure atau Azure CLI, lihat Mengelola pengambilan paket untuk komputer virtual menggunakan portal Azure atau Mengelola pengambilan paket untuk komputer virtual menggunakan Azure CLI.

Prasyarat

  • Akun Azure dengan langganan aktif. Buat akun secara gratis.

  • Azure Cloud Shell atau Azure PowerShell.

    Langkah-langkah dalam artikel ini menjalankan cmdlet Azure PowerShell secara interaktif di Azure Cloud Shell. Untuk menjalankan perintah di Cloud Shell, pilih Buka Cloud Shell di sudut kanan atas blok kode. Pilih Salin untuk menyalin kode lalu tempelkan ke Cloud Shell untuk menjalankannya. Anda juga dapat menjalankan Cloud Shell dari dalam portal Azure.

    Anda juga dapat menginstal Azure PowerShell secara lokal untuk menjalankan cmdlet. Artikel ini memerlukan modul Az PowerShell. Untuk informasi selengkapnya, lihat Cara menginstal Azure PowerShell. Untuk menemukan versi yang terinstal, jalankan Get-InstalledModule -Name Az. Jika Anda menjalankan PowerShell secara lokal, masuk ke Azure menggunakan cmdlet Koneksi-AzAccount.

  • Komputer virtual dengan konektivitas TCP keluar berikut:

    • ke akun penyimpanan melalui port 443
    • ke 169.254.169.254 melalui port 80
    • ke 168.63.129.16 melalui port 8037

Catatan

  • Azure membuat instans Network Watcher di wilayah komputer virtual jika Network Watcher tidak diaktifkan untuk wilayah tersebut. Untuk informasi selengkapnya, lihat Mengaktifkan atau menonaktifkan Azure Network Watcher.
  • Pengambilan paket Network Watcher mengharuskan ekstensi VM agen Network Watcher diinstal pada komputer virtual target. Untuk informasi selengkapnya, lihat Menginstal agen Network Watcher.
  • Dua alamat IP dan port terakhir yang tercantum dalam Prasyarat umum di semua alat Network Watcher yang menggunakan agen Network Watcher dan terkadang berubah.

Jika grup keamanan jaringan dikaitkan dengan antarmuka jaringan, atau subnet tempat antarmuka jaringan berada, pastikan bahwa aturan ada untuk mengizinkan konektivitas keluar melalui port sebelumnya. Demikian pula, pastikan konektivitas keluar melalui port sebelumnya saat menambahkan rute yang ditentukan pengguna ke jaringan Anda.

Menginstal agen Network Watcher

Untuk menggunakan pengambilan paket, ekstensi komputer virtual agen Network Watcher harus diinstal pada komputer virtual.

Gunakan cmdlet Get-AzVMExtension untuk memeriksa apakah ekstensi diinstal pada komputer virtual:

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

Jika ekstensi diinstal pada komputer virtual, maka Anda dapat melihatnya tercantum dalam output perintah sebelumnya:

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

Jika ekstensi tidak diinstal, gunakan cmdlet Set-AzVMExtension untuk menginstalnya:

# 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 

Setelah penginstalan ekstensi berhasil, Anda akan melihat output berikut:

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

Mulai pengambilan paket

Untuk memulai sesi pengambilan, gunakan cmdlet New-AzNetworkWatcherPacketCapture :

# 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 

Setelah sesi pengambilan dimulai, Anda akan melihat output berikut:

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

Tabel berikut ini menjelaskan parameter opsional yang bisa Anda gunakan dengan New-AzNetworkWatcherPacketCapture cmdlet:

Parameter description
-Filter Tambahkan filter untuk mengambil hanya lalu lintas yang Anda inginkan. Misalnya, Anda hanya dapat menangkap lalu lintas TCP dari alamat IP tertentu ke port tertentu.
-TimeLimitInSeconds Atur durasi maksimum sesi pengambilan. Nilai defaultnya adalah 18000 detik (5 jam).
-BytesToCapturePerPacket Atur jumlah maksimum byte yang akan diambil per setiap paket. Semua byte diambil jika tidak digunakan atau 0 dimasukkan.
-TotalBytesPerSession Atur jumlah total byte yang diambil. Setelah nilai tercapai, penangkapan paket berhenti. Hingga 1 GB (1.073.741.824 byte) ditangkap jika tidak digunakan.
-LocalFilePath Masukkan jalur file lokal yang valid jika Anda ingin pengambilan disimpan di komputer virtual target (Misalnya, C:\Capture\myVM_1.cap). Jika Anda menggunakan komputer Linux, jalur harus dimulai dengan /var/captures.

Hentikan pengambilan paket

Gunakan cmdlet Stop-AzNetworkWatcherPacketCapture untuk menghentikan sesi pengambilan paket yang sedang berjalan secara manual.

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

Catatan

Cmdlet tidak mengembalikan respons apakah dijalankan pada sesi pengambilan yang sedang berjalan atau sesi yang telah berhenti.

Mendapatkan pengambilan paket

Gunakan cmdlet Get-AzNetworkWatcherPacketCapture untuk mengambil status pengambilan paket (berjalan atau selesai).

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

Output berikut adalah contoh output dari Get-AzNetworkWatcherPacketCapture cmdlet. Contoh berikut adalah setelah pengambilan selesai. Nilai PacketCaptureStatus Dihentikan, dengan StopReason dari TimeExceeded. Nilai ini menunjukkan bahwa pengambilan paket berhasil dan menjalankan waktunya.

ProvisioningState Name   Target                                                                                                                              BytesToCapturePerPacket TotalBytesPerSession TimeLimitInSeconds
----------------- ----   ------                                                                                                                              ----------------------- -------------------- ------------------
Succeeded         myVM_1 /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM 0                       1073741824           18000

Catatan

Untuk mendapatkan detail selengkapnya dalam output, tambahkan | Format-List ke akhir perintah.

Unduh pengambilan paket

Setelah menyimpulkan sesi pengambilan paket Anda, file pengambilan yang dihasilkan disimpan ke penyimpanan Azure, file lokal pada komputer virtual target atau keduanya. Tujuan penyimpanan untuk pengambilan paket ditentukan selama pembuatannya. Untuk informasi selengkapnya, lihat Memulai pengambilan paket.

Jika akun penyimpanan ditentukan, file pengambilan disimpan ke akun penyimpanan di jalur berikut:

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

Untuk mengunduh file pengambilan paket yang disimpan ke penyimpanan Azure, gunakan cmdlet Get-AzStorageBlobContent :

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

Catatan

Anda juga dapat mengunduh file pengambilan dari kontainer akun penyimpanan menggunakan Azure Storage Explorer. Storage Explorer adalah aplikasi mandiri yang dapat Anda gunakan dengan mudah untuk mengakses dan bekerja dengan data Azure Storage. Untuk informasi selengkapnya, lihat Mulai menggunakan Storage Explorer.

Hapus pengambilan paket

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

Penting

Menghapus pengambilan paket di Network Watcher tidak menghapus file pengambilan dari akun penyimpanan atau komputer virtual. Jika Anda tidak memerlukan file pengambilan lagi, Anda harus menghapusnya secara manual dari akun penyimpanan untuk menghindari timbulnya biaya penyimpanan.