管理 DNSSEC 配置

本页面介绍如何启用和停用域名系统安全扩展程序 (DNSSEC)、如何验证 DNSSEC 部署并将可用区迁移到 Cloud DNS。

如需简要了解 DNSSEC,请参阅 DNSSEC 概览

为现有代管可用区启用 DNSSEC

如需为现有代管可用区启用 DNSSEC,请按以下步骤操作。

控制台

  1. 在 Google Cloud Console 中,转到 Cloud DNS 页面。

    转到 Cloud DNS

  2. 点击可用区的 DNSSEC 设置,然后在 DNSSEC 下,选择开启

    启用 DNSSEC 可用区菜单

  3. 在确认对话框中点击启用

    “启用 DNSSEC”确认对话框

gcloud

运行以下命令:

gcloud dns managed-zones update EXAMPLE_ZONE --dnssec-state on

EXAMPLE_ZONE 替换为可用区 ID。

Python

请运行以下命令:

def enable_dnssec(project_id, name, description=None):
client = dns.Client(project=project_id)
zone = client.zone(name=name)
zone.update(dnssec='on', description=description)

在创建可用区时启用 DNSSEC

如需在创建可用区时启用 DNSSEC,请按以下步骤操作。

控制台

  1. 在 Google Cloud Console 中,转到 Cloud DNS 页面。

    转到 Cloud DNS

  2. 点击创建区域

  3. 可用区名称字段中,输入名称。

  4. DNS 名称字段中,输入名称。

  5. DNSSEC 下,选择开启

  6. 可选:添加说明。

  7. 点击创建

    创建带有 DNSSEC 签名的可用区

gcloud

运行以下命令:

gcloud dns managed-zones create EXAMPLE_ZONE \
    --description "Signed Zone" --dns-name myzone.example.com --dnssec-state on

EXAMPLE_ZONE 替换为可用区 ID。

Python

请运行以下命令:

def create_signed_zone(project_id, name, dns_name, description):
client = dns.Client(project=project_id)
zone = client.zone(
    name,  # examplezonename
    dns_name=dns_name,  # example.com.
    description=description,
    dnssec='on')
zone.create()
return zone

验证 DNSSEC 部署

如需验证启用了 DNSSEC 的可用区是否正确部署,请确保您已将正确的 DS 记录存放在父可用区中。如果出现以下任一情况,DNSSEC 解析可能会失败:

  • 配置有误,或者您输错了配置。
  • 您已将不正确的 DS 记录置于父可用区中。

如需验证是否正确配置了配置,以及先交叉检查 DS 记录,然后再放置在父可用区,请使用以下工具:

您可以使用 Verisign DNSSEC 调试程序和 Zonemaster 网站来验证您的 DNSSEC 配置,然后再向注册商更新 Cloud DNS 域名服务器或 DS 记录。为 DNSSEC 正确配置的网域是 example.com,可通过 DNSViz 查看。

针对带有 DNSSEC 签名的可用区推荐的 TTL 设置

TTL 是 DNSSEC 签名的可用区的存留时间(以秒为单位)。

与 TTL 过期时间不同,DNSSEC 签名的过期时间为固定的绝对时间,而 TTL 过期时间是一个相对时间(相对于域名服务器发送查询响应时间)。 如果配置的 TTL 超过签名生命周期,则可能会导致许多客户端在 DNSSEC 签名已过期时同时请求记录。如果 TTL 太短,这也会导致 DNSSEC 验证解析器出现问题。

如需详细了解 TTL 选择,请参阅 RFC 6781 第 4.4.1 节注意事项RFC 6781 图 11

阅读 RFC 6781 第 4.4.1 节时,请考虑许多由 Cloud DNS 修复的签名时间参数,您无法更改这些参数。目前,您无法更改以下参数(这些参数会随时发生变化,恕不另行通知;届时本文档也会做相应更新):

  • 生效偏移量 = 1 天
  • 有效期 = 21 天
  • 重新签名周期 = 3 天
  • 刷新周期 = 18 天
  • 抖动间隔 = ½ 天(或 ±6 小时)
  • 最短签名有效期 = 刷新周期 - 抖动间隔 = 17.75 天 = 1533600

切勿将 TTL 设置为超过最短签名有效期。

为代管可用区停用 DNSSEC

移除 DS 记录并等到这些记录在缓存中过期后,您可以使用以下 gcloud 命令来停用 DNSSEC:

gcloud dns managed-zones update EXAMPLE_ZONE --dnssec-state=off

EXAMPLE_ZONE 替换为可用区 ID。

DNSSEC、网域转移和可用区迁移

对于已在网域注册表中激活 DNSSEC 的已启用 DNSSEC 的可用区,请参阅以下部分中的步骤以确保网域正常运行:

  • 网域被转移到另一个注册商(或所有权被转移)时。

  • 在 Cloud DNS 和另一个 DNS 运营商之间迁移 DNS 可用区时

Cloud DNS 采用 KSK Double-DS 滚动更新变体(请参阅 RFC 6781 第 4.1.2 节密钥签名密钥滚动)技术方法来完成这些迁移操作。

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

将带有 DNSSEC 签名的可用区迁移到 Cloud DNS

如果要将带有 DNSSEC 签名的可用区迁移到 Cloud DNS,请确保 Cloud DNS 支持已在使用的 KSK 算法。如果不支持,请先在域名注册商处停用 DNSSEC,然后在注册商处迁移可用区并更新域名服务器记录,以使用 Cloud DNS 域名服务器。

如果 Cloud DNS 支持现有 KSK 和 ZSK 算法,您可以按照以下步骤在启用 DNSSEC 的情况下执行迁移:

  1. 在 DNSSEC Transfer 状态下新建一个带有 DNSSEC 签名的可用区。在 Transfer 状态下,您可以手动将 DNSKEY 复制到可用区中。

  2. 导出您的可用区文件并将其导入新可用区中。

  3. 添加旧可用区的可用区文件中的 DNSKEY(包括 KSK 和 ZSK)。

    您还可以使用 dig 命令查询其他域名服务器,以获取其中的 DNSKEY 记录。

  4. 将新可用区的 DS 记录添加到您的注册商。

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

退出 DNSSEC 转移状态

如需退出 DNSSEC 转移状态,请等待对 Cloud DNS 的域名服务器引用(NS 和 DS)已传播到所有权威域名注册管理机构域名服务器。此外,还请确保所有旧域名服务器 DNSSEC 资源记录(包含域名注册管理机构父可用区的 NS 和 DS 记录以及旧可用区中的 DNSKEY、NSEC/NSEC3 和 RRSIG 记录)的 TTL 均已过期。请务必移除手动添加的转移 DNSKEY 记录。

然后,您可以将可用区的 DNSSEC 状态从 Transfer 更改为 On。执行此项更改可从可用区启用自动 ZSK 轮换。通常,您的可用区可以在一周后安全地退出 DNSSEC 转移状态,并且保持在 DNSSEC 转移状态的时间不应超过一到两个月。

您还必须从注册商处移除旧 DNS 运营商可用区的 DS 记录

从 Cloud DNS 迁移带有 DNSSEC 签名的可用区

在将带有 DNSSEC 签名的可用区迁移到另一个 DNS 运算符之前,请确保相应可用区和运营商支持您使用的相同 KSK 算法。如果不支持,请先在域名注册商处停用 DNSSEC,然后在注册商处迁移可用区并更新域名服务器记录,以使用新的域名服务器。

如果新运营商支持相同的 KSK(最好同时支持相同的 ZSK)算法,并支持将现有 DNSKEY 复制到新可用区,您可以按照以下步骤在启用 DNSSEC 的情况下执行迁移:

  1. 将 DNSSEC 状态从 On 更改为 Transfer。这会阻止 ZSK 轮换。

  2. 导出您的可用区文件(包括 DNSKEY)并将其导入新可用区。

  3. 如果 DNSKEY(包括 KSK 和 ZSK)导入失败,请手动添加。

    使用 dig 命令查询您可用区的 Cloud DNS 域名服务器,以获取其中的 DNSKEY 记录:

    dig DNSKEY myzone.example.com. @ns-cloud-e1.googledomains.com.
    
  4. 为新可用区启用 DNSSEC 签名,并在注册商处为新 KSK 添加 DS 记录。

    如果您的注册商无法支持多个 DS 记录,请在第 6 步中完成此任务。

  5. (可选)将新可用区的新 DNSKEY 导入 Cloud DNS 中。

    您可以使用与第 3 步类似的 dig 命令来执行此操作,但跳过从 Cloud DNS 导出的 DNSKEY。

  6. 如需使用新的 DNS 运算符,请在注册商处更新域名服务器记录。

    如果您只能在注册商处替换 DS 记录,请立即执行此操作。

如果另一个 DNS 运营商在迁移带有 DNSSEC 签名的可用区(如 Dyn)方面有自己的流程,那么该运营商的迁移步骤必须在第 1 步完成之后与此步操作并行执行。

在其他 DNS 运算符上完成所有必要的步骤后,请执行以下操作:

  1. 将 DNSSEC 状态更新为 Off,或者删除 Cloud DNS 中的可用区以停用 DNSSEC。

  2. 从注册商移除 Cloud DNS 可用区的 DS 记录

后续步骤

  • 如需获取有关特定 DNSSEC 配置的信息,请参阅使用高级 DNSSEC
  • 如需创建、更新、列出和删除代管区域,请参阅管理区域
  • 如需了解您在使用 Cloud DNS 时可能会遇到的常见问题的解决方案,请参阅问题排查
  • 如需大致了解 Cloud DNS,请参阅 Cloud DNS 概览