迁移或转移已启用 DNSSEC 的区域

本页面介绍了如何在 Cloud DNS 与其他 DNS 托管服务提供商之间迁移在网域注册商处激活且已启用 DNSSEC 的区域,同时维护 DNSSEC 信任链。

如需从概念上大致了解 DNSSEC,请参阅 DNSSEC 概览

准备工作

DNSSEC 迁移非常复杂,需要妥善协调以便在不发生服务中断的情况下在运营商之间迁移区域。在转移或迁移区域之前,请先完整阅读本指南。我们建议您先尝试迁移不太重要的区域,确认没有问题后再迁移关键生产区域。

与 DNS 运营商和网域注册商协调

为了防止验证解析器将网域视为无效,您必须与 DNS 运营商和网域注册商协调迁移。此步骤可确保您可以在转换期间建立和维护从父区域到由两个 DNS 运营商管理的密钥的有效信任链。

如果您的网域注册商还提供 DNS 托管,则您必须与网域注册商协调来迁移 DNSSEC 信任链。如果注册商不支持此操作,则无法在维护 DNSSEC 信任链的同时迁移域名服务器。

等待解析器缓存到期

在迁移期间,当您进行关键记录更新后,请等待解析器缓存到期。此步骤可防止在迁移到新域名服务器后,旧缓存记录与更新后的区域不一致而导致的验证错误。

限制

迁移 DNSSEC 区域存在以下限制:

  • 只有在新运营商和注册商支持 DNSSEC 迁移(包括导入 DNSKEY 记录、设置多个 DS 记录以及防止在迁移过程中自动轮替密钥)时,您才能迁移区域,同时维护 DNSSEC 信任链。

  • 在新旧运营商处必须使用相同的算法,因为区域必须通过使用中的所有算法进行签名。如需了解详情,请参阅 RFC 4035 第 2.2 节。Cloud DNS 一次只能使用一种算法签名。在提供商之间迁移期间,您无法更改算法。

  • 您必须能够将 DNSKEY 记录从 Cloud DNS 导入其他运营商的区域中,并使用该运营商的密钥对这些记录进行签名。Cloud DNS 允许在 Transfer 模式下为区域添加 DNSKEY 记录。

  • 您必须能够将来自 Cloud DNS 的第二个 DS 记录添加到父区域中。注册商或父区域必须支持与未在子区域中对任何记录进行签名的公钥对应的 DS 记录。

  • 在迁移完成之前,您必须能够对区域停止旧运营商或新运营商进行的自动密钥轮替。在 Transfer 模式下,Cloud DNS 会自动对区域停止密钥轮替。

如果新运营商不支持迁移,请执行以下操作:

  1. 在注册商处停用 DNSSEC
  2. 执行转移或迁移。
  3. 启用 DNSSEC
  4. 在注册商处激活 DNSSEC

如需查看关于 DNSSEC 和网域转移以及潜在问题的演示文稿,请参阅“DNS/DNSSEC 和网域转移:它们是否兼容?”

在运营商之间迁移

Cloud DNS 用于 DNSSEC 迁移的技术方法是 RFC 6781 附录 D 协调运营商的替代轮替方法中所述的 Double-DS KSK 轮替变体。

DNSSEC 迁移无需在 DNS 运营商之间交换私钥或签名即可执行。除了旧运营商的公钥之外,现有域名服务器和父区域还会预先发布新运营商公钥的签名记录。同样,除了新运营商的密钥之外,新域名服务器还会发布旧运营商密钥的签名记录。

来自其他运营商的密钥会进行签名,用于在两个运营商与父区域之间建立交叉信任,以便验证解析器可以使用来自一个运营商的记录来验证来自另一个运营商的响应。此过程可实现不间断地转移到新运营商的域名服务器。

这些记录传播后,解析器可以在后续转移期间验证来自两个运营商的响应,而新的域名服务器委派记录会传播到所有解析器缓存。

更新后的域名服务器记录传播后,您可以完成迁移。您可以从旧域名服务器中移除子区域,并从父区域中移除旧运营商的信任锚。

将 DNSSEC 签名的区域迁移到 Cloud DNS

开始之前,请查看所有说明。您还必须验证提供商是否支持迁移。如果不支持,您将无法使用此过程迁移区域。

如需执行迁移,请按照以下步骤操作:

  1. 在旧域名服务器对区域停止所有密钥轮替。

  2. 在 DNSSEC Transfer 状态下新建一个 DNSSEC 签名的区域Transfer 状态会停止密钥轮替并允许 DNSKEY 导入。

    您必须为现有提供商使用相同的已在用的算法

  3. 导出未签名的区域文件,然后将其导入新区域中。

    按照提供商的说明导出区域数据。

    您可以在此步骤中添加 DNSKEY,但不添加现有区域中的任何其他 DNSSEC 记录类型(CDS、CDNSKEY、NSEC、NSEC3、NSEC3PARAM 或 RRSIG 类型)。

    您可以使用 gcloud dns record-sets import 命令导入区域。

  4. 从旧域名服务器中检索之前的 DNSKEY 记录。

    您还可以使用 digdelv 来查询 DNSKEY 记录,但必须验证返回的公钥是否正确且适用于您的区域。

  5. 从 Cloud DNS 中检索新 DNSKEY 记录。在 Transfer 模式下,DNSKEY 记录类似于区域中的普通记录。

  6. 将现有 DNSKEY 记录以及自动生成的 DNSKEY 记录添加到 Cloud DNS 区域中。

    您还可以导入第 3 步中的 DNSKEY,如果您的提供商导出 DNSKEY 以及其余区域数据,则跳过此步骤。

  7. 将新的 DNSKEY 记录从 Cloud DNS 添加到现有运营商中的区域。如有必要,请务必对区域进行重新签名。

  8. 将现有 DS 记录及 Cloud DNS 区域的 DS 记录添加到您的注册商。

  9. 等待新记录传播,旧记录在所有解析器缓存中过期。否则,过时的数据可能会导致验证失败。

    等到发生以下所有情况:

    • 记录传播到旧运营商使用的所有域名服务器。

    • 父区域 NS 记录集 TTL 到期。

    • 父区域 DS 记录集 TTL 到期。

    • 旧运营商的子区域 NS 记录集 TTL 到期。

    • 旧运营商的子区域 DNSKEY 记录集 TTL 到期。

  10. 通过检查旧运营商是否提供所有 DNSKEY 记录以及父区域是否提供两个 DS 记录,验证区域是否已准备就绪。

  11. 将域名服务器委派更改为指向 Cloud DNS。

    在注册商处将域名服务器记录更新为新地区的 Cloud DNS 域名服务器。

  12. 等待新的域名服务器记录传播完毕,以及所有解析器记录中的旧委派记录过期。否则,过时的数据可能会导致验证失败。

    等到发生以下所有情况:

    • 父区域 NS 记录集 TTL 到期。

    • 旧运营商的子区域 NS 记录集 TTL 到期。

    完成此步骤后,您就可以安全地停止为旧运营商的区域提供服务。

  13. 移除添加到 Cloud DNS 区域的旧区域的 DNSKEY 记录。

  14. 将区域的 DNSSEC 状态从 Transfer 更改为 On

    退出转移状态可为区域启用自动密钥轮替。您的区域可以在一周后安全地退出 DNSSEC 转移状态,并且保持在 DNSSEC 转移状态的时间不得超过一到两个月。

  15. 从注册商移除旧运营商区域的 DS 记录

从 Cloud DNS 迁移 DNSSEC 签名的区域

开始迁移之前,请查看所有说明。您还必须验证提供商是否支持迁移。如果不支持,您将无法使用此过程迁移区域。

如需执行迁移,请按照以下步骤操作:

  1. 将 DNSSEC 状态从 On 更改为 Transfer。此步骤会停止密钥轮替。

  2. 导出您的区域文件,然后将其导入新运营商中。

    您可以使用 gcloud dns record-sets export 导出区域。

    Transfer 模式导出区域也会从 Cloud DNS 中导出 DNSKEY 记录。如果在此步骤中您的提供商接受 DNSKEY,您可以立即添加它们,并跳过下面将公钥从 Cloud DNS 转移到新提供商的步骤。

  3. 为新提供商的区域签名。

    您必须为现有提供商使用 Cloud DNS 已在用的相同算法

    在迁移完成之前,您必须在新域名服务器对区域停止密钥轮替。

  4. 从 Cloud DNS 中检索 DNSKEY 记录。在 Transfer 模式下,DNSKEY 记录类似于区域中的普通记录。

    您还可以使用 digdelv 来查询 Cloud DNS 域名服务器以获取 DNSKEY 记录,但必须验证返回的公钥是否正确且适用于您的区域。

  5. 从新运营商中检索新的 DNSKEY 记录。

    您可能需要先为区域签名或配置 DNSSEC 以获取密钥。

  6. 将 Cloud DNS DNSKEY 记录以及新区域的 DNSKEY 记录添加到新运营商的区域中。

  7. 将来自新运营商的 DNSKEY 记录添加到 Cloud DNS 中。

  8. 为您的注册商添加新运营商区域的 DS 记录以及来自 Cloud DNS 的现有 DS 记录。

  9. 等待新记录传播,旧记录在所有解析器缓存中过期。否则,过时的数据可能会导致验证失败。

    等到发生以下所有情况:

    • 父区域 NS 记录集 TTL 到期。

    • 父区域 DS 记录集 TTL 到期。

    • Cloud DNS 区域 NS 记录集 TTL 到期。

    • Cloud DNS 区域 DNSKEY 记录集 TTL 到期。

    您可以通过检查 Cloud DNS 是否提供所有 DNSKEY 记录以及父区域是否提供两个 DS 记录,验证区域是否已准备就绪。

  10. 将域名服务器委派改为指向新运营商。

    在注册商处将域名服务器记录更新为该区域新运营商的域名服务器。

  11. 等待新的域名服务器记录传播完毕,以及所有解析器记录中的旧委派记录过期。否则,过时的数据可能会导致验证失败。

    等到以下所有项到期:

    • 父区域 NS 记录集 TTL。

    • Cloud DNS 区域 NS 记录集 TTL。

    完成此步骤后,您就可以安全地从 Cloud DNS 中删除区域。

  12. 移除添加到新区域的 Cloud DNS DNSKEY 记录。

  13. 从注册商处移除 Cloud DNS 的 DS 记录

  14. 根据需要完成新运营商的迁移。

如果其他 DNS 运营商正在迁移由 DNSSEC 签名的区域,则您必须在第 1 步完成之后与此流程并行执行其步骤。

后续步骤