强制仅 DNS 设置是一种账户级别的应急机制,允许你通过单一操作绕过账户中所有 zone 的 Cloudflare 反向代理。启用后,Cloudflare 会以底层记录内容响应 DNS 查询——对于已代理的 A 与 AAAA 记录返回源站 IP 地址,对于已代理的 CNAME 记录返回 CNAME 目标——而不是 Cloudflare 的 anycast IP 地址,从而在不修改记录本身的情况下,有效地将所有已代理 DNS 记录设置为仅 DNS。
此设置仅用于紧急情况,例如在中断期间需要快速将流量直接路由到源站时。
- 账户级别:同时影响账户中的所有 zone。
- 非破坏性:不会修改你的 DNS 记录。禁用该设置可恢复正常代理行为。
- 仅 API:仅通过 API 可用,不在 Cloudflare 仪表板中提供。
强制仅 DNS 适用于所有 zone 设置类型:
-
部分(CNAME)设置:zone 中的代理记录通常会受影响,但有一些例外。
-
辅助 zone:若已启用 Secondary DNS Overrides,并且你已手动将某条记录的代理状态设置为已代理,则该记录会受影响。这也适用于同一名称上的任何其他
A或AAAA记录。详情请参阅 Secondary DNS Overrides。
在将强制仅 DNS 作为事件响应计划的一部分之前,你应:
- 验证源站服务器容量:在没有 Cloudflare 代理的情况下,源站服务器将直接处理所有流量,包括 Cloudflare 通常会缓存或过滤的流量。确保你的基础设施能够承受此负载。
- 审查暴露的记录内容:当强制仅 DNS 处于活动状态时,已代理
A与AAAA记录中配置的所有源站 IP,以及已代理CNAME记录的目标,都会通过 DNS 查询公开可见。若你的源站依赖 IP 隐蔽性作为安全手段,请相应规划。 - 提前测试:在需要紧急使用之前,在预发布或测试账户中使用 API 确认你了解该行为。
使用 Update DNS Settings 端点为你的账户启用强制仅 DNS:
Required API token permissions
At least one of the following token permissions is required:Account DNS Settings Write
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/dns_settings" \
--request PATCH \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"enforce_dns_only": true
}'启用后,Cloudflare 会对所有代理记录以底层记录内容响应 DNS 查询——对于 A 与 AAAA 记录返回你配置的源站 IP 地址,对于 CNAME 记录返回配置的 CNAME 目标——而不是 Cloudflare 的 anycast IP。
要恢复正常代理行为,将 enforce_dns_only 设置为 false:
Required API token permissions
At least one of the following token permissions is required:Account DNS Settings Write
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/dns_settings" \
--request PATCH \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"enforce_dns_only": false
}'禁用该设置后,Cloudflare 会恢复以 anycast IP 地址响应代理记录的 DNS 查询,并且所有基于代理的功能都会恢复。
若你使用依赖 DNS 记录的其他 Cloudflare 产品,请参阅以下各节。
强制仅 DNS 会影响以下记录:
- Load Balancing:在 DNS 记录表中可见、但通过 Load Balancing 配置 管理的已代理 LB 记录。
- 匹配 Worker 路由 的已代理 DNS 记录。
- Cloudflare for SaaS 回退源站:你指定为自定义主机名回退源站的已代理 DNS 记录。
强制仅 DNS 不会影响以下记录:
-
Spectrum 应用程序:由 Spectrum 应用程序管理的 DNS 记录。
-
Tunnel:指向 tunnel 子域的 CNAME 记录。详情请参阅 Tunnel 路由 或 Cloudflare One。
- 更改在 Cloudflare 边缘立即生效——没有 DNS 传播延迟。
- 功能上等同于将所有代理记录设置为仅 DNS。
使用 Show DNS Settings 端点验证当前值:
Required API token permissions
At least one of the following token permissions is required:Account DNS Settings WriteAccount DNS Settings Read
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/dns_settings" \
--request GET \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"