NAT64 与 DNS64 的分工
纯 IPv6 网络要访问只提供 IPv4 的服务,需要两个组件配合:DNS64 负责在域名只有 A 记录时合成一条 AAAA 记录,把 IPv4 地址嵌入 NAT64 前缀;NAT64 网关则在收到指向该合成地址的报文时,把它翻译成对实际 IPv4 地址的访问。客户端全程以为自己在访问 IPv6 服务,转换过程对它透明。
基本信息
| NAT64 前缀 | 知名前缀 64:ff9b::/96,本地使用 64:ff9b:1::/48 |
|---|---|
| DNS64 职责 | 把 A 记录合成为 AAAA,需要与 NAT64 配套 |
| 合成规则 | 前缀加 IPv4 地址,例如 64:ff9b::198.51.100.7 |
| DNSSEC 影响 | 合成记录会破坏原始签名校验 |
| 字面量问题 | 应用里硬编码 IPv4 地址时无法被翻译 |
| 补充方案 | 464XLAT 在终端侧增加一层转换,适配老应用 |
数据流
数据流
客户端请求纯 IPv4 域名 example.com
DNS64 返回合成 AAAA:64:ff9b::198.51.100.7
客户端向该地址发起 IPv6 连接
NAT64 网关剥离前缀,转成对 198.51.100.7 的 IPv4 访问
回程按会话状态反向翻译,客户端无感知前缀与用途
| 前缀 | 用途 |
|---|---|
| 64:ff9b::/96 | 知名 NAT64 前缀,仅嵌入 IPv4 地址 |
| 64:ff9b:1::/48 | 本地使用前缀,可嵌入额外位以区分实例 |
| 2001:db8::/32 | 文档示例前缀,不可用于生产 |
| 100.64.0.0/10 | 运营商共享地址段,常与 NAT 场景同时出现 |
典型使用场景
- 移动网络向 IPv6 单栈演进:终端只有 IPv6 地址,通过 NAT64 访问存量 IPv4 服务
- 企业纯 IPv6 内网访问外部 IPv4 网站,避免为少量需求保留双栈链路
- 排查“能解析但打不开”:确认 DNS64 合成结果与 NAT64 网关是否配套
- 理解连接失败原因:应用硬编码 IPv4 地址或使用字面量时无法走翻译路径
- 评估 DNSSEC 场景:合成记录与签名校验冲突时需要单独设计解析策略
NAT64 与 DNS64 必须成对部署:只做 DNS64 会把流量引向不存在的地址,只做 NAT64 则客户端拿不到合成地址,两种半配置都会导致业务不通。
排障顺序建议
- 先确认域名解析结果:若返回的 AAAA 落在 NAT64 前缀内,说明 DNS64 已生效
- 再确认网关可达:用 ping 或抓包检查合成地址是否有响应
- 接着核对前缀一致性:DNS64 使用的合成前缀必须与 NAT64 网关配置的前缀相同
- 最后检查应用行为:是否硬编码 IPv4 地址或使用字面量,这类情况需要改造成域名访问