教程:使用 Azure 门户记录传入和传出虚拟网络的网络流量

虚拟网络流日志记录是Azure Network Watcher的一项功能,可用于记录流经Azure虚拟网络的 IP 流量的相关信息。 有关虚拟网络流日志记录的详细信息,请参阅虚拟网络流日志

本教程可帮助你使用 VNet 流日志来记录流经虚拟网络的虚拟机网络流量。

示意图显示了在教程中创建的资源。

本教程中,您将学习如何:

  • 创建虚拟网络
  • 创建虚拟机
  • 注册 Microsoft.Insights 提供者
  • 使用 Network Watcher 流日志为虚拟网络启用流日志
  • 下载记录的数据
  • 查看记录的数据

先决条件

  • 具有活动订阅的Azure帐户。 如果您还没有,请在开始之前创建一个试用订阅

创建虚拟网络

在这部分,你要为虚拟机创建拥有一个子网的 myVNet 虚拟网络。

  1. 登录到 Azure 门户

  2. 在门户顶部的搜索框中,输入“虚拟网络”。 在搜索结果中,选择“虚拟网络”。

    截图,演示如何在 Azure 门户中搜索虚拟网络。

  3. 选择+ 新建。 在“创建虚拟网络”的“基本信息”选项卡中,输入或选择以下值:

    设置 价值
    项目详细信息
    Subscription 选择Azure订阅。
    资源组 选择“新建”。
    名称中输入 myResourceGroup
    选择“确定”
    实例详细信息
    Name 输入“myVNet”。
    区域 选择“(亚太)中国东部”。
  4. 选择“查看 + 创建”

  5. 检查设置,然后选择创建

部署Azure Bastion

Azure Bastion使用浏览器通过其专用 IP 地址通过安全外壳(SSH)或远程桌面协议(RDP)连接到虚拟网络中的 VM。 虚拟机不需要公共 IP 地址、客户端软件或特殊配置。 有关Azure Bastion的详细信息,请参阅 Azure Bastion

注释

无论出站数据使用情况如何,按小时定价都从部署 Bastion 的时间开始算起。 有关详细信息,请参阅 定价SKU。 如果要将 Bastion 部署为教程或测试的一部分,建议在使用完此资源后将其删除。

  1. 在门户顶部的搜索框中,输入 Bastion。 从搜索结果中选择 Bastions

  2. 选择+ 新建

  3. “创建 Bastion”“基本信息”选项卡中,输入或选择以下信息:

    设置 价值
    项目详细信息
    Subscription 选择Azure订阅。
    资源组 选择“myResourceGroup”。
    实例详细信息
    Name 输入 堡垒
    区域 选择“中国东部”。
    选择 “开发人员”。
    配置虚拟网络
    虚拟网络 选择“myVNet”。
  4. 选择“查看 + 创建”

  5. 选择 创建

创建虚拟机

在本部分中,请创建“myVM”虚拟机。

  1. 在门户顶部的搜索框中,输入虚拟机。 在搜索结果中,选择“虚拟机”。

  2. 选择“+ 创建”,然后选择“虚拟机”

  3. 在“创建虚拟机”中,在“基本信息”选项卡中输入或选择以下值:

    设置 价值
    项目详细信息
    Subscription 选择Azure订阅。
    资源组 选择“myResourceGroup”。
    实例详细信息
    虚拟机名称 输入myVM
    区域 选择“(亚太)中国东部”。
    可用性选项 选择“无需基础结构冗余”。
    安全类型 选择“标准” 。
    图像 选择你喜欢的图像。 本教程使用 Windows Server 2022 Datacenter:Azure Edition - x64 Gen2
    尺寸 选择 VM 大小或保留默认设置。
    管理员帐户
    用户名 输入用户名。
    密码 输入密码。
    确认密码 重新输入密码。
  4. 选择“网络”选项卡,或选择“下一步: 磁盘”,然后选择“下一步: 网络”

  5. 在“网络”选项卡中,选择以下值:

    设置 价值
    网络接口
    虚拟网络 选择“myVNet”。
    子网 选择“mySubnet”
    公共 IP 选择 “无”。
    NIC 网络安全组 选择基本
    公共入站端口 选择 “无”。
  6. 选择“查看 + 创建”

  7. 检查设置,然后选择创建

  8. 部署完成后,选择“转到资源”以转到“myVM”的“概述”页面。

  9. 选择 “连接 ”,然后选择“ 通过 Bastion 连接”。

  10. Bastion 连接页中,输入或选择以下信息:

    设置 价值
    身份验证类型 选择密码
    用户名 输入创建的用户名。
    密码 输入创建的密码。
  11. 选择 连接

注册见解提供程序

流日志记录要求使用 Microsoft.Insights 提供程序。 若要检查其状态,请执行以下步骤:

  1. 在门户顶部的搜索框中,输入“订阅”。 从搜索结果中选择“订阅”

  2. 选择要在订阅中启用提供程序的 Azure 订阅。

  3. 在“设置”下,选择“资源提供程序”。

  4. 在筛选器框中输入见解

  5. 确认显示的提供程序状态为“已注册”。 如果状态为“NotRegistered”,请选择“Microsoft.Insights”提供程序,然后选择“注册”。

    显示如何在 Azure 门户中注册 Azure Insights 提供程序的截图。

创建存储帐户

在本部分中,你将创建一个存储帐户来使用它来存储流日志。

  1. 在门户顶部的搜索框中,输入“存储帐户”。 从搜索结果中选择“存储帐户”Storage accounts

  2. 选择+ 新建。 在“创建存储帐户”的“基本信息”选项卡中,输入或选择以下值:

    设置 价值
    项目详细信息
    Subscription 选择Azure订阅。
    资源组 选择“myResourceGroup”。
    实例详细信息
    存储帐户名称 输入唯一名称。 本教程使用 nwteststorageaccount
    区域 选择“(亚太)中国东部”。 存储帐户必须与虚拟机及其网络安全组位于同一区域。
    主要服务 选择 Azure Blob Storage 或 Azure Data Lake Storage Gen 2
    Performance 选择“标准” 。 流日志仅支持标准层存储帐户。
    冗余 选择首选的冗余(支持所有Azure Storage冗余配置)。 本教程使用本地冗余存储 (LRS)
  3. 选择“查看”选项卡或选择底部的“查看”按钮。

  4. 检查设置,然后选择创建

创建流日志

在本部分中,将创建一个虚拟网络流日志,该日志保存到之前在本教程中创建的存储帐户中。

  1. 在门户顶部的搜索框中,输入网络监视工具。 从搜索结果中选择 Network Watcher

  2. 在“日志”下,选择“流日志”。

  3. Network Watcher |流日志,选择+ 创建创建流日志蓝色按钮。

    Azure 门户中 Network Watcher 流日志的截图。

  4. 在“创建流日志”中输入或选择以下值:

    设置 价值
    项目详细信息
    Subscription 选择您要进行日志记录的网络安全组的 Azure 订阅。
    流日志类型 选择“虚拟网络”
    Virtual Network 选择“+ 选择目标资源”
    在“选择虚拟网络”中,选择“myVNet”。 然后,选择“确认选择”。
    流日志名称 保留默认值“myVNet-myresourcegroup-flowlog”
    实例详细信息
    Subscription 选择您的存储帐户的Azure订阅。
    存储帐户 选择在前面的步骤中创建的存储帐户。
    保留期(天数) 输入 10,以将流日志数据保留在存储帐户中 10 天。 要将流日志数据永久保存在存储帐户中(直到将其删除),请输入 0。 有关存储定价的信息,请参阅 Azure Storage 定价

    Azure portal 中创建流日志页面的截图。

    注释

    Azure门户在 NetworkWatcherRG 资源组中创建虚拟网络流日志。

  5. 选择“查看 + 创建”

  6. 检查设置,然后选择创建

  7. 部署完成后,选择“转到资源”,确认流日志已创建并列在“流日志”页中。

    Azure门户中流日志页面的截图,显示新创建的流日志。

  8. 请返回到 myVM 虚拟机的 Bastion 会话中。

  9. 打开Microsoft Edge并转到 www.bing.com

下载流日志

在本部分中,转到之前选择的存储帐户,并下载在上一部分创建的流日志。

  1. 在门户顶部的搜索框中,输入“存储帐户”。 从搜索结果中选择“存储帐户”Storage accounts

  2. 选择“nwteststorageaccount”或之前创建并选择用于存储日志的存储帐户

  3. 在“数据存储”下,选择“容器”。

  4. 选择“insights-logs-flowlogflowevent”容器

  5. 在容器的文件夹层次结构中导航,直到找到要下载的 PT1H.json 文件。 虚拟网络流日志文件遵循以下路径:

    https://{storageAccountName}.blob.core.chinacloudapi.cn/insights-logs-flowlogflowevent/flowLogResourceID=/{subscriptionID}_NETWORKWATCHERRG/NETWORKWATCHER_{Region}_{ResourceName}-{ResourceGroupName}-FLOWLOGS/y={year}/m={month}/d={day}/h={hour}/m=00/macAddress={macAddress}/PT1H.json
    
  6. 选择 PT1H.json 文件右侧的省略号“...”,然后选择“下载”。

    截图演示如何从 Azure 门户的存储帐户中下载虚拟网络流日志数据。

注释

可以使用Azure Storage Explorer从存储帐户访问和下载流日志。 有关详细信息,请参阅 Get started with Storage Explorer

查看流日志

使用所选文本编辑器打开下载的 PT1H.json 文件。 以下示例是从下载的 PT1H.json 文件中截取的一部分,展示了由规则 DefaultRule_AllowInternetOutBound 处理的流动。

{
    "time": "2025-08-06T20:39:33.3186341Z",
    "flowLogGUID": "00000000-0000-0000-0000-000000000000",
    "macAddress": "6045BDD6DD48",
    "category": "FlowLogFlowEvent",
    "resourceId": "/SUBSCRIPTIONS/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e//RESOURCEGROUPS/NETWORKWATCHERRG/PROVIDERS/MICROSOFT.NETWORK/NETWORKWATCHERS/NETWORKWATCHER_China East/FLOWLOGS/MYVNET-MYRESOURCEGROUP-FLOWLOG",
	"flowLogVersion": 4,
    "operationName": "FlowLogFlowEvent",
    "flowRecords": {
        "flows": [
            {
				"aclID": "00000000-0000-0000-0000-000000000000",
				"flowGroups": [
					{
                        "rule": "DefaultRule_AllowInternetOutBound",
                        "flowTuples": [
                            "1754512773,10.0.0.4,13.107.21.200,49982,443,6,O,C,NX,7,1158,12,8143"                            
                        ]
                    }
                ]
            }
        ]
    }
}

flowTuples 的逗号分隔信息如下所示:

示例数据 数据的代表性 Explanation
1754512773 时间戳 UNIX EPOCH 时间格式下流发生的时间戳。 在前面的示例中,日期转换为 2025 年 8 月 6 日 08:39:33 UTC/GMT。
10.0.0.4 源 IP 地址 流源自的源 IP 地址。 10.0.0.4 是之前创建的 VM 的专用 IP 地址。
13.107.21.200 目标 IP 地址 充当流目标的目标 IP 地址。13.107.21.200 是 www.bing.com 的 IP 地址。 由于流量发往Azure外部,因此安全规则DefaultRule_AllowInternetOutBound处理流。
49982 Source Port 流源自的源端口。
443 目标端口 流所指向的目标端口。
6 协议 IANA 分配值中的流的第 4 层协议:6:TCP。
O 方向 流的方向。 O:出站。
C 流状态 流的状态。 C:继续持续流。
NX 流加密 连接未加密。
7 发送的数据包 自上次更新以来发送到目标的 TCP 数据包总数。
1158 发送的字节数 自上次更新以来从源发送到目标的 TCP 数据包字节总数。 数据包字节包括数据包标头和有效负载。
12 收到的数据包 自上次更新以来从目标接收的 TCP 数据包总数。
8143 接收的字节数 自上次更新以来从目标接收的 TCP 数据包字节总数。 数据包字节包括数据包标头和有效负载。

清理资源

不再需要 myResourceGroup 资源组时,将其及其包含的所有资源删除:

  1. 在门户顶部的搜索框中输入 myResourceGroup。 从搜索结果中选择“myResourceGroup”。

  2. 选择“删除资源组”。

  3. 在“删除资源组”中,输入 myResourceGroup,然后选择“删除”。

  4. 选择“删除”以确认删除资源组及其所有资源。

注释

NetworkWatcher_chinaeast/myVNet-myresourcegroup-flowlog 资源位于 NetworkWatcherRG 资源组中,但在删除 myVNet 虚拟网络后会删除它(通过删除 myResourceGroup 资源组)。