使用 Azure 網路監看員 啟動、停止、下載和刪除封包擷取
本文內容
在本文中,您將瞭解如何使用 Azure 網路監看員 封包擷取 功能,從遠端設定、啟動、停止、下載和刪除封包擷取。
必要條件
具有有效訂用帳戶的 Azure 帳戶。
免費建立帳戶 。
具有輸出 TCP 連線的虛擬機 (VM) 或虛擬機擴展集: 169.254.169.254
透過埠 80
和 168.63.129.16
埠 8037
。 網路監看員 代理程式 VM 擴充功能會使用這些 IP 位址與 Azure 平台通訊。
網路監看員 目標虛擬機上安裝的代理程式 VM 擴充功能。 每當您在 Azure 入口網站中使用網路監看員封包擷取時,如果尚未安裝代理程式,就會在目標虛擬機器或擴展集上自動安裝。 若要更新已安裝的代理程式,請參閱將 Azure 網路監看員擴充功能更新為最新版本 (部分機器翻譯)。
具有 VM 輸出 TCP 連線的 Azure 記憶體帳戶,可透過埠 443
連線。 如果您沒有記憶體帳戶,請參閱使用 Azure 入口網站 建立記憶體帳戶。 記憶體帳戶必須可從目標虛擬機或擴展集的子網存取。 如需詳細資訊,請參閱設定 Azure 儲存體防火牆和虛擬網路 。
使用您的 Azure 帳戶登入 Azure 入口網站 。
具有有效訂用帳戶的 Azure 帳戶。
免費建立帳戶 。
具有輸出 TCP 連線的虛擬機(VM): 169.254.169.254
透過埠 80
和 168.63.129.16
埠 8037
。 網路監看員 代理程式 VM 擴充功能會使用這些 IP 位址與 Azure 平台通訊。
網路監看員 安裝在目標虛擬機上的代理程式 VM 擴充功能。 如需詳細資訊,請參閱管理適用於 Windows 的 網路監看員 代理程式 VM 擴充功能或管理適用於 Linux 的 網路監看員 代理程式 VM 擴充功能。
具有 VM 輸出 TCP 連線的 Azure 記憶體帳戶,可透過埠 443
連線。 如果您沒有記憶體帳戶,請參閱 使用PowerShell 建立記憶體帳戶。 記憶體帳戶必須可從目標虛擬機或擴展集的子網存取。 如需詳細資訊,請參閱設定 Azure 儲存體防火牆和虛擬網路 。
Azure Cloud Shell 或 Azure PowerShell。
本文中的步驟會在 Azure Cloud Shell 中以互動方式執行 Azure PowerShell Cmdlet。 若要在 Cloud Shell 中執行命令,請選取程式碼區塊右上角的 [開啟 Cloud Shell] 。 選取 [複製] 以複製程式碼,然後將其貼入 Cloud Shell 以執行。 您也可以從 Azure 入口網站內執行 Cloud Shell。
您也可以在本機安裝 Azure PowerShell 來執行 Cmdlet。 本文需要 Az PowerShell 模組。 如需詳細資訊,請參閱安裝 Azure PowerShell (部分機器翻譯)。 如果您在本機執行 PowerShell,請使用 Connect-AzAccount Cmdlet 登入 Azure。
具有有效訂用帳戶的 Azure 帳戶。
免費建立帳戶 。
具有輸出 TCP 連線的虛擬機(VM): 169.254.169.254
透過埠 80
和 168.63.129.16
埠 8037
。 網路監看員 代理程式 VM 擴充功能會使用這些 IP 位址與 Azure 平台通訊。
網路監看員 目標虛擬機上安裝的代理程式 VM 擴充功能。 如需詳細資訊,請參閱管理適用於 Windows 的 網路監看員 代理程式 VM 擴充功能或管理適用於 Linux 的 網路監看員 代理程式 VM 擴充功能。
具有 VM 輸出 TCP 連線的 Azure 記憶體帳戶,可透過埠 443
連線。 如果您沒有記憶體帳戶,請參閱 使用 Azure CLI 建立記憶體帳戶。 記憶體帳戶必須可從目標虛擬機或擴展集的子網存取。 如需詳細資訊,請參閱設定 Azure 儲存體防火牆和虛擬網路 。
Azure Cloud Shell 或 Azure CLI。
本文中的步驟會在 Azure Cloud Shell 中以互動方式執行 Azure CLI 命令。 若要在 Cloud Shell 中執行命令,請選取程式碼區塊右上角的 [開啟 Cloud Shell] 。 選取 [複製] 以複製程式碼,並將它貼到 Cloud Shell 中以執行。 您也可以從 Azure 入口網站內執行 Cloud Shell。
您也可以在本機安裝 Azure CLI 以執行命令。 如果您在本機執行 Azure CLI,請使用 az login 命令登入 Azure。
如果網路安全性群組與該網路介面相關聯,或是與該網路介面所在的子網路相關聯,請確定有規則允許透過前述連接埠的輸出連線。 同樣地,將使用者定義的路由新增至您的網路時,請確定有透過前述連接埠的輸出連線。
啟動封包擷取
若要啟動擷取工作階段,請使用下列步驟:
在入口網站頂端的搜尋方塊中,輸入網路監看員 。 從搜尋結果中,選取 [網路監看員] 。
選取 [網络診斷工具] 底下的 [封包擷取 ],然後選取 [+ 新增 ] 以建立封包擷取。
在在 [新增封包擷取] 中,輸入或選取下列設定的值:
設定
值
基本詳細資料
訂用帳戶
選取虛擬機器的 Azure 訂用帳戶。
資源群組
選取虛擬機器的資源群組。
目標類型
選取 [虛擬機] 或 [ 虛擬機擴展集 ]。
目標虛擬機擴展集
選取虛擬機擴展集。 如果您選取 [虛擬機擴展集 ] 作為目標類型,則可以使用此選項。
目標執行個體
選取虛擬機或擴展集實例。
封包擷取名稱
輸入名稱或保留預設名稱。
封包擷取設定
擷取位置
選取 [記憶體帳戶 ] (預設選項)、[檔案 ] 或 [兩者]。
儲存體帳戶
選取您的標準 儲存體帳戶1 。 如果您選取 [ 記憶體帳戶 ] 或 [兩者] 作為擷取位置,則可以使用此選項。 記憶體帳戶必須位於與目標實例相同的區域中。
本機檔案路徑
輸入您想要在目標虛擬機器中儲存擷取的有效本機檔案路徑。 如果您使用 Linux 計算機,路徑可以從 開始 /var/captures
。 如果您使用 Windows 計算機,路徑可以從 開始 C:\Captures
。 如果您選取 [檔案 ] 或 [兩者] 作為擷取位置,則可以使用此選項。
每個封包的位元組數上限
輸入每個封包要擷取的最大位元組數。 如果保留空白或輸入 0,則會擷取所有位元組。
每個工作階段的位元組數上限
輸入要擷取的位元組總數。 到達該值之後,封包擷取就會停止。 如果保留空白,最多會擷取 1 GB。
時間限制 (秒)
輸入封包擷取工作階段的時間限制 (以秒為單位)。 到達該值之後,封包擷取就會停止。 如果保留空白,最多會擷取 5 小時 (18,000 秒)。
篩選 (選用)
新增篩選準則
選取 [新增篩選準則] 以新增新的篩選。 您可以視需要定義不限數量的篩選。
通訊協定
根據選取的通訊協定來篩選封包擷取。 可用的值為 TCP 、UDP 或 Any 。
本機 IP 位址2
針對本機 IP 位址符合此值的封包來篩選封包擷取。
本機連接埠2
針對本機連接埠符合此值的封包來篩選封包擷取。
遠端 IP 位址2
針對遠端 IP 位址符合此值的封包來篩選封包擷取。
遠端連接埠2
針對遠端連接埠符合此值的封包來篩選封包擷取。
1 儲存封包擷取目前不支援進階儲存體帳戶。
2 連接埠和 IP 位址的值可以是單一值、範圍 (如 80-1024) ,或多個值 (如 80、443)。
選取 [啟動封包擷取] 。
封包擷取會在達到時間限制或達到每個會話的位元組上限後停止。
若要啟動擷取工作階段,請使用 New-AzNetworkWatcherPacketCapture Cmdlet:
# 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
啟動擷取工作階段之後,您看到下列輸出:
ProvisioningState Name BytesToCapturePerPacket TotalBytesPerSession TimeLimitInSeconds
----------------- ---- ----------------------- -------------------- ------------------
Succeeded myVM_1 0 1073741824 18000
下表描述您可以搭配 New-AzNetworkWatcherPacketCapture Cmdlet 使用的選擇性參數:
參數
description
-Filter
新增篩選條件以只擷取您想要的流量。 例如,您可以只擷取從特定 IP 位址至特定連接埠的 TCP 流量。
-TimeLimitInSeconds
設定擷取工作階段的持續時間上限。 預設值是 18000 秒 (5 小時)。
-BytesToCapturePerPacket
設定每個封包要擷取的位元組數上限。 如果未使用或輸入 0,則會擷取所有位元組。
-TotalBytesPerSession
設定擷取的位元組總數。 到達該值之後,封包擷取就會停止。 如果未使用,最多可擷取 1 GB (1,073,741,824 位元組)。
-LocalFilePath
如果您想要將擷取內容儲存在目標虛擬機器中,請輸入有效的本機檔案路徑 (例如 C:\Capture\myVM_1.cap)。 如果您使用 Linux 機器,路徑必須以 /var/captures 開頭。
封包擷取會在達到時間限制或達到每個會話的位元組上限後停止。
若要啟動擷取會話,請使用 az network watcher packet-capture create 命令:
# Start the Network Watcher capture session.
az network watcher packet-capture create --name 'myVM_1' --resource-group 'myResourceGroup' --vm 'myVM' --storage-account 'mystorageaccount'
# Start the Network Watcher capture session (storage account is in different resource group from the VM).
az network watcher packet-capture create --name 'myVM_1' --resource-group 'myResourceGroup' --vm 'myVM' --storage-account '/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/myResourceGroup2/providers/Microsoft.Storage/storageAccounts/mystorageaccount'
啟動擷取工作階段之後,您看到下列輸出:
{
"bytesToCapturePerPacket": 0,
"etag": "W/\"aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb\"",
"filters": [],
"id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/NetworkWatcherRG/providers/Microsoft.Network/networkWatchers/NetworkWatcher_eastus/packetCaptures/myVM_1",
"name": "myVM_1",
"provisioningState": "Succeeded",
"resourceGroup": "NetworkWatcherRG",
"scope": {
"exclude": [],
"include": []
},
"storageLocation": {
"storageId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/myResourceGroup/providers/Microsoft.Storage/storageAccounts/mystorageaccount",
"storagePath": "https://mystorageaccount.blob.core.windows.net/network-watcher-logs/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/myresourcegroup/providers/microsoft.compute/virtualmachines/myvm/2025/01/31/packetcapture_16_39_41_077.cap"
},
"target": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM",
"targetType": "AzureVM",
"timeLimitInSeconds": 18000,
"totalBytesPerSession": 1073741824
}
下表描述您可以搭配 az network watcher packet-capture create 命令使用的選擇性參數:
參數
description
--filters
新增篩選條件以只擷取您想要的流量。 例如,您可以只擷取從特定 IP 位址至特定連接埠的 TCP 流量。
--time-limit
設定擷取工作階段的持續時間上限。 預設值是 18000 秒 (5 小時)。
--capture-size
設定每個封包要擷取的位元組數上限。 如果未使用或輸入 0,則會擷取所有位元組。
--capture-limit
設定擷取的位元組總數。 到達該值之後,封包擷取就會停止。 如果未使用,最多可擷取 1 GB (1,073,741,824 位元組)。
--file-path
如果您想要將擷取內容儲存在目標虛擬機器中,請輸入有效的本機檔案路徑 (例如 C:\Capture\myVM_1.cap)。 如果您使用 Linux 機器,路徑必須以 /var/captures 開頭。
封包擷取會在達到時間限制或達到每個會話的位元組上限後停止。
停止封包擷取
若要在封包擷取會話達到時間或檔案大小限制之前手動停止封包擷取會話,請選取封包擷取右側的省略號 ... ,或以滑鼠右鍵按單擊它,然後選取 [ 停止 ]。
若要在封包擷取會話達到時間或檔案大小限制之前手動停止,請使用 Stop-AzNetworkWatcherPacketCapture Cmdlet。
# Manually stop a packet capture session.
Stop-AzNetworkWatcherPacketCapture -Location 'eastus' -PacketCaptureName 'myVM_1'
注意
此 Cmdlet 的執行位置無論是目前正在執行的擷取工作階段或是已停止的工作階段,都不會傳回任何回應。
若要在封包擷取會話達到時間或檔案大小限制之前手動停止封包擷取會話,請使用 az network watcher packet-capture stop 命令。
# Manually stop a packet capture session.
az network watcher packet-capture stop --location 'eastus' --name 'myVM_1'
注意
命令不會傳回回應,無論是在目前正在執行的擷取會話上執行,還是已經停止的會話。
檢視封包擷取狀態
移至 網路監看員 的 [封包擷取 ] 頁面,即可列出不論其狀態為何的現有封包擷取。
使用 Get-AzNetworkWatcherPacketCapture Cmdlet 擷取封包擷取的狀態 (執行中或已完成)。
# Get information, properties, and status of a packet capture.
Get-AzNetworkWatcherPacketCapture -Location 'eastus' -PacketCaptureName 'myVM_1'
下列輸出是來自 Get-AzNetworkWatcherPacketCapture
Cmdlet 的輸出範例。 下列範例是在擷取完成後。 PacketCaptureStatus 值為 Stopped,而 StopReason 為 TimeExceeded。 這個值說明封包擷取已順利完成,並執行了它的時間。
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
注意
若要在輸出中取得更多詳細資料,請將 | Format-List
新增至命令結尾處。
使用 az network watcher packet-capture show-status 命令來擷取封包擷取的狀態(執行中或已完成)。
# Get information, properties, and status of a packet capture.
az network watcher packet-capture show-status --location 'eastus' --name 'myVM_1'
下列範例 az network watcher packet-capture show-status
命令的輸出。 您可以看到 packetCaptureStatus 值為 Stopped,且 StopReason 值為 TimeExceeded :
{
"additionalProperties": {
"status": "Succeeded"
},
"captureStartTime": "2016-12-06T17:20:01.5671279Z",
"id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/NetworkWatcherRG/providers/Microsoft.Network/networkWatchers/NetworkWatcher_eastus/packetCaptures/myVM_1",
"name": "packetCaptureName",
"packetCaptureError": [],
"packetCaptureStatus": "Stopped",
"stopReason": "TimeExceeded"
}
下載封包擷取
封包擷取會話完成之後,產生的擷取檔案會儲存至 Azure 儲存體、目標虛擬機上的本機檔案,或兩者。 封包擷取的儲存體目的地會在封包建立期間指定。 如需詳細資訊,請參閱 啟動封包擷取 一節。
若要下載儲存至 Azure 儲存體的封包擷取檔案,請遵循下列步驟:
在 [封包擷取] 頁面中,選取您想要下載其檔案的封包擷取。
在 [詳細資料] 區段中,選取封包擷取檔案連結。
在 [Blob] 頁面中,選取 [下載] 。
您也可以直接前往下列路徑的記憶體帳戶容器來下載擷取檔案:
https://{storageAccountName}.blob.core.windows.net/network-watcher-logs/subscriptions/{subscriptionId}/resourcegroups/{storageAccountResourceGroup}/providers/microsoft.compute/virtualmachines/{virtualMachineName}/{year}/{month}/{day}/packetcapture_{UTCcreationTime}.cap
如果已指定儲存體帳戶,擷取檔案便會儲存至該儲存體帳戶的下列路徑:
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 記憶體下載到本機磁碟,請使用 Get-AzStorageBlobContent Cmdlet:
# 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'
如果已指定儲存體帳戶,擷取檔案便會儲存至該儲存體帳戶的下列路徑:
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 記憶體下載到本機磁碟,請使用 az storage blob download 命令:
# Download the packet capture file from Azure storage container.
az storage blob download --container-name 'network-watcher-logs' --blob-url '/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/myresourcegroup/providers/microsoft.compute/virtualmachines/myvm/2024/01/25/packetcapture_22_44_54_342.cap' --file 'C:\Capture\myVM_1.cap'
注意
您可以使用 Azure 儲存體 Explorer,從記憶體帳戶容器下載擷取檔案。 儲存體總管是使用便利的獨立應用程式,可讓您存取和使用 Azure 儲存體資料。 如需詳細資訊,請參閱開始使用儲存體總管 。
重要
在封包擷取會話期間,擷取檔案可能不會立即出現在記憶體帳戶容器中,因為它一開始會儲存到暫存位置。 檔案會在擷取會話完成之後傳輸至其最終位置。
若要下載儲存至虛擬機器 (VM) 的封包擷取檔案,請連線到 VM,並從封包擷取建立期間指定的本機路徑下載檔案。
刪除封包擷取
在 [封包擷取] 頁面中,選取位於您要將其刪除之封包擷取右側的 [...] ,或以滑鼠右鍵按一下它,然後選取 [刪除] 。
選取 [是] 。
重要
刪除 網路監看員 中的封包擷取資源並不會從記憶體帳戶或虛擬機中刪除擷取檔案。 如果您不再需要擷取檔案,您必須從記憶體帳戶或虛擬機手動刪除它。
相關內容