本页面介绍如何启用和停用域名系统安全扩展程序 (DNSSEC)、如何验证 DNSSEC 部署并将可用区迁移到 Cloud DNS。
如需简要了解 DNSSEC,请参阅 DNSSEC 概览。
为现有代管可用区启用 DNSSEC
如需为现有代管可用区启用 DNSSEC,请按以下步骤操作。
控制台
在 Google Cloud Console 中,转到 Cloud DNS 页面。
点击可用区的 DNSSEC 设置,然后在 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,请按以下步骤操作。
控制台
在 Google Cloud Console 中,转到 Cloud DNS 页面。
点击创建区域。
在可用区名称字段中,输入名称。
在 DNS 名称字段中,输入名称。
在 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 的情况下执行迁移:
在 DNSSEC
Transfer
状态下新建一个带有 DNSSEC 签名的可用区。在Transfer
状态下,您可以手动将 DNSKEY 复制到可用区中。导出您的可用区文件并将其导入新可用区中。
添加旧可用区的可用区文件中的 DNSKEY(包括 KSK 和 ZSK)。
您还可以使用
dig
命令查询其他域名服务器,以获取其中的 DNSKEY 记录。将新可用区的 DS 记录添加到您的注册商。
在注册商处将域名服务器记录更新为新可用区的 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 的情况下执行迁移:
将 DNSSEC 状态从
On
更改为Transfer
。这会阻止 ZSK 轮换。导出您的可用区文件(包括 DNSKEY)并将其导入新可用区。
如果 DNSKEY(包括 KSK 和 ZSK)导入失败,请手动添加。
使用
dig
命令查询您可用区的 Cloud DNS 域名服务器,以获取其中的 DNSKEY 记录:dig DNSKEY myzone.example.com. @ns-cloud-e1.googledomains.com.
为新可用区启用 DNSSEC 签名,并在注册商处为新 KSK 添加 DS 记录。
如果您的注册商无法支持多个 DS 记录,请在第 6 步中完成此任务。
(可选)将新可用区的新 DNSKEY 导入 Cloud DNS 中。
您可以使用与第 3 步类似的
dig
命令来执行此操作,但跳过从 Cloud DNS 导出的 DNSKEY。如需使用新的 DNS 运算符,请在注册商处更新域名服务器记录。
如果您只能在注册商处替换 DS 记录,请立即执行此操作。
如果另一个 DNS 运营商在迁移带有 DNSSEC 签名的可用区(如 Dyn)方面有自己的流程,那么该运营商的迁移步骤必须在第 1 步完成之后与此步操作并行执行。
在其他 DNS 运算符上完成所有必要的步骤后,请执行以下操作:
将 DNSSEC 状态更新为
Off
,或者删除 Cloud DNS 中的可用区以停用 DNSSEC。
后续步骤
- 如需获取有关特定 DNSSEC 配置的信息,请参阅使用高级 DNSSEC。
- 如需创建、更新、列出和删除代管区域,请参阅管理区域。
- 如需了解您在使用 Cloud DNS 时可能会遇到的常见问题的解决方案,请参阅问题排查。
- 如需大致了解 Cloud DNS,请参阅 Cloud DNS 概览。