文章内容
2025/10/16 2:41:06,作 者: 黄兵
DNS-NAT64 原理
“DNS-NAT64” 是 IPv6 向 IPv4 兼容技术栈中很关键的一环,它允许 仅有 IPv6 网络的客户端 访问 只支持 IPv4 的服务器。
下面我帮你分层讲清楚它的 原理、流程和关键组件👇
🌐 一、背景:为什么需要 DNS64 + NAT64?
IPv6 网络是新一代网络协议,但目前仍有大量网站和服务只支持 IPv4。
于是,纯 IPv6 用户 需要一种方式去“间接访问” IPv4 站点。
这个过程需要两个组件:
| 组件 | 作用 |
|---|---|
| DNS64 | 把只存在 IPv4 的域名“伪造出”一个 IPv6 地址 |
| NAT64 | 在网络层真正把 IPv6 报文转发给 IPv4 服务器 |
🧩 二、工作原理概览
可以用一句话概括:
DNS64 负责造地址,NAT64 负责转发流量。
流程图(逻辑上):
IPv6 客户端 → DNS64 服务器 → 虚拟 IPv6 地址 → NAT64 网关 → IPv4 服务器
🔍 三、详细工作流程
1️⃣ IPv6-only 客户端发起解析请求
客户端(只有 IPv6)向 DNS64 服务器解析一个域名,比如:
A 记录: example.com → 93.184.216.34
AAAA 记录:example.com → (无)
2️⃣ DNS64 服务器的“合成 IPv6 地址”
因为目标域名没有 AAAA 记录(IPv6 地址),DNS64 会:
-
查询它的 IPv4 地址(A 记录);
-
将该 IPv4 地址嵌入到一个固定的 IPv6 前缀中;
-
返回一个“合成”的 IPv6 地址给客户端。
例如:
-
NAT64 前缀:
64:ff9b::/96(RFC 6052 默认前缀) -
IPv4 地址:
93.184.216.34
则 DNS64 返回的“伪 IPv6 地址”是:
64:ff9b::5d:b8:d8:22
(其中 5d:b8:d8:22 是 IPv4 地址 93.184.216.34 的十六进制表示)
3️⃣ IPv6 客户端连接这个伪 IPv6 地址
客户端直接发起连接:
dst = 64:ff9b::5d:b8:d8:22
4️⃣ NAT64 网关进行地址翻译
NAT64 设备识别到前缀 64:ff9b::/96,知道这个流量是要被转换到 IPv4。
它会做以下事情:
| 项 | 从 IPv6 → IPv4 的映射 |
|---|---|
| 源地址 | IPv6 客户端地址 |
| 目的地址 | 从伪 IPv6 中提取的 IPv4 地址 |
| 传输层端口 | 动态映射(类似 IPv4 NAT) |
然后 NAT64 网关把包发往真正的 IPv4 服务器。
5️⃣ 返回流量方向(IPv4 → IPv6)
返回时 NAT64 做反向转换:
-
把 IPv4 响应包封装成 IPv6 包;
-
用 NAT 表找到对应的 IPv6 客户端;
-
返回给原始 IPv6 客户端。
客户端认为自己是直接和一个 IPv6 主机通信,实际上是通过 DNS64 + NAT64 代理完成的。
🧠 四、核心知识点总结
| 名称 | 功能 | 示例 |
|---|---|---|
| DNS64 | 负责将 IPv4 A 记录合成为 IPv6 AAAA 记录 | 93.184.216.34 → 64:ff9b::5d:b8:d8:22 |
| NAT64 | 实际进行 IPv6 ↔ IPv4 转换 | 位于网络边界路由器或防火墙 |
| NAT64 前缀 | 识别哪些 IPv6 地址要被转换 | 64:ff9b::/96(标准) |
| 协议标准 | RFC 6147 (DNS64), RFC 6146 (NAT64), RFC 6052 (前缀格式) | — |
⚙️ 五、实际部署例子
DNS64(Bind 或 Unbound)
# named.conf.options
options {
dns64 64:ff9b::/96 {};
};
NAT64(Tayga 示例)
prefix 64:ff9b::/96
ipv4-addr 192.0.2.1
ipv6-addr 64:ff9b::1
IPv6-only 客户端配置 DNS 为 DNS64 服务器即可透明访问 IPv4 网站。
🚀 六、现代演化:CLAT / 464XLAT
在移动网络中(如 Android IPv6-only 网络),DNS64 + NAT64 已扩展为 464XLAT 架构:
| 组件 | 名称 | 作用 |
|---|---|---|
| CLAT | 客户端 NAT46(在手机上) | 把 IPv4 应用流量转成 IPv6 |
| PLAT | 提供端 NAT64(在运营商) | 统一转发到 IPv4 互联网 |
| DNS64 | 仍然提供合成 AAAA 记录 | 支持纯 IPv6 DNS 解析 |
这就是为什么手机在 IPv6-only 网络上仍能访问 IPv4 网站。
🧭 七、总结一句话:
DNS64 = 造 IPv6 地址,NAT64 = 真翻译流量。
两者配合,让 IPv6-only 客户端无感访问 IPv4-only 服务器。
评论列表