纯 IPv6 网络要访问只有 IPv4 的主机,靠两步配合:DNS64 合成一个嵌着 IPv4 的 IPv6 地址,NAT64 再把发往该前缀的包译成 IPv4。截至 2026 年 10 月,这两步缺一,连接就停在不同的地方。VPN 只接管其中一族时,合成地址和真实 A 记录会走不同的下一跳。
两步各自做什么
一个可独立引用的定义句:DNS64(RFC 6147)在权威答案里没有可用的 AAAA 时,用网络提供的 IPv6 前缀加上该名字的 A 记录,合成一条 AAAA。
一个可独立引用的定义句:NAT64(RFC 6146)是有状态的翻译:它把发往这段前缀的 IPv6 包改写成 IPv4 包,并在回程把应答译回来。
客户端以为自己在访问一个 IPv6 目的地。翻译器从地址里取出嵌入的 IPv4,再以翻译器自己的 IPv4 地址向外建立映射。没有 DNS64 时,只有 A 记录的名字在纯 IPv6 网络上没有目的地址。没有 NAT64 时,合成地址没有人翻译,包会发向一个接不住的 IPv6 前缀。
地址怎么嵌
据 RFC 6052,周知前缀是 64:ff9b::/96。前缀长度为 96 时,IPv4 放在最后 32 位。文档地址 192.0.2.33 嵌进去是 64:ff9b::c000:221。运营商也可以用自己的网络专用前缀,客户端要使用和翻译器相同的那一段。
RFC 6052 规定周知前缀不得用来表示非全球 IPv4 地址,例如私有地址;翻译器应丢弃这类组合。内网地址若需要翻译,要用网络专用前缀。截至 2026 年 10 月,本文只按 RFC 6052 叙述。若之后另有已发布的 RFC 放宽周知前缀,以那份 RFC 为准。
什么时候才会合成
据 RFC 6147,已经有非排除范围的真实 AAAA 时,默认不得再合成。合成发生在「没有可用 AAAA」之后。因此一条到不了的真实 AAAA 会挡住合成,客户端仍去连那个真实地址。
自己做 DNSSEC 校验、又不理解合成的客户端,会把改写后的 AAAA 当成被篡改的答案。RFC 6147 写明:这类校验方要么自己会做合成,要么信任一台代为校验的 DNS64。查询若要求把原始记录交还客户端自行校验,执行该规则的 DNS64 不得再合成。本文不提供改写校验标志的步骤。
VPN 只带走一族时
Happy Eyeballs 在已经返回的地址之间错开尝试。DNS64 发生在更前面:它决定答案里有没有那条合成的 AAAA。IPv6 泄漏 关心的是选出的地址走不走隧道。三层各看各的结果。
| 本机实际状态 | 只有 A 的名字会怎样 |
|---|---|
| 仍用接入网的 DNS64,IPv6 默认路由在本地 | 合成地址走向本地 NAT64,出口在接入网一侧 |
| 隧道接管了 IPv4,IPv6 仍在本地 | 真实 A 走隧道;合成 AAAA 仍可能走本地 NAT64 |
::/0 进了隧道,对端不是 NAT64 | 发往合成前缀的包到了对端,那里没有翻译器 |
| 隧道把解析器换成不做合成的公共解析器 | 答案回到真实的 A 或 AAAA;A 能否用,取决于有没有 IPv4 路由 |
| 手机侧已把本机 IPv4 译成 IPv6(464XLAT 的 CLAT,RFC 6877) | 应用发出的 IPv4 可能在进隧道之前,就变成了去往运营商翻译器的 IPv6 |
最后一行只说明层次:CLAT 在本机把 IPv4 包变成 IPv6,PLAT 是网络里的 NAT64。VPN 接在这两步的中间或之后时,看到的地址族会不同。本文不写如何开关 CLAT。
AllowedIPs 或分流决定合成前缀的下一跳。分离 DNS 决定这次查询会不会问到那台 DNS64。两处一起读,才能解释「地址族已经对上,出口却在另一侧」。
现象对照
| 现象 | 更可能先看什么 |
|---|---|
| 只有 IPv4 的网站在蜂窝上可用,开隧道后超时 | 合成前缀被送进了没有 NAT64 的隧道 |
| 检测页的 IPv4 是隧道,部分网站的出口仍像运营商 | 合成 AAAA 走了本地 NAT64 |
| 换成公共解析器后,纯 IPv6 网络上只含 A 的名字失败 | 合成停止,同时又没有可用的 IPv4 路由 |
| 有真实 AAAA 的站点和只有 A 的站点表现相反 | 有真实 AAAA 时默认不会合成 |
| 同一名字在 Wi-Fi 与蜂窝上得到不同的 AAAA | 合成前缀属于各自的网络,见 RFC 6147 对多宿主的说明 |
核对清单
- 先看答案是真实 AAAA 还是嵌了 IPv4 的前缀:周知前缀或运营商前缀才需要翻译器;
- 再看这段前缀的路由:下一跳是本地 NAT64,还是隧道对端;
- 分开看 A 记录的路由:隧道里的 IPv4 和本地合成地址可以同时存在;
- 确认解析器会不会合成:公共解析器通常直接返回权威记录;接入网解析器可能会合成;
- 保持两步成对:合成和翻译要指向同一段前缀。本文不提供合成地址或改写解析的步骤。