跳转到内容
搜索文档

收集 PCAP

最后更新 查看 MarkdownAgent 设置

在请求数据包捕获并完成收集后,输出将包含在一个或多个 PCAP 文件格式的文件中。在开始 full 类型的数据包捕获之前,您必须首先按照说明配置存储桶

发送数据包捕获请求

目前,当请求数据包捕获时,会捕获在 Cloudflare 全球网络上流经 Magic Transit 系统的包裹。对此,请求和响应的默认 API 字段为 "system": "magic-transit"

数据包捕获限制

Sample and full(样本和完整)

  • packet_limit:最小值为 1 个数据包,最大值为 10000 个数据包。

Sample(样本)

  • time_limit:最小值为 1 秒,最大值为 300 秒。

Full(完整)

  • time_limit:最小值为 1 秒,最大值为 86400 秒。
  • byte_limit:最小值为 1 字节,最大值为 1000000000 字节。
  1. 在 Cloudflare 仪表板中,前往 Network health (网络健康状况)
  2. 选择 Diagnostics(诊断),然后选择 Start a capture(开始捕获)
  3. 选择您要执行的捕获类型,然后选择 Next(下一步)
  4. 填写开始捕获所需的必填字段,然后选择 Start(开始)

Packet captures(数据包捕获) 主页面将显示捕获列表。

PCAPs API 需要同时指定 systemtype 才能开始捕获。PCAP 的 system 是指捕获数据包的产品或逻辑子系统,而 PCAP 的 type 是指如何将捕获的数据包构建为 PCAP 文件。

目前,对于样本 PCAP,您每分钟只能发送一次收集请求;而对于完整 PCAP,您一次只能运行或挂起一个捕获。

完整 PCAP (Full PCAP)

对于完整 PCAP 请求,请参阅创建完整 PCAP 请求中列出的必需参数。请注意,完整数据包捕获比样本数据包多需要两个参数。

完整 PCAP 请求端点还包含可选字段,您可以使用这些字段来限制捕获的数据包数量。完整和样本数据包请求都包含一个可选的 filter_v1 参数,您可以使用该参数(例如)按 IPv4 源地址过滤数据包。有关过滤选项的完整列表,请参阅上面的参数列表。

filter_v1 留空以在没有任何过滤的情况下收集所有数据包。

完整 PCAP 请求示例bash
curl https://api.cloudflare.com/client/v4/accounts/{account_id}/pcaps \
--header "X-Auth-Email: <EMAIL>" \
--header "X-Auth-Key: <API_KEY>" \
--header "Content-Type: application/json" \
--data '{
  "filter_v1": {},
  "time_limit": 300,
  "packet_limit": 10000,
  "byte_limit": 100000000,
  "type": "full",
  "colo": "ORD",
  "system": "magic-transit",
  "destination_conf": "${BUCKET}"
}'

在收集进行期间,响应将返回 status 字段为 pending。在下载文件之前,您必须等待 PCAP 收集完成。当 PCAP 准备好下载时,状态将更改为 success

完整 PCAP 响应示例json
{
	"result": {
		"id": "7d7c88382f0b4d5daa9587aa45a1a877",
		"submitted": "2022-06-02T18:38:22.269047Z",
		"filter_v1": {},
		"time_limit": 300,
		"status": "pending",
		"type": "full",
		"system": "magic-transit",
		"packet_limit": 10000,
		"byte_limit": 100000000,
		"colo": "ORD",
		"destination_conf": "gs://<bucket-name>" // 请确保使用您在 Cloudflare 仪表板中创建并注册的存储桶
	},
	"success": true,
	"errors": [],
	"messages": []
}

样本 PCAP (Sample PCAP)

要创建样本 PCAP 请求,请发送一个包含创建样本 PCAP 请求中所列必需参数的 JSON 正文。

filter_v1 留空以在没有任何过滤的情况下收集所有数据包。

样本 PCAP 请求示例bash
curl https://api.cloudflare.com/client/v4/accounts/{account_id}/pcaps \
--header "X-Auth-Email: <EMAIL>" \
--header "X-Auth-Key: <API_KEY>" \
--header "Content-Type: application/json" \
--data '{
  "filter_v1": {
    "source_address": "1.2.3.4",
    "source_port": 123,
    "destination_address": "5.6.7.8",
    "destination_port": 80,
    "protocol": 6
  },
  "time_limit": 300,
  "packet_limit": 10000,
  "type": "simple",
  "system": "magic-transit"
}'

响应是一个 JSON 正文,其中包含用于构建数据包捕获的运行作业的详细信息。该响应包含数据包捕获请求的唯一标识符以及请求中发送的详细信息。

样本 PCAP 响应示例json
{
	"result": {
		"id": "6d1f0aac13cd40e3900d29f5dd0e8a2b",
		"submitted": "2021-12-20T17:29:20.641845Z",
		"filter_v1": {
			"source_address": "1.2.3.4",
			"source_port": 123,
			"destination_address": "5.6.7.8",
			"destination_port": 80,
			"protocol": 6
		},
		"time_limit": 60,
		"status": "pending",
		"packets_remaining": 0,
		"type": "simple",
		"system": "magic-transit"
	},
	"success": true,
	"errors": [],
	"messages": []
}

检查数据包捕获状态

  1. 在 Cloudflare 仪表板中,前往 Network health (网络健康状况)
  2. 选择 Diagnostics(诊断)
  3. Network packet captures(网络数据包捕获) 下找到您的捕获。

要检查正在运行的作业的状态,请向该端点发送请求并指定 PCAP 标识符。PCAP 标识符是在收集请求的响应中接收到的,如上一步所示。

curl https://api.cloudflare.com/client/v4/accounts/{account_id}/pcaps/{pcap_id} \
--header 'X-Auth-Email: <EMAIL>' \
--header 'X-Auth-Key: <API_KEY>'

响应将类似于请求 PCAP 收集时收到的响应。

样本 PCAP 结果示例json
{
	"result": {
		"id": "6d1f0aac13cd40e3900d29f5dd0e8a2b",
		"submitted": "2021-12-20T17:29:20.641845Z",
		"filter_v1": {
			"source_address": "1.2.3.4",
			"source_port": 123,
			"destination_address": "5.6.7.8",
			"destination_port": 80,
			"protocol": 6
		},
		"time_limit": 120,
		"status": "success",
		"packets_remaining": 0,
		"type": "simple",
		"system": "magic-transit"
	},
	"success": true,
	"errors": [],
	"messages": []
}

捕获状态将显示以下选项之一:

  • Complete(已完成): 捕获请求已完成,可以下载。
  • In progress(进行中): 捕获请求已完成捕获,但仍在处理中。
  • Failure(失败): 捕获失败。如果发生这种情况,请验证您的所有权信息。

下载数据包捕获

在您的请求完成处理后,您可以下载数据包捕获文件。

  1. 在 Cloudflare 仪表板中,前往 Network health (网络健康状况)
  2. 选择 Diagnostics(诊断)
  3. 找到您要下载的数据包捕获,然后选择 Download(下载)

Status(状态) 显示为 Success(成功) 时,即可下载数据包捕获。

有关如何将多个保存的捕获文件处理为单个输出文件的更多信息,请参阅 Wireshark 的 mergecap 文档

Full PCAPs(完整 PCAP)

要获取完整 PCAP,请在 PCAP 的状态为 success 后,从 destination_conf 中指定的存储桶中下载文件。由于捕获可能会跨多台机器发生,您可能会在每次捕获中找到多个名为 pcap_<pcap_id>.pcap 的文件。

Sample PCAPs(样本 PCAP)

样本 PCAP 收集完成后,您可以通过指定之前使用的 PCAP 标识符来下载 PCAP。

curl https://api.cloudflare.com/client/v4/accounts/{account_id}/pcaps/{pcap_id}/download \
--header 'X-Auth-Email: <EMAIL>' \
--header 'X-Auth-Key: <API_KEY>' \
--output download.pcap

列出数据包捕获

  1. 在 Cloudflare 仪表板中,前往 Network health (网络健康状况)
  2. 选择 Diagnostics(诊断) > Network packet captures(网络数据包捕获)

与您账户关联的数据包捕获列表将会显示。

要查看发送请求的列表,请使用以下命令:

列出请求示例bash
curl https://api.cloudflare.com/client/v4/accounts/{account_id}/pcaps \
--header "X-Auth-Email: <EMAIL>" \
--header "X-Auth-Key: <API_KEY>"

响应返回一个数组,其中包括多达 50 个已发送的请求,包含已完成和进行中的请求。

列出响应示例json
{
	"result": [
		{
			"id": "43adab5adeca4dab9c51f4b7f70f2ec3",
			"submitted": "2021-12-15T03:04:09.277394Z",
			"filter_v1": {},
			"time_limit": 120,
			"status": "success",
			"packets_remaining": 0,
			"type": "simple",
			"system": "magic-transit"
		}
	],
	"success": true,
	"errors": [],
	"messages": []
}

最佳实践

由于 Cloudflare 网络的特性,您的流量可能会跨越单个 Cloudflare 位置内的各种物理机器。

  • 多个 PCAP 文件:单个完整 PCAP 捕获可能会产生许多小的 PCAP 文件,因为系统会针对您的流量在 Cloudflare 位置中跨越的每个物理服务器进行捕获。
    • 您可以通过应用特定于数据包的过滤器(如协议、端口等)来定位您需要的流量,从而使捕获更加精细。
  • 合并以进行分析:要将流量作为单个流查看,您可以使用 mergecap 等工具将各个文件合并为一个较大的文件,以便在 Wireshark 中进行分析。有关说明,请参阅 Wireshark mergecap 文档

这篇文档对您有帮助吗?