跳到主要内容

7. Deployment Scenarios and Examples (部署场景和示例)

7. Deployment Scenarios and Examples (部署场景和示例)

在本节中, 我们说明 DNS64 在预期常见的不同场景中的行为.特别是, 我们将考虑 [RFC6144] 中定义的以下场景: "an IPv6 network to the IPv4 Internet" (IPv6 网络到 IPv4 互联网) 场景 (DNS64 处于 DNS 服务器模式和存根解析器模式) 以及 "IPv6 Internet to an IPv4 network" (IPv6 互联网到 IPv4 网络) 设置 (仅 DNS64 处于 DNS 服务器模式).

在以下所有示例中, 有一个 IPv6/IPv4 转换器连接 IPv6 域和 IPv4 域.此外, 有一个名称服务器是双栈节点, 因此它可以使用 IPv6 与 IPv6 主机通信, 并使用 IPv4 与 IPv4 节点通信.此外, 我们假设在示例中, DNS64 功能通过手动配置了解它需要使用哪个 IPv6 前缀来映射 IPv4 地址空间.

7.1. Example of "an IPv6 Network to the IPv4 Internet" Setup with DNS64 in DNS Server Mode (DNS64 处于 DNS 服务器模式的 "IPv6 网络到 IPv4 互联网" 设置示例)

在此示例中, 我们考虑位于 IPv6-only 站点的 IPv6 节点发起与位于 IPv4 互联网的 IPv4 节点的通信.

此情况的场景如下图所示:

          +---------------------+         +---------------+
|IPv6 network | | IPv4 |
| | +-------------+ | Internet |
| |--| Name server |--| |
| | | with DNS64 | | +----+ |
| +----+ | +-------------+ | | H2 | |
| | H1 |---| | | +----+ |
| +----+ | +------------+ | 192.0.2.1 |
| |---| IPv6/IPv4 |--| |
| | | Translator | | |
| | +------------+ | |
| | | | |
+---------------------+ +---------------+

图 4: DNS64 处于 DNS 服务器模式的 "IPv6 网络到 IPv4 互联网" 设置

该图显示了 IPv6 节点 H1 和 IPv4 节点 H2, H2 具有 IPv4 地址 192.0.2.1 和 FQDN h2.example.com.

IPv6/IPv4 转换器的 IPv4 接口分配了 IPv4 地址 203.0.113.1, 并且它使用众所周知前缀 64:ff9b::/96 来创建 IPv4 地址的 IPv6 表示形式.本地名称服务器中的 DNS64 功能配置了相同的前缀.

对于此示例, 假设典型的 DNS 情况, 其中 IPv6 主机只有存根解析器, 并且它们配置了它们必须始终查询并执行递归查找的名称服务器的 IP 地址 (以下称为 "递归名称服务器").

H1 与 H2 建立通信的步骤是:

  1. H1 对 h2.example.com 进行 DNS 查找.H1 通过向递归名称服务器发送对 H2 的 AAAA 记录的 DNS 查询来执行此操作.递归名称服务器实现 DNS64 功能.

  2. 递归名称服务器解析查询, 并发现 H2 没有 AAAA 记录.

  3. 递归名称服务器对 H2 执行 A 记录查询, 并得到包含单个 A 记录的 RRSet, 该记录具有 IPv4 地址 192.0.2.1.然后名称服务器合成 AAAA 记录.AAAA 记录中的 IPv6 地址在高 96 位中包含分配给 IPv6/IPv4 转换器的前缀, 在低 32 位中包含接收到的 IPv4 地址; 即, 生成的 IPv6 地址是 64:ff9b::192.0.2.1.

  4. H1 接收合成的 AAAA 记录并向 H2 发送数据包.数据包发送到目标地址 64:ff9b::192.0.2.1.

  5. 数据包被路由到 IPv6/IPv4 转换器的 IPv6 接口, 随后的通信通过 IPv6/IPv4 转换器机制进行.

7.2. Example of "an IPv6 Network to the IPv4 Internet" Setup with DNS64 in Stub-Resolver Mode (DNS64 处于存根解析器模式的 "IPv6 网络到 IPv4 互联网" 设置示例)

此情况如下图所示:

          +---------------------+         +---------------+
|IPv6 network | | IPv4 |
| | +--------+ | Internet |
| |-----| Name |----| |
| +-----+ | | server | | +----+ |
| | H1 | | +--------+ | | H2 | |
| |with |---| | | +----+ |
| |DNS64| | +------------+ | 192.0.2.1 |
| +----+ |---| IPv6/IPv4 |--| |
| | | Translator | | |
| | +------------+ | |
| | | | |
+---------------------+ +---------------+

图 5: DNS64 处于存根解析器模式的 "IPv6 网络到 IPv4 互联网" 设置

该图显示了实现 DNS64 功能的 IPv6 节点 H1 和 IPv4 节点 H2, H2 具有 IPv4 地址 192.0.2.1 和 FQDN h2.example.com.

IPv6/IPv4 转换器的 IPv4 接口分配了 IPv4 地址 203.0.113.1, 并且它使用众所周知前缀 64:ff9b::/96 来创建 IPv4 地址的 IPv6 表示形式.H1 中的 DNS64 功能配置了相同的前缀.

对于此示例, 假设典型的 DNS 情况, 其中 IPv6 主机只有存根解析器, 并且它们配置了它们必须始终查询并执行递归查找的名称服务器的 IP 地址 (以下称为 "递归名称服务器").递归名称服务器不执行 DNS64 功能.

H1 与 H2 建立通信的步骤是:

  1. H1 对 h2.example.com 进行 DNS 查找.H1 通过向递归名称服务器发送对 H2 的 AAAA 记录的 DNS 查询来执行此操作.

  2. 递归 DNS 服务器解析查询, 并将应答返回给 H1.因为全局 DNS 中没有 H2 的 AAAA 记录, 所以应答为空.

  3. 然后 H1 的存根解析器查询 H2 的 A 记录, 并得到包含 IPv4 地址 192.0.2.1 的 A 记录.然后 H1 内的 DNS64 功能合成 AAAA 记录.AAAA 记录中的 IPv6 地址在高 96 位中包含分配给 IPv6/IPv4 转换器的前缀, 然后在低 32 位中包含接收到的 IPv4 地址; 生成的 IPv6 地址是 64:ff9b::192.0.2.1.

  4. H1 向 H2 发送数据包.数据包发送到目标地址 64:ff9b::192.0.2.1.

  5. 数据包被路由到 IPv6/IPv4 转换器的 IPv6 接口, 随后的通信使用 IPv6/IPv4 转换器机制进行.

7.3. Example of "the IPv6 Internet to an IPv4 Network" Setup with DNS64 in DNS Server Mode (DNS64 处于 DNS 服务器模式的 "IPv6 互联网到 IPv4 网络" 设置示例)

在此示例中, 我们考虑位于 IPv6 互联网的 IPv6 节点发起与位于 IPv4 站点的 IPv4 节点的通信.

在某些情况下, 此场景可以在不使用任何形式的 DNS64 功能的情况下解决.这是因为可以为每个 IPv4 节点分配固定的 IPv6 地址.这样的 IPv6 地址将使用 [RFC6052] 中定义的地址转换算法构造, 该算法以 Pref64::/96 和 IPv4 节点的 IPv4 地址作为输入.请注意, IPv4 地址可以是公共地址或私有地址; 后者不会带来任何额外的困难, 因为必须使用 NSP 作为 Pref64::/96 (在此场景中, 不支持使用众所周知前缀, 如 [RFC6052] 中所讨论).一旦这些 IPv6 地址被分配来表示 IPv6 互联网中的 IPv4 节点, 包含这些地址的真实 AAAA RRs 就可以在站点域下的 DNS 中发布.这是处理此场景的推荐方法, 因为它不涉及在查询时合成 AAAA 记录.

然而, 在此设置中可能需要合成 AAAA RRs 的一些更动态的场景.特别是, 当 DNS Update [RFC2136] 在 IPv4 站点中用于更新 IPv4 节点的 A RRs 时, 有两个选项.一个选项是修改接收动态 DNS 更新的 DNS 服务器.这通常是该区域的权威服务器.因此, 权威区域将具有在动态更新发生时合成的正常 AAAA RRs.另一个选项是修改所有权威服务器以在接收到对 AAAA RR 的 DNS 查询时为区域生成合成的 AAAA 记录, 可能基于附加约束.第一个选项 - 在接收到 DNS 更新消息时合成 AAAA, 并将数据发布在相关区域中 - 比第二个选项 (即在接收到 AAAA DNS 查询时合成) 更受推荐.这是因为当 DNS 响应不是动态生成时, 通常更容易解决配置错误的问题.然而, 可能出于任何原因主服务器 (接收所有更新) 无法升级, 但辅助服务器可以升级以处理 (相对少量的) AAAA 查询的情况.在这种情况下, 可以使用下面描述的 DNS64.我们在本节中描述的 DNS64 行为涵盖了在 DNS 查询到达时合成 AAAA RR 的情况.

此情况的场景如下图所示:

           +-----------+          +----------------------+
| | | IPv4 site |
| IPv6 | +------------+ | +----+ |
| Internet |----| IPv6/IPv4 |--|---| H2 | |
| | | Translator | | +----+ |
| | +------------+ | |
| | | | 192.0.2.1 |
| | +------------+ | |
| |----| Name server|--| |
| | | with DNS64 | | |
+-----------+ +------------+ | |
| | | |
+----+ | |
| H1 | +----------------------+
+----+

图 6: DNS64 处于 DNS 服务器模式的 "IPv6 互联网到 IPv4 网络" 设置

该图显示了 IPv6 节点 H1 和 IPv4 节点 H2, H2 具有 IPv4 地址 192.0.2.1 和 FQDN h2.example.com.

IPv6/IPv4 转换器使用 NSP 2001:db8::/96 来创建 IPv4 地址的 IPv6 表示形式.本地名称服务器中的 DNS64 功能配置了相同的前缀.实现 DNS64 功能的名称服务器是本地域的权威名称服务器.

H1 与 H2 建立通信的步骤是:

  1. H1 对 h2.example.com 进行 DNS 查找.H1 通过发送对 H2 的 AAAA 记录的 DNS 查询来执行此操作.查询最终转发到 IPv4 站点中的服务器.

  2. 本地 DNS 服务器解析查询 (本地), 并发现 H2 没有 AAAA 记录.

  3. 名称服务器验证 h2.example.com 及其 A RR 是否在本地策略定义为允许生成 AAAA RR 的那些中.如果是这种情况, 名称服务器从 A RR 和前缀 2001:db8::/96 合成 AAAA 记录.AAAA 记录中的 IPv6 地址是 2001:db8::192.0.2.1.

  4. H1 接收合成的 AAAA 记录并向 H2 发送数据包.数据包发送到目标地址 2001:db8::192.0.2.1.

  5. 数据包通过 IPv6 互联网路由到 IPv6/IPv4 转换器的 IPv6 接口, 通信使用 IPv6/IPv4 转换器机制进行.