跳转到内容
搜索文档

数据包捕获

最后更新 查看 MarkdownAgent 设置

数据包捕获记录流经 Cloudflare 网络的网络流量,使您能够分析单个 数据包,用于故障排除或安全调查。输出结果保存在一个或多个 PCAP 格式文件中,您可以在 Wireshark 等工具中打开这些文件。

目前有两种捕获类型:

  • 采样捕获:查询已经过 Cloudflare 网络的历史流量数据。捕获立即完成,可直接从 API 或 Cloudflare 仪表板下载。
  • 完整捕获:主动监控与您的过滤条件匹配的新流量,并将完整数据包数据写入您拥有的云存储桶。开始完整捕获之前,您必须先配置存储桶

发送数据包捕获请求

目前,当请求数据包捕获时,会捕获通过 Magic Transit 系统在 Cloudflare 全球网络中流动的数据包。此操作的默认 API 字段(请求和响应中均适用)为 "system": "magic-transit"

数据包捕获限制

采样和完整

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

完整

  • byte_limit:最小值为 1 字节,最大值为 1000000000 字节(1 GB)。
  1. 在 Cloudflare 仪表板中,前往 Network health(网络健康) 页面。

    Go to Network health ↗
  2. 前往 Diagnostics(诊断) 选项卡。

  3. Network packet captures(网络数据包捕获) 中,选择 Start a capture(开始捕获)

  4. 选择要执行的捕获类型,然后选择 Next(下一步)

  5. 填写必填字段以开始捕获,然后选择 Start(开始)

Network packet captures(网络数据包捕获) 页面将显示捕获列表。

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

目前,采样 PCAP 每分钟只能发送一个收集请求,完整 PCAP 每次只能有一个正在运行或待处理的任务。

完整 PCAP

对于完整 PCAP 请求,请参考 Create full PCAP requests 中列出的必需参数。请注意,完整数据包捕获比采样数据包多需要两个参数。

完整 PCAP 请求端点还包含可选字段,供您限制捕获的数据包数量。完整和采样数据包请求都包含一个可选的 filter_v1 参数,例如可用于按 IPv4 源地址过滤数据包。有关完整的过滤选项列表,请参阅 API 参考文档

filter_v1 留空,则不做任何过滤,收集所有数据包。

Full PCAP example requestbash
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

Full PCAP example responsejson
{
	"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>" // Ensure you use a bucket that you created and registered in the Cloudflare dashboard
	},
	"success": true,
	"errors": [],
	"messages": []
}

采样 PCAP

要创建采样 PCAP 请求,请发送一个包含 Create sample PCAP request 中列出的必需参数的 JSON 正文。

filter_v1 留空,则不做任何过滤,收集所有数据包。

Sample PCAP example requestbash
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 正文,用于构建数据包捕获。响应包含数据包捕获请求的唯一标识符以及请求中发送的详细信息。

Sample PCAP example responsejson
{
	"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 收集时收到的响应类似。

Sample PCAP example resultjson
{
	"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(API:success:捕获已完成,可供下载。
  • In progress(API:pending:数据包已捕获,但 PCAP 文件仍在组装中。
  • Failure:捕获失败。对于完整捕获,请验证您的存储桶是否已正确配置,以及 Cloudflare 是否具有写入权限。对于采样捕获,请验证您的过滤配置。

下载数据包捕获

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

  1. Cloudflare One 仪表板中,前往 Network visibility(网络可见性) > Diagnostics(诊断)
  2. Packet captures(数据包捕获) 中,选择 Start a capture(开始捕获)
  3. 找到您要下载的数据包捕获,然后选择 Download(下载)

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

完整捕获可能会为每次捕获生成多个 PCAP 文件,因为捕获可能跨数据中心的多台机器运行。要将这些文件合并为单个文件进行分析,请参阅 Wireshark 的 mergecap 文档

完整 PCAP

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

采样 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(网络健康) 页面。

    Go to Network health ↗
  2. 前往 Diagnostics(诊断) 选项卡。

与您账户关联的数据包捕获列表将显示在 Network packet captures(网络数据包捕获) 下。

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

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

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

List response examplejson
{
	"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": []
}

这篇文档对您有帮助吗?