教程:使用 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 资源组)。