服务对象与地域限制
PuppyIP 仅面向海外合规企业及其授权人员提供服务,不面向中国大陆地区开放或提供代理服务。本服务仅限用于中国大陆境外的合法业务活动,严禁在中国大陆境内使用本服务。
代理 IP 或服务器位于境外,不改变上述限制。不得通过中转、转接、共享或转售向中国大陆境内的最终使用者提供本服务。使用前请阅读用户服务协议。
本文要点
- 10月13日的新公告增加了DNS位置开关与EDNS选项;原有cf-dns-options: dns64 DoH请求头继续独立生效,DNS64默认关闭。
- 位置开关与EDNS选项支持UDP、TCP、DoT和DoH。EDNS 65051要求空载荷;通过DoH携带该选项须使用DNS线格式,JSON查询格式无法携带。
- 更新DNS位置的API使用PUT;每次都要明确包含布尔字段dns64_enabled并保留其他设置,省略会把该字段重置为false。
- Gateway使用64:ff9b::/96合成AAAA,网络仍需为此前缀提供NAT64。已有AAAA、A查询、错误、策略阻断及覆盖答案不会因此改写,独立DNSSEC校验也有边界。
先分清:你需要的是DNS答案,还是IPv4连接?
Cloudflare于2026年10月13日宣布,Gateway的DNS64可通过DNS位置设置或EDNS选项请求。DNS64的作用是:目标没有AAAA记录、但有A记录时,合成一个IPv6答案。AAAA记录提供IPv6地址,A记录提供IPv4地址。
真正把IPv6流量送到IPv4服务的是NAT64,也就是网络侧的地址转换。Gateway使用64:ff9b::/96前缀合成答案,你的IPv6-only网络必须为此前缀提供NAT64。只有DNS64、没有这条转换路径,解析成功后仍可能连不上。
这项配置面向有权管理Gateway DNS位置的管理员及相应网络使用者。当前公告和技术页没有列出DNS64专属收费、完整套餐资格或逐国可用清单;应按组织账户条件确认,不能因看到开关就推定所有账户或所有地区免费。
想覆盖一个位置,就在Resolver endpoints中启用
第一步,进入Cloudflare控制台的Zero Trust > Traffic controls > Resolver endpoints,选择Add a location。为位置命名,并选择用于组织DNS查询的端点;修改已有位置时,在该位置的编辑设置中处理。
第二步,打开Enable DNS64。这个开关针对匹配该DNS位置的查询,默认关闭;位置是否匹配需要结合所用解析器端点和官方匹配规则判断,不能把它当成账户里所有DNS请求的总开关。
第三步,按界面继续检查来源过滤、认证与位置设置,选择Done,再依照界面的解析器配置说明使用该位置。标准IPv4端点要求端点认证;专用IPv4端点的认证是可选项。Enterprise专用或BYOIP解析器地址的说明属于端点范围,不等于DNS64必须使用该套餐。
权限也要对应资源:当前权限页列出的Zero Trust DNS Location Admin可创建、编辑和删除账户内DNS位置;已有Cloudflare Gateway或Cloudflare Zero Trust账户角色也保留相应写权限。仅能编辑某条DNS策略的资源级权限,并不包含DNS位置。
只想改变一次查询,用空的EDNS 65051
EDNS是DNS查询附带扩展选项的机制。对单次查询,使用Cloudflare专用选项65051,选项长度为0、数据为空,即可请求DNS64;它与位置开关都支持UDP、TCP、DNS over TLS(DoT)和DNS over HTTPS(DoH)。
以下是未执行的官方dig示例,RESOLVER_IP需替换为你获准使用的实际位置解析器IP;需要TCP时,在命令中增加+tcp。
dig @RESOLVER_IP ipv4only.arpa AAAA +ednsopt=65051 +short
若使用DoH携带EDNS选项,请使用DNS线格式请求;JSON DoH查询格式无法携带这个选项。原有cf-dns-options: dns64请求头仍可单独请求DNS64,它不是此次新增选项的替代要求。
65051带非空载荷时,不会请求DNS64,也不会取消位置开关或DoH请求头已请求的合成。同一查询重复出现65051时,只要其中一项为空,就会请求合成;排查时要看完整请求,而不只是某一项。
API更新别漏字段,关闭位置也不封住单次请求
通过API创建或更新位置时,dns64_enabled是布尔字段,默认false。位置更新使用PUT;每次都要明确包含该字段及所需的true或false,并保留其他位置设置。若想保留已开启状态,就显式传入dns64_enabled: true;省略会重置为false。
反过来,把位置设为false,也不会阻止单次EDNS选项或DoH请求头请求DNS64。这三种机制是独立的“请求合成”入口;位置开关关闭不代表一条查询一定不会合成。
例如,假设一个尚未执行的变更场景:团队只想更新位置名称,自动化却没有带上dns64_enabled,原先的位置合成便会被关闭;若某个客户端仍带DoH请求头,它依旧可能获得合成答案。检查更新字段和请求内容,比只看一个开关更有用。
怎样确认位置生效,而不是被另一个开关干扰?
官方验证域名是ipv4only.arpa。符合合成条件的AAAA查询在请求DNS64后,会返回64:ff9b::c000:aa和64:ff9b::c000:ab,对应其192.0.0.170与192.0.0.171两条A记录。这是文档给出的预期,不是本次实际查询结果。
若要单独验证位置开关,先省略EDNS 65051和cf-dns-options请求头。官方说明,在位置开关关闭且没有单次请求合成的情况下,这个域名不会返回AAAA答案;若仍带着单次选项,就无法用结果单独判断位置开关。
确认合成答案后,再分别检查网络是否具备64:ff9b::/96的NAT64转换路径,以及目标服务本身是否可访问。DNS答案能说明解析阶段发生了什么,不能代替后续网络连接或应用权限确认。
这些答案不会改写,DNSSEC也不能忽略
DNS64不会改写目标已有的AAAA答案,也不会改变A查询或DNS错误响应。Gateway的DNS策略阻断响应和DNS覆盖答案同样不适用合成;如果问题来自策略或覆盖规则,打开DNS64不等于移除该规则。
独立验证DNSSEC的客户端可能拒绝合成答案。DNSSEC用于验证DNS数据的签名,而DNS64无法为合成的AAAA记录生成有效的DNSSEC签名。遇到“解析器返回地址、客户端却不接受”的情况,应把校验行为纳入排查,而不是把合成地址当成签名有效的证明。
选择方式时,从改动范围出发:需要统一处理匹配位置的查询,就检查位置设置与PUT更新;只需某次查询合成,就检查EDNS或DoH请求头。随后分别确认DNS答案、NAT64路径和应用访问条件,避免把三件事压成一个“IPv6已通”的结论。
资料来源
常见问题
已有原生IPv6地址的网站,也会被转换到IPv4吗?
当前DNS64说明限定为没有AAAA时从A记录合成,并明确不改变已有AAAA答案。一个网站已经返回原生AAAA,不会因为启用这项功能就被强制改成64:ff9b::/96答案。
我能编辑DNS策略,为何仍不能修改DNS位置?
两者是不同资源。当前权限说明明确,策略和列表的资源级权限不包含DNS位置;DNS位置由账户级Zero Trust DNS Location Admin等适用角色管理。应请组织管理员核对实际授权,而不是从能编辑策略推定能编辑位置。
dns64_enabled可以填写字符串“true”吗?
技术页把该字段定义为boolean。应使用布尔值true或false,不要把字符串与布尔值混用;更新使用PUT时还要显式保留字段及其他位置设置。
Windows、macOS或Linux都能直接照抄dig命令吗?
本次官方示例使用dig,但这两份DNS64发布材料没有建立每种系统都预装dig或支持相同客户端参数的结论。先确认所用DNS客户端支持EDNS 65051及空载荷;不要把DNS协议支持范围等同于每台设备已有可用命令。