使用导入和导出可更精细地控制 DNS 记录,并使迁移域名或批量编辑记录注释等流程更轻松。
zone 文件大小限制为 256 KiB(262144 字节)。
- API 速率限制为每位用户每分钟三次请求。
为你的域名创建 BIND zone 文件 ↗。若需要帮助,可使用第三方工具 ↗。
若你使用某些记录类型——例如 CNAME、DNAME、MX、NS、PTR 或 SRV 记录——请确保这些记录的 content 包含以尾随句点结尾的完全限定域名(例如 example.com.)。更多详情请参阅 RFC 1035 ↗ 或这篇 Stack Exchange 帖子 ↗。
要通过仪表板导入 zone 文件:
-
在 Cloudflare 仪表板中,转到 DNS Records(DNS 记录) 页面。
Go to Records ↗ -
选择 Import and Export(导入和导出)。
-
对于 Import DNS records(导入 DNS 记录),选择你格式化后的文件。
-
若不希望适用的记录被代理,请取消选择 Proxy imported DNS records(代理已导入的 DNS 记录)。
要通过 API 导入记录,请使用正确格式化的文件发送 POST 请求。
Required API token permissions
At least one of the following token permissions is required:DNS Write
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 批量导出记录。
要通过仪表板导出记录:
-
在 Cloudflare 仪表板中,前往 DNS Records(DNS 记录) 页面。
Go to Records ↗ -
选择 Import and Export(导入和导出)。
-
选择 Export(导出)。
要通过 API 导出记录,请发送 GET 请求。
Required API token permissions
At least one of the following token permissions is required:DNS ReadDNS Write
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records/export" \
--request GET \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"导出或导入 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 文件注释也会被忽略。 |
; 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- 开头的特殊标签允许你控制特定的 Cloudflare 配置。导出时,这些标签会自动添加以反映 zone 上每条记录的当前配置。
;; 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导出时,已代理 DNS 记录 将显示标签 cf-proxied:true,而仅 DNS 记录会将此标签设置为 cf-proxied:false。
导入 zone 文件时,cf-proxied 标签中的值在决定记录是否应被代理时优先。这意味着:
- 若存在该标签,无论是否选择了 Proxy imported DNS records(代理已导入的 DNS 记录) 选项(通过仪表板),或是否将
proxied参数普遍设置为true或false(通过 API),都将针对相应记录考虑其值。 - 若不存在该标签,代理状态将回退到常规导入选项,即是否选择了 **Proxy imported DNS records(代理已导入的 DNS 记录)(通过仪表板)**或将
proxied参数设置为true或false(通过 API)。
若你位于付费 zone 并希望使用按记录的 CNAME flattening,请在 zone 文件中每个已扁平化的 CNAME 记录旁使用标签 cf-flatten-cname。导出时,此标签会自动添加以反映你在 zone 上的记录配置。
DNS zone 文件除了资源记录(RR)外,还可以使用指令构建。指令以 $ 开头且已标准化——$ORIGIN 与 $INCLUDE 在 RFC 1035 ↗ 中定义,$TTL 在 RFC 2308 ↗ 中定义。此外,BIND 提供非标准 ↗ $GENERATE 指令。
Cloudflare 支持 $ORIGIN、$TTL 与 $GENERATE 指令。
不支持 $INCLUDE。当 zone 文件包含 $INCLUDE 指令时,Cloudflare 会以解析错误 $INCLUDE directive not allowed 响应。