跳到主要内容

6. Deployment Notes (部署说明)

6. Deployment Notes (部署说明)

虽然 DNS64 旨在成为在具有一些 IPv4-only 和 IPv6-only 网络的互联网环境中帮助 IPv6 部署的策略的一部分, 但重要的是要认识到它与可能在 IPv4-only 或双栈环境中部署的某些内容不兼容.

6.1. DNS Resolvers and DNS64 (DNS 解析器和 DNS64)

不知道 DNS64 功能的全服务解析器可能被 (错误) 配置为充当混合模式迭代和转发解析器.在原生 IPv4 环境中, 这种配置可能看起来有效.如果它不知道 DNS64 功能, 就不可能使其正常工作, 因为它可能在某个时候获得仅 IPv4 的胶水记录并尝试使用它们进行解析.返回的结果将仅包含 A 记录, 并且没有执行 DNS64 功能的能力, 解析器将无法应答必要的 AAAA 查询.

6.2. DNSSEC Validators and DNS64 (DNSSEC 验证器和 DNS64)

现有的 DNSSEC 验证器 (即, 不知道 DNS64 的验证器) 可能会拒绝来自 DNS64 的所有数据, 认为它被篡改了 (即使它在查询时没有设置 CD).如果有必要在 DNS64 后面进行验证, 则验证器必须知道如何自己执行 DNS64 功能.或者, 验证主机可以与 DNS64 建立可信连接, 并允许 DNS64 递归解析器代表其执行所有验证.

6.3. DNS64 and Multihomed and Dual-Stack Hosts (DNS64 与多宿主机和双栈主机)

6.3.1. IPv6 Multihomed Hosts (IPv6 多宿主机)

合成的 AAAA 记录可能是基于它们被构造的网络上下文构造的.如果主机向多个网络中的解析器发送 DNS 查询, 则可能其中一些将从 DNS64 接收应答, 而它们并非全部通过 NAT64 连接.例如, 假设一个系统有两个接口 i1 和 i2.i1 通过 NAT64 连接到 IPv4 互联网, 而 i2 仅具有原生 IPv6 连接.i1 可能从为特定 NAT64 配置的 DNS64 接收 AAAA 应答; 该 AAAA 应答中包含的 IPv6 地址将无法通过 i2 连接到任何内容.

          +---------------+                 +-------------+
| i1 (IPv6)+----NAT64--------+IPv4 Internet|
| | +-------------+
| host |
| | +-------------+
| i2 (IPv6)+-----------------+IPv6 Internet|
+---------------+ +-------------+

图 1: IPv6 多宿主机

此示例说明了为什么通常最好让主机将来自一个接口的 DNS 应答视为该接口的本地应答.在一个接口上接收的应答将不适用于另一个接口.在这些情况下, 尝试全局使用 DNS 应答的主机可能会遇到令人惊讶的失败.

请注意, 问题不在于有两个接口, 而在于涉及两个网络.使用路由到两个不同网络的单个接口可以实现相同的结果.

6.3.2. Accidental Dual-Stack DNS64 Use (意外的双栈 DNS64 使用)

同样, 假设 i1 具有 IPv6 连接并可以通过 NAT64 连接到 IPv4 互联网, 但 i2 具有原生 IPv4 连接.在这种情况下, i1 可能从合成的 AAAA 接收 IPv6 地址, 而通过原生 IPv4 可以更好地到达该地址.同样, 值得强调的是, 这是因为涉及两个网络.

          +---------------+                 +-------------+
| i1 (IPv6)+----NAT64--------+IPv4 Internet|
| | +-------------+
| host |
| | +-------------+
| i2 (IPv4)+-----------------+IPv4 Internet|
+---------------+ +-------------+

图 2: 意外的双栈 DNS64 使用

双栈主机的默认配置是 IPv6 优先于 IPv4 ([RFC3484]).在这种安排中, 主机通常会在原生 IPv4 更可取时使用 NAT64.因此, 具有到互联网的 IPv4 连接的主机应该避免使用 DNS64.当 ISP 向客户端提供 DNS 解析器时, 这可以部分解决, 但这不能保证当应该使用原生 IPv4 连接时永远不会使用 NAT64.没有通用机制来确保始终优先使用原生 IPv4 传输, 因为对于 DNS64 无关的主机, DNS64 看起来就像普通的 DNS 服务器.NAT64 的运营商应该预期即使在不必要的情况下, 流量也会通过 NAT64 传递.

6.3.3. Intentional Dual-Stack DNS64 Use (有意的双栈 DNS64 使用)

最后, 考虑 i2 上的 IPv4 连接仅与 LAN 连接而不与 IPv4 互联网连接的情况.IPv4 互联网仅可使用 NAT64 访问.在这种情况下, 对于 LAN 中的主机, DNS64 不合成 AAAA 响应至关重要, 或者 DNS64 了解 LAN 中的主机并为 LAN 内的主机提供上下文敏感的应答 ("分裂视图" DNS 应答).与任何分裂视图 DNS 安排一样, 运营商必须准备好数据从一个上下文泄漏到另一个上下文, 并且由于从一个上下文可访问的节点无法从另一个上下文访问而发生故障.

          +---------------+                 +-------------+
| i1 (IPv6)+----NAT64--------+IPv4 Internet|
| | +-------------+
| host |
| |
| i2 (IPv4)+---(local LAN only)
+---------------+

图 3: 有意的双栈 DNS64 使用

DNS64 的部署者重要的是要认识到, 在某些情况下, 使 DNS64 对双栈主机可用将导致主机更喜欢通过 NAT64 发送数据包而不是通过原生 IPv4, 并带来 NAT 带来的相关性能或功能损失 (或两者).同时, 某些主机无法了解在 IPv6 地址上配置的 DNS 服务器, 或者根本无法通过 IPv6 发送 DNS 数据包.