Cloudflare Gateway 为纯 IPv6 网络支持 DNS64。当没有可用的 AAAA 记录时,DNS64 会从 A 记录合成 AAAA 记录。
Gateway 使用知名前缀 64:ff9b::/96 进行 DNS64。您的网络必须为此前缀提供从 IPv6 到 IPv4 的网络地址转换 (NAT64)。
DNS64 合成 DNS 应答。NAT64 转换网络流量。
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。关闭位置设置不会阻止按查询选择加入。
要为某个位置请求 DNS64,请开启 Enable DNS64。您可以在添加或编辑 DNS 位置时更改此设置。
该设置适用于匹配该位置的查询。有关匹配条件,请参阅 DNS 查询位置匹配。
要通过 API 配置 DNS64,请将 dns64_enabled 设置为 true。在创建位置或更新位置时包含此字段。该字段类型为 boolean,默认为 false。
要为单条查询请求 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 请求 DNS64,请包含值为 dns64 的 cf-dns-options 标头。该标头独立于位置设置生效。有关请求示例,请参阅请求 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 签名。