跳转到内容
搜索文档

导入和导出记录

最后更新 查看 MarkdownAgent 设置

使用导入和导出可更精细地控制 DNS 记录,并使迁移域名或批量编辑记录注释等流程更轻松。

导入记录

限制

  • zone 文件大小限制为 256 KiB(262144 字节)。

  • API 速率限制为每位用户每分钟三次请求。

格式化 zone 文件

为你的域名创建 BIND zone 文件。若需要帮助,可使用第三方工具

若你使用某些记录类型——例如 CNAMEDNAMEMXNSPTRSRV 记录——请确保这些记录的 content 包含以尾随句点结尾的完全限定域名(例如 example.com.)。更多详情请参阅 RFC 1035 或这篇 Stack Exchange 帖子

将 zone 文件导入 Cloudflare

要通过仪表板导入 zone 文件:

  1. 在 Cloudflare 仪表板中,转到 DNS Records(DNS 记录) 页面。

    Go to Records ↗
  2. 选择 Import and Export(导入和导出)

  3. 对于 Import DNS records(导入 DNS 记录),选择你格式化后的文件

  4. 若不希望适用的记录被代理,请取消选择 Proxy imported DNS records(代理已导入的 DNS 记录)

要通过 API 导入记录,请使用正确格式化的文件发送 POST 请求

Required API token permissions

At least one of the following token permissions is required:
  • DNS Write
Import DNS Recordsbash
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records/import" \
	--request POST \
	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
	--form "file=@your_formatted_file.txt"

导出记录

你也可以从 Cloudflare 批量导出记录。

要通过仪表板导出记录:

  1. 在 Cloudflare 仪表板中,前往 DNS Records(DNS 记录) 页面。

    Go to Records ↗
  2. 选择 Import and Export(导入和导出)

  3. 选择 Export(导出)

要通过 API 导出记录,请发送 GET 请求

Required API token permissions

At least one of the following token permissions is required:
  • DNS Read
  • DNS Write
Export DNS Recordsbash
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records/export" \
	--request GET \
	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"

DNS 记录属性

导出或导入 zone 文件时,Cloudflare 使用以下结构格式化注释与标签,并根据 RFC 1035 第 5 节,在每条记录后使用 ; 字符将属性追加为行内注释:

组合 说明
仅标签 标签名称包含一小套字符。

此外,若标签值包含 "=,\,则必须用双引号(")括起。在双引号(")内时,标签值表示为 JSON 字符串,因此值内的其他引号可转义为 \"

空值标签可表示为 my-tag-name:""my-tag-name:my-tag-name
仅注释 注释对字符的限制更少,意味着注释按原样包含。

若注释包含字符串 cf_tags=,则需要在行末再包含一个额外的 cf_tags=
注释与标签 zone 文件注释的形式为 ; <comment> cf_tags=<tags>,如上所述。请注意 cf_tags= 前的空格字符。
两者皆无 zone 文件中的注释可以为空或完全省略。不紧跟在记录后的 zone 文件注释也会被忽略。
Example zone filetxt
; Only tags
a.example.com.  60  IN  A   1.1.1.1 ;   cf_tags=awesome
b.example.com.  60  IN  A   1.1.1.1 ;   cf_tags=tag1,tag2:value2,tag3:"value,with,commas",tag4:"value with \"escaped\" quotation marks"

; Only a comment
c.example.com.  60  IN  A   1.1.1.1 ; just a comment without tags
d.example.com.  60  IN  A   1.1.1.1 ; this comment contains cf_tags= as text cf_tags=

; Comments and tags
e.example.com.  60  IN  A   1.1.1.1 ; simple example cf_tags=important,ticket:THIS-12345
f.example.com.  60  IN  A   1.1.1.1 ; this is the comment cf_tags=tag1:value1,tag2:value2,tag-without-value,another-tag-without-value,tag-with-quoted-value:"because of the comma, quotes are needed"

; Neither attribute
g.example.com.  60  IN  A   1.1.1.1

保留的 cf- 标签

导出和导入时,以 cf- 开头的特殊标签允许你控制特定的 Cloudflare 配置。导出时,这些标签会自动添加以反映 zone 上每条记录的当前配置。

Records with cf- tags exampletxt
;; CNAME Records
a.cloudflaredocs.com.	1	IN	CNAME	example.com. ; cf_tags=test:1,cf-flatten-cname
b.cloudflaredocs.com.	1	IN	CNAME	example.com. ; cf_tags=cf-proxied:false
c.cloudflaredocs.com.	1	IN	CNAME	example.com. ; cf_tags=tag-without-value,cf-proxied:true

cf-proxied

导出时,已代理 DNS 记录 将显示标签 cf-proxied:true,而仅 DNS 记录会将此标签设置为 cf-proxied:false

导入 zone 文件时,cf-proxied 标签中的值在决定记录是否应被代理时优先。这意味着:

  • 若存在该标签,无论是否选择了 Proxy imported DNS records(代理已导入的 DNS 记录) 选项(通过仪表板),或是否将 proxied 参数普遍设置为 truefalse(通过 API),都将针对相应记录考虑其值。
  • 若不存在该标签,代理状态将回退到常规导入选项,即是否选择了 **Proxy imported DNS records(代理已导入的 DNS 记录)(通过仪表板)**或将 proxied 参数设置为 truefalse(通过 API)。

cf-flatten-cname

若你位于付费 zone 并希望使用按记录的 CNAME flattening,请在 zone 文件中每个已扁平化的 CNAME 记录旁使用标签 cf-flatten-cname。导出时,此标签会自动添加以反映你在 zone 上的记录配置。

DNS zone 文件指令

DNS zone 文件除了资源记录(RR)外,还可以使用指令构建。指令以 $ 开头且已标准化——$ORIGIN$INCLUDERFC 1035 中定义,$TTLRFC 2308 中定义。此外,BIND 提供非标准 $GENERATE 指令。

Cloudflare 支持 $ORIGIN$TTL$GENERATE 指令。

不支持 $INCLUDE。当 zone 文件包含 $INCLUDE 指令时,Cloudflare 会以解析错误 $INCLUDE directive not allowed 响应。

这篇文档对您有帮助吗?