文章内容

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 会:

  1. 查询它的 IPv4 地址(A 记录);

  2. 将该 IPv4 地址嵌入到一个固定的 IPv6 前缀中;

  3. 返回一个“合成”的 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 服务器。

分享到:

发表评论

评论列表