跳转到内容
本站为社区维护的非官方中文翻译,与 Cloudflare, Inc. 无关联。本站不提供账户登录,请勿在任何非官方站点输入您的 Cloudflare 账户信息。官方文档:developers.cloudflare.com

DNS64

最后更新 查看 MarkdownAgent 设置

Cloudflare Gateway 为纯 IPv6 网络支持 DNS64。当没有可用的 AAAA 记录时,DNS64 会从 A 记录合成 AAAA 记录。

Gateway 使用知名前缀 64:ff9b::/96 进行 DNS64。您的网络必须为此前缀提供从 IPv6 到 IPv4 的网络地址转换 (NAT64)。

DNS64 合成 DNS 应答。NAT64 转换网络流量。

请求 DNS64

DNS64 默认关闭。您可以为某个 DNS 位置或单条查询请求合成。

DNS 扩展机制 (EDNS) 会向 DNS 查询添加选项。位置设置和 EDNS 选项支持 UDP、TCP、DNS over TLS (DoT) 和 DNS over HTTPS (DoH)。

Gateway 支持这些选择加入机制:

机制 配置 范围
DNS 位置 Enable DNS64,或通过 API 设置 dns64_enabled: true 匹配该位置的查询
EDNS 选项 选项代码 65051,负载为空 单条 DNS 查询
DoH 标头 cf-dns-options: dns64 单个 DoH 请求

每种机制都会独立请求 DNS64。关闭位置设置不会阻止按查询选择加入。

DNS 位置设置

要为某个位置请求 DNS64,请开启 Enable DNS64。您可以在添加或编辑 DNS 位置时更改此设置。

该设置适用于匹配该位置的查询。有关匹配条件,请参阅 DNS 查询位置匹配。

要通过 API 配置 DNS64,请将 dns64_enabled 设置为 true。在创建位置或更新位置时包含此字段。该字段类型为 boolean,默认为 false。

EDNS 选项

要为单条查询请求 DNS64,请包含一个 Cloudflare 专用的 EDNS 选项。在 OPT 记录中设置以下字段:

字段 值
Option code 65051
Option length 0
Option data Empty

带有非空负载的选项不会请求 DNS64。它也不会关闭由位置设置或 DoH 标头请求的 DNS64。

如果查询包含多个选项 65051 实例,任何一个负载为空的实例都会请求 DNS64。

要使用 dig 发送空选项,请将 <DNS_RESOLVER_IP> 替换为您位置的解析器 IP 地址:

dig @"<DNS_RESOLVER_IP>" ipv4only.arpa AAAA +ednsopt=65051 +short

要通过 TCP 发送相同查询,请添加 +tcp:

dig @"<DNS_RESOLVER_IP>" ipv4only.arpa AAAA +ednsopt=65051 +tcp +short

要通过 DoH 发送 EDNS 选项,请使用 DNS 线格式的请求。JSON DoH 查询格式无法携带此选项。

DoH 标头

要通过 DoH 请求 DNS64,请包含值为 dns64 的 cf-dns-options 标头。该标头独立于位置设置生效。有关请求示例,请参阅请求 DNS64。

验证 DNS64

当您请求 DNS64 时,针对 ipv4only.arpa 的符合条件的 AAAA 查询会返回这些合成地址:

64:ff9b::c000:aa
64:ff9b::c000:ab

这些地址对应于 ipv4only.arpa 的 A 记录:192.0.0.170 和 192.0.0.171。

要独立验证位置设置,请省略 EDNS 选项和 DoH 标头。在位置设置关闭且没有按查询选择加入的情况下,此域不会返回 AAAA 应答。

DNS64 不会更改现有的 AAAA 应答、A 查询或 DNS 错误响应。它不适用于 DNS 策略拦截响应或 DNS 覆盖应答。

独立验证 DNS 安全扩展 (DNSSEC) 的客户端可能会拒绝合成应答。DNS64 无法为合成的 AAAA 记录创建有效的 DNSSEC 签名。

这篇文档对您有帮助吗?