你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用数据包捕获来故障排除 Azure 防火墙

使用 Azure 防火墙的数据包捕获功能,可以捕获和分析网络流量以进行故障排除。 本文介绍如何配置筛选器、捕获流量和分析结果。

先决条件

创建存储帐户

创建存储帐户并获取存储捕获数据包的容器的 SAS URL。

设置存储帐户

  1. 在 Azure 门户中,依次选择“ 创建资源”、“搜索 存储帐户”和“ 创建”。

  2. 在“ 基本信息 ”选项卡上,输入存储帐户所需的信息。

  3. 在“ 高级 ”选项卡上的“ 安全性”下,选择“ 允许在单个容器上启用匿名访问”。 保留其他默认设置。

    存储帐户“高级”选项卡的屏幕截图,其中显示了“安全”部分,其中显示了“允许对单个容器启用匿名访问”选项。

创建容器

  1. 创建存储帐户后,转到资源并选择“数据存储”下的“容器”。

  2. 选择 “+ 容器 ”并为新容器提供名称。

  3. 对于匿名访问级别,请选择“容器”(容器和 Blob 的匿名读取访问)。

    “新建容器”对话框的屏幕截图,其中“匿名访问级别”设置为“容器”(容器和 Blob 的匿名读取访问权限)。

生成 SAS URL

  1. 创建容器后,选择它旁边的 ... (省略号),然后选择“ 生成 SAS”。

  2. 在“ 生成 SAS ”页上的 “权限”下,清除 “读取 权限”,然后选择“ 写入”。

    “生成 SAS”页的屏幕截图,其中显示了“权限”部分,其中选择了“写入权限”并清除了“读取权限”。

  3. 选择“ 生成 SAS 令牌和 URL ”,并复制生成的 SAS URL。

重要

如果未正确配置存储帐户 SAS URL,则数据包捕获会失败。 请精确执行所有步骤:

  • 在单个容器上启用匿名访问
  • 将匿名访问级别设置为 容器
  • 仅授予 写入 权限并清除 读取

常见配置错误:

  • SAS URL 缺少写入权限
  • 未启用容器级访问
  • 指向 Blob 存储而非容器的 SAS URL

配置并运行数据包捕获

在防火墙上配置和启动数据包捕获。

访问数据包捕获

  1. 在 Azure 门户中访问防火墙。
  2. “帮助”下,选择“ 数据包捕获”。

配置捕获设置

  1. 在“数据包捕获”页上,配置以下设置:

    • 数据包捕获名称:输入捕获文件的唯一名称。
    • 输出 SAS URL:粘贴创建的存储容器的 SAS URL。

    小窍门

    为每个捕获使用唯一的文件名来保留以前的结果。 使用相同文件名在同一个 SAS URL 上运行多个捕获操作会覆盖现有文件。

  2. 设置基本捕获参数:

    • 最大数据包数量:请输入 100 到 90,000 个数据包之间的值。
    • 时间限制(秒):输入介于 30 到 1,800 秒之间的值。
    • 协议:选择要捕获的协议: 任何TCPUDPICMP
    • TCP 标志:如果选择 了 TCP或任何协议 ,请选择要捕获的数据包类型: FINSYNRSTPSHACKURG

    注释

    同时指定最大数据包计数和时间限制。 当达到第一个限制时,捕获将停止。

定义捕获筛选器

  1. “筛选” 部分中,指定要捕获的数据包:

    • 源 IP 地址或子网
    • 目标 IP 地址或子网
    • 目标端口

    注释

    • 至少需要一个筛选器。
    • 数据包捕获记录与每个筛选器匹配的双向流量。
    • 对多个值使用逗号分隔的列表(例如,192.168.1.1、192.168.2.1 或 192.168.1.0/24)。
    • 若要在使用 SNAT、连接到 Internet 或处理应用程序规则时捕获传入和传出数据包,请在 AzureFirewallSubnet 源字段中包括地址空间。

启动捕获

  1. 在“ 状态 ”部分中,选择“ 刷新状态 ”以验证当前未运行数据包捕获。

    显示“刷新状态”按钮的“状态”部分的屏幕截图。

    • 如果防火墙已准备就绪,状态会显示 没有数据包捕获正在进行。你可以启动新的数据包捕获。

    数据包捕获接口的屏幕截图,其中显示了“开始数据包捕获”按钮。

    • 如果数据包捕获已在进行中,请选择“ 停止数据包捕获”,然后刷新状态以确认它已停止,然后再启动新的捕获。

    数据包捕获接口的屏幕截图,其中显示了“停止数据包捕获”按钮。

  2. 选择“ 开始数据包捕获 ”,开始使用配置的设置捕获数据包。

    注释

    Azure 在从防火墙底层至少一半的计算实例中获取到捕获数据包的情况下,会将该捕获操作判定为成功。 门户不会显示哪个实例提供了捕获信息,因此状态消息是判断成功的主要指标。

分析数据包捕获

数据包捕获完成后,状态会显示 “数据包捕获已成功完成”。准备好启动新的数据包捕获

数据包捕获状态的屏幕截图,其中显示了完成消息:数据包捕获已成功完成。

下载并检查捕获文件

  1. 在 Azure 门户中转到存储容器。

    Azure 存储帐户的屏幕截图,其中显示了包含数据包捕获容器的容器页。

    捕获文件保存在容器的根文件夹中。 会看到多个 pcap 文件 - 防火墙后端中每个虚拟机实例都有一个文件。

  2. 下载pcap文件。

    存储容器的屏幕截图,其中显示了从防火墙实例捕获的多个 pcap 文件。

  3. 使用数据包分析工具(如 Wireshark)分析文件。

了解数据包流模式

每个数据包捕获都包含传入和传出数据包对。 对于防火墙处理的每个数据包,您都会在捕获中看到相应的配对。 下表描述了四种常见的数据包流模式:

Scenario 传入数据包 传出数据包
虚拟网络到虚拟网络(无 SNAT)
虚拟网络到本地(没有 SNAT)
源:客户端
目标:服务器
源:客户端
目标:服务器

第 2 层标头不同,但第 3 层及更高层保持不变。
虚拟网络到虚拟网络(有 SNAT)
虚拟网络到本地(使用 SNAT)
虚拟网络连接至互联网
源:客户端
目标:服务器
源:防火墙
目标:服务器

由于 SNAT,第 3 层源 IP 发生更改。 第 4 层及更高层保持不变。
应用程序规则流 源:客户端
目标:服务器
源:防火墙
目标:服务器

第 4 层及更高层与其他层不同之处在于,防火墙代理连接,并与目标系统建立新会话。

使用 HTTP 或 TLS 密钥匹配传入和传出数据包。 第 7 层保持不变。
DNAT 流 源:客户端
目标:防火墙公共 IP 地址
源:防火墙
目标:DNATed 专用 IP

第 3 层目标 IP 不同于由于 DNAT 而传入的数据包,而第 4 层则保持不变。

有关这些方案的详细说明,请参阅 使用数据包捕获对 Azure 防火墙流进行故障排除

常见问题

是否可以通过将目标端口设置为 0 来捕获所有端口上的流量?

必须在每个筛选器中指定至少一个目标端口。 不支持在所有端口上捕获流量。

是否可以在筛选器中使用 IP 地址范围?

筛选器支持单个 IP 地址或子网,但不支持 IP 地址范围。 如果需要捕获范围,请使用涵盖这些地址的子网。 将筛选器限制为不超过五个 IP 地址或子网。

是否可以将数据包数量上限或时间限制留空以捕获所有流量?

所有值都是必要项。 根据需要将其设置为允许的最大值。 当达到任一限制时,捕获会自动停止。

是否可以手动停止正在运行的数据包捕获?

是的,选择 “停止数据包捕获 ”按钮以在捕获达到配置的限制之前结束捕获。

数据包捕获是否支持连续或周期性捕获?

不支持循环(连续)数据包捕获。 如果需要扩展或重复捕获进行故障排除,请提出 Azure 支持请求。 Microsoft支持部门可以代您执行更长时间的捕获。

是否可以将目标设置为 0.0.0.0/0 以捕获所有流量?

数据包捕获旨在对特定流进行故障排除。 将目标设置为 0.0.0.0/0 会导致空捕获,并且不会捕获所有流量。

是否可以在筛选器中使用 FQDN 而不是 IP 地址?

筛选器不支持 FQDN。 但是,可以使用 DNS 将 FQDN 解析为 IP 地址,并将这些 IP 地址添加到筛选器。

不勾选 TCP 标志是否等同于选中所有标志?

如果未选择 TCP 标志(默认值),则会捕获所有数据包类型。 仅当想要捕获特定数据包类型时,才选择特定标志。

是否可以同时捕获 ICMP、TCP 和 UDP 数据包?

是的,选择 “任意 ”作为协议来捕获所有数据包类型。 协议字段旨在在需要时筛选特定协议。

如何知道数据包捕获是否成功?

当从至少一半的基础计算实例获取捕获时,Azure 会报告成功。 空捕获文件表示操作已成功,但找不到与筛选器匹配的网络流量。 请扩大过滤器并重新执行抓取。

后续步骤