添加、更新和删除记录

本页面介绍了如何添加、更新和删除资源记录集。

如需查看支持的资源记录类型列表,请参阅支持的资源记录类型

准备工作

  1. 创建托管区域。满足创建托管区域的前提条件,然后创建托管区域。

  2. 选择受支持的资源记录类型。为资源记录集选择资源记录类型。

添加资源记录集

要添加资源记录集,请按以下步骤操作:

控制台

  1. 在 Trusted Cloud 控制台中,前往 Cloud DNS 区域页面。

    前往 Cloud DNS 区域

  2. 点击要在其中添加记录的托管区域的名称。

  3. 区域详情页面上,点击添加标准

  4. 创建记录集页面的 DNS 名称字段中,输入 DNS 区域的子网域,例如 mail。结尾处会自动添加结尾句点。

    如需创建通配符 DNS 记录,请输入星号,例如 *.example.com

    at 符号 (@) 不会自动创建顶级域名记录。 如需在顶级域名下创建资源记录,请将 DNS 名称字段留空。

  5. 选择资源记录类型,例如 MX

  6. TTL 字段中,输入一个数值表示资源记录的生存时间,即该资源记录可缓存的时间期限。此值必须是正整数。

  7. TTL 单位菜单中,选择时间单位,例如 minutes

  8. 根据您已选择的资源记录类型,填充剩余字段

  9. 要输入其他信息,请点击添加一项

  10. 点击创建

gcloud

如需添加资源记录集,请使用 gcloud dns record-sets create 命令:

gcloud dns record-sets create RRSET_NAME \
    --rrdatas=RR_DATA \
    --ttl=TTL \
    --type=RRSET_TYPE \
    --zone=MANAGED_ZONE

替换以下内容:

  • RRSET_NAME:匹配传入查询的 DNS 名称,并使用此区域的 DNS 名称作为其后缀,例如 test.example.com
  • RR_DATA:与资源记录集关联的任意值,例如 198.51.100.5;您还可以输入多个值 rrdata1 rrdata2 rrdata3,例如 198.51.100.5 10.2.3.4...
  • TTL:解析器缓存此资源记录集的 TTL(以秒为单位),例如 30
  • RRSET_TYPE:此资源记录集的资源记录类型,例如 A
  • MANAGED_ZONE:此资源记录集关联的代管区域(例如 my-zone-name);此资源记录集的名称必须以代管区域的 DNS 名称作为其后缀

API

如需添加资源记录集,请使用 resourceRecordSets.create 方法

POST https://www.googleapis.com/dns/v1/projects/PROJECT_ID/managedZones/MANAGED_ZONE/rrsets
{
    "name": "RRSET_NAME",
    "type": "RRSET_TYPE",
    "ttl": TTL,
    "rrdatas": [ RR_DATA ]
}

替换以下内容:

  • PROJECT_ID:项目的 ID
  • MANAGED_ZONE:此资源记录集关联的代管区域(例如 my-zone-name);此资源记录集的名称必须以代管区域的 DNS 名称作为其后缀
  • RRSET_NAME:匹配传入查询的 DNS 名称,并使用此区域的 DNS 名称作为其后缀,例如 test.example.com
  • RRSET_TYPE:此资源记录集的资源记录类型,例如 A
  • TTL:解析器缓存此资源记录集的 TTL(以秒为单位),例如 30
  • RR_DATA:与资源记录集关联的任意值,例如 "198.51.100.5";您还可以输入多个值(使用逗号分隔列表),例如 "198.51.100.5","10.2.3.4"

Terraform

resource "google_dns_managed_zone" "parent_zone" {
  name        = "sample-zone"
  dns_name    = "sample-zone.hashicorptest.com."
  description = "Test Description"
}

resource "google_dns_record_set" "default" {
  managed_zone = google_dns_managed_zone.parent_zone.name
  name         = "test-record.sample-zone.hashicorptest.com."
  type         = "A"
  rrdatas      = ["10.0.0.1", "10.1.0.1"]
  ttl          = 86400
}

在事务中添加一组资源记录集

您可以通过创建指定更改的事务来添加多个资源记录集。事务是一组必须作为一个单元应用的一项或多项 DNS 记录更改。事务要么整体成功要么整体失败,确保您的数据绝不会处于不一致的状态。您只能使用 gcloud CLI 或 Cloud DNS API 创建事务。

如需创建事务,请按以下步骤操作:

gcloud

  1. 如需启动一项事务,请使用 gcloud dns record-sets transaction start 命令

    gcloud dns record-sets transaction start \
       --zone=MANAGED_ZONE
    

    MANAGED_ZONE 替换为您要管理其资源记录集的托管区域的名称,例如 my-zone-name

  2. 如需在事务中添加资源记录集,请使用 gcloud dns record-sets transaction add 命令

    gcloud dns record-sets transaction add RR_DATA \
       --name=DNS_NAME \
       --ttl=TTL \
       --type=RECORD_TYPE \
       --zone=MANAGED_ZONE
    

    替换以下内容:

    • RR_DATA:与资源记录集关联的任意值,例如 198.51.100.5;您还可以输入多个值 rrdata1 rrdata2 rrdata3,例如 198.51.100.5 10.2.3.4...
    • DNS_NAME:要添加的记录集的 DNS 或域名,例如 test.example.com
    • TTL:记录集的存留时间 (TTL),以秒为单位,例如 300
    • RECORD_TYPE记录类型,例如 A
    • MANAGED_ZONE:您要管理其资源记录集的托管区域的名称,例如 my-zone-name
  3. 要执行事务,请使用 gcloud dns record-sets transaction execute 命令

    gcloud dns record-sets transaction execute \
       --zone=MANAGED_ZONE
    
  4. 如需添加通配符事务,请使用 gcloud dns record-sets transaction add 命令

    gcloud dns record-sets transaction add \
       --zone=MANAGED_ZONE \
       --name=WILDCARD_DNS_NAME \
       --type=RECORD_TYPE \
       --ttl=TTL
    

    替换以下内容:

    • MANAGED_ZONE:您要管理其资源记录集的托管区域的名称,例如 my-zone-name
    • WILDCARD_DNS_NAME:要添加的资源记录集的 DNS 或域名,例如 *.example.com.(注意在末尾处使用句点)
    • RECORD_TYPE记录类型,例如 CNAME
    • TTL:记录集的 TTL,以秒为单位(例如 300

API

要使用新资源记录集创建事务,请使用 changes.create 方法

POST https://dns.googleapis.com/dns/v1/projects/PROJECT_ID/managedZones/MANAGED_ZONE/changes
{
  "deletions": []
  "additions": [
    {
      "name": DNS_NAME,
      "type": RECORD_TYPE,
      "ttl": TTL,
      "rrdatas": [
        RR_DATA
      ]
    }
  ]
}

替换以下内容:

  • PROJECT_ID:您的项目 ID
  • MANAGED_ZONE:您的代管区域名称或 ID
  • DNS_NAME:记录集的 DNS 或域名,例如 test.example.com.(注意在末尾处使用句点)
  • RECORD_TYPE记录类型
  • TTL:记录集的存留时间 (TTL),以秒为单位,例如 30
  • RR_DATA:与资源记录集关联的任意值,例如 198.51.100.5;您还可以输入多个值 rrdata1 rrdata2 rrdata3,例如 198.51.100.5 10.2.3.4...

如要将电子邮件传送到您的网域,您必须向您的区域添加 MX 记录。如果您使用 Google Workspace 作为简单邮件传输协议 (SMTP) 提供方,请参阅设置 Google Workspace MX记录支持页面。否则,请使用提供方提供的 MX 记录详细信息,然后按照针对 Google Workspace 所述的设置流程操作。

查看某个区域的资源记录集

如需查看某个区域的资源记录集,请按照以下步骤操作:

控制台

  1. 在 Trusted Cloud 控制台中,前往 Cloud DNS 页面。

    前往 Cloud DNS

  2. 区域标签页上,点击要查看资源记录集的区域。

    区域详情页面将显示该区域中所有资源记录集的详细信息。

gcloud

如需查看您的区域的 DNS 记录,请使用 gcloud dns record-sets list 命令

gcloud dns record-sets list \
   --zone="ZONE_NAME"

ZONE_NAME 替换为项目中某个 DNS 区域的名称:

该命令将输出前 100 条记录所对应资源记录集的 JSON 响应。您可以指定以下附加参数:

  • --limit:需要列出的最大记录集数
  • --name:仅列出具有此确切域名的资源记录集
  • --type:仅列出此类型的记录;如果存在,则还必须使用 --name 参数

API

如需查看您的区域的 DNS 记录,请使用 resourceRecordSets.list 方法

GET https://www.googleapis.com/dns/v1/projects/PROJECT_ID/managedZones/MANAGED_ZONErrsets

替换以下内容:

  • PROJECT_ID:项目的 ID
  • MANAGED_ZONE:此资源记录集关联的代管区域(例如 my-zone-name);此资源记录集的名称必须以代管区域的 DNS 名称作为其后缀

查看一个资源记录集的详细信息

此过程假定您已在托管 Cloud DNS 区域内创建资源记录集。

要查看现有资源记录集的详细信息,请按以下步骤操作:

控制台

  1. 在 Trusted Cloud 控制台中,前往 Cloud DNS 区域页面。

    前往 Cloud DNS 区域

  2. 点击包含资源记录集的区域。

  3. 点击要查看详细信息的资源记录集。

    资源记录集详细信息页面会显示资源记录集的详细信息。

gcloud

如需查看现有资源记录集的详细信息,请使用 gcloud dns record-sets describe 命令

gcloud dns record-sets describe RRSET_NAME \
  --type=RRSET_TYPE \
  --zone=MANAGED_ZONE

替换以下内容:

  • RRSET_NAME:匹配传入查询的 DNS 名称,并使用此区域的 DNS 名称作为其后缀,例如 test.example.com
  • RRSET_TYPE:此资源记录集的资源记录类型,例如 A
  • MANAGED_ZONE:此资源记录集关联的代管区域(例如 my-zone-name);此资源记录集的名称必须以代管区域的 DNS 名称作为其后缀

API

如需获取现有资源记录集的详细信息,请使用 resourceRecordSets.get 方法

GET https://www.googleapis.com/dns/v1/projects/PROJECT_ID/managedZones/MANAGED_ZONE/rrsets/RRSET_NAME/RRSET_TYPE

替换以下内容:

  • PROJECT_ID:项目的 ID
  • MANAGED_ZONE:此资源记录集关联的代管区域(例如 my-zone-name);此资源记录集的名称必须以代管区域的 DNS 名称作为其后缀
  • RRSET_NAME:匹配传入查询的 DNS 名称,并使用此区域的 DNS 名称作为其后缀,例如 test.example.com
  • RRSET_TYPE:此资源记录集的记录类型,例如 A

更新资源记录集

要修改记录集,请按以下步骤操作:

控制台

要将部分更新应用于现有资源记录集,请按以下步骤操作:

  1. 在 Trusted Cloud 控制台中,前往 Cloud DNS 区域页面。

    前往 Cloud DNS 区域

  2. 点击要为其更新资源记录集的区域。

  3. 区域详情页面上,点击您要更新的资源记录集旁边的修改

  4. 完成必要的更新后,点击保存

gcloud

要对现有资源记录集应用部分更新,请使用 gcloud dns record-sets update 命令

gcloud dns record-sets update RRSET_NAME \
    --rrdatas=RR_DATA \
    --ttl=TTL \
    --type=RRSET_TYPE \
    --zone=MANAGED_ZONE

替换以下内容:

  • RRSET_NAME:匹配传入查询的 DNS 名称,并使用此区域的 DNS 名称作为其后缀,例如 test.example.com
  • RR_DATA:与资源记录集关联的任意值,例如 198.51.100.5;您还可以输入多个值 rrdata1 rrdata2 rrdata3,例如 198.51.100.5 10.2.3.4...
  • TTL:解析器缓存此资源记录集的 TTL(以秒为单位),例如 30
  • RRSET_TYPE:此资源记录集的资源记录类型,例如 A
  • MANAGED_ZONE:此资源记录集关联的代管区域(例如 my-zone-name);此资源记录集的名称必须以代管区域的 DNS 名称作为其后缀

API

要对现有资源记录集应用部分更新,请使用 resourceRecordSets.patch 方法

PATCH https://www.googleapis.com/dns/v1/projects/PROJECT_ID/managedZones/MANAGED_ZONE/rrsets/RRSET_NAME/RRSET_TYPE
{
  "ttl": TTL,
  "rrdatas": RR_DATA,
  "update_mask": {
      "paths": ["rrset.ttl", "rrset.rrdatas"]
  }
}

替换以下内容:

  • PROJECT_ID:项目的 ID
  • MANAGED_ZONE:此资源记录集关联的代管区域(例如 my-zone-name);此资源记录集的名称必须以代管区域的 DNS 名称作为其后缀
  • RRSET_NAME:匹配传入查询的 DNS 名称,并使用此区域的 DNS 名称作为其后缀,例如 test.example.com
  • RRSET_TYPE:此资源记录集的资源记录类型,例如 A
  • TTL:解析器缓存此资源记录集的 TTL(以秒为单位),例如 30
  • RR_DATA:与资源记录集关联的任意值,例如 198.51.100.5;您还可以输入多个值 rrdata1 rrdata2 rrdata3,例如 198.51.100.5 10.2.3.4...

删除资源记录集

您删除资源记录集后,其 DNS 记录会永久移除,无法恢复。为避免丢失 DNS 记录,请在删除前导出资源记录集。如需了解如何导出资源记录集,请参阅导入和导出资源记录集

Cloud DNS 会在区域顶端自动创建 NSSOA 记录。您无法使用 Cloud DNS API 删除这些记录,并且这些记录会在区域被删除时自动删除。如需了解详情,请参阅 RFC 1034

如需删除资源记录集,请按照以下步骤操作:

控制台

  1. 在 Trusted Cloud 控制台中,前往 Cloud DNS 页面。

    前往 Cloud DNS 区域

    区域详细信息页面上会列出该区域的记录。

  2. 如需删除某个区域中的资源记录集,请点击该区域的名称。

  3. 选中要删除的资源记录集旁边的复选框。

  4. 点击删除记录集

gcloud

如需删除现有的资源记录集,请使用 gcloud dns record-sets delete 命令

gcloud dns record-sets delete RRSET_NAME \
    --type=RRSET_TYPE \
    --zone=MANAGED_ZONE

替换以下内容:

  • RRSET_NAME:匹配传入查询的 DNS 名称,并使用此区域的 DNS 名称作为其后缀,例如 test.example.com
  • RRSET_TYPE:此资源记录集的资源记录类型,例如 A
  • MANAGED_ZONE:此资源记录集关联的代管区域(例如 my-zone-name);此资源记录集的名称必须以代管区域的 DNS 名称作为其后缀

API

如需删除现有资源记录集,请使用 resourceRecordSets.delete 方法

DELETE https://www.googleapis.com/dns/v1/projects/PROJECT_ID/managedZones/MANAGED_ZONE/rrsets/RRSET_NAME/RRSET_TYPE

替换以下内容:

  • PROJECT_ID:项目的 ID
  • MANAGED_ZONE:此资源记录集关联的代管区域(例如 my-zone-name);此资源记录集的名称必须以代管区域的 DNS 名称作为其后缀
  • RRSET_NAME:匹配传入查询的 DNS 名称,并使用此区域的 DNS 名称作为其后缀,例如 test.example.com
  • RRSET_TYPE:此资源记录集的资源记录类型,例如 A

导入和导出资源记录集

如需将资源记录集复制到托管区域中以及从托管区域中复制资源记录集,您可以使用 importexport 命令。您可以导入 BIND 区域文件格式或 YAML 文件格式,也可以导出到这两种格式。

gcloud

  1. 如需导入资源记录集,请使用 dns record-sets import 命令

    gcloud dns record-sets import -z=ZONE_NAME
    

    如果您想指定区域文件的格式,请使用上一条命令和 --zone-file-format 标志。如果省略此标志,则必须提供 YAML 格式的区域文件。

    ZONE_NAME 替换为您的区域的新名称。

    • gcloud dns record-sets import 命令与 --replace-origin-ns 标志一起使用时,它会将区域的 NS 记录替换为区域文件中指定的 NS 记录。这些记录必须与由 Cloud DNS 分配用以托管区域的域名服务器相匹配,此外还必须与父级(委派)区域中指定的 NS 记录相匹配。默认情况下,Cloud DNS 不会覆盖 NS 记录。如果您使用此标志,则必须验证 NS 记录是否正确。

    • 将记录集导入为 BIND 区域格式的文件时,请移除表示区域顶级域名的 @ 符号。在 BIND 区域格式的文件中,对于 example.com 之类的 DNS 名称,@ 符号表示 example.com.。不过,在 Cloud DNS 中,在定义记录名称时,@ 符号会按原样处理。如需在 Cloud DNS 中为区域的顶级域名创建资源记录集,请使用完整的域名,例如 example.com.

      in.smtp              IN MX 5 gmail-smtp-in.l.google.com
      in.smtp.example.com. IN MX 5 gmail-smtp-in.l.google.com.example.com.
      

      如需导入区域文件,请在必须完全限定的任何域名末尾添加结尾句点 (.)。

  2. 如需导出资源记录集,请使用 dns record-sets export 命令:如需将资源记录集导出为 BIND 区域格式的文件,请使用 --zone-file-format 标志。例如:

    example.com. 21600 IN NS ns-gcp-private.googledomains.com.
    example.com. 21600 IN SOA ns-gcp-private.googledomains.com.
    cloud-dns-hostmaster.google.com. 1 21600 3600 259200 300
    host1.example.com. 300 IN A 192.0.2.91
    

    如果省略 --zone-file-format 标志,export 会将资源记录集导出为 YAML 格式的记录文件:

    gcloud dns record-sets export example.zone -z=examplezonename
    

    例如:

    ---
    kind: dns#resourceRecordSet
    name: example.com.
    rrdatas:
    - ns-gcp-private.googledomains.com.
    ttl: 21600
    type: NS
    ---
    kind: dns#resourceRecordSet
    name: example.com.
    rrdatas:
    - ns-gcp-private.googledomains.com. cloud-dns-hostmaster.google.com. 1 21600 3600 259200 300
    ttl: 21600
    type: SOA
    ---
    kind: dns#resourceRecordSet
    name: host1.example.com.
    rrdatas:
    - 192.0.2.91
    ttl: 300
    type: A
    
    

    Cloud DNS 支持 ALIAS 记录类型,但该记录类型不是标准 DNS 记录类型,并且在 BIND 中不受支持。如果您要将资源记录集导出到 BIND,系统会跳过 ALIAS 记录。如果某个区域具有路由政策,则会将其导出为资源记录数据 (rrdata) 为空的记录。

支持的资源记录类型

适用的记录类型 输入
A

主机的数字地址,采用 IPv4 点分十进制格式。A 记录类型将 IPv4 地址映射到域名,并确定将域名请求定向到的目标位置,例如 192.0.2.91

AAAA

主机的数字 IP 地址,采用 IPv6 十六进制数字格式。AAAA (AAAA) 记录类型将 IPv6 地址映射到域名,并确定将域名请求定向到的目标位置,例如 2001:db8::8bd:1002

ALIAS([预览版](/products#product-launch-stages))

要为传入地址查询解析的规范名称,例如 example.my-cdn.net。当 A/AAAA 查询到达 ALIAS 记录时,系统会解析 ALIAS 的规范名称以确定返回的 IP 地址。您只能在网域的顶层添加 ALIAS 记录。

CNAME

A 记录的 DNS 别名 - 例如 ftp.example.comwww.example.com 的 DNS 别名。在此示例中,ftp.example.com 是与 www.example.com 位于同一服务器中的服务。指向 ftp.example.com 的链接会收到 www.example.comA 记录。

您还可以使用 CNAME 记录类型指向完全不同的域名 - 例如 altostrat.comwww.example.com 的 DNS 别名。

有时,域名服务器会返回 CNAME 记录和 CNAME 值引用的 A 记录;这种行为称为 CNAME 追踪

HTTPSSVCB

服务优先级 (SvcPriority)(别名为 0,服务说明为 1-65535)、TargetName(如果与所有者名称相同,则为“.”)和服务参数 (SvcParams)(由描述目标端点的 key=value 对组成,以空格分隔)。如需了解详情,请参阅规范草稿

MX

代表您的网域接收电子邮件的邮件交换服务器的偏好设置编号和 DNS 名称。SMTP 服务器首选具有较低偏好设置编号的服务器。0 是您可以输入的最低偏好值。

例如:1 mail.example.com.

确保偏好设置编号和 DNS 名称之间有一个空格。您输入的 MX 记录必须以英文句点 (.) 结尾。

您可以创建多个具有不同优先级的记录来配置备份邮件服务器,或者使用相同的优先级将负载分配到多个邮件服务器上。

例如,如需将邮件定向到您的 Google Workspace 账号,请输入以下内容:

  • 1 SMTP.GOOGLE.COM.

NS

为您的网域或子网域提供 DNS 服务的权威域名服务器的 DNS 名称。您的 NS 记录必须与您的区域的域名服务器(例如 ns-1.example.com)匹配。

SPF

SPF 资源记录集类型已弃用。请改用以 v=spf1 开头的 TXT 记录。现代电子邮件软件不使用 SPF 类型的记录。

SRV

用于指定特定服务的服务器位置,即主机名和端口号的数据 - 例如 0 1 587 mail.example.com

如需了解详情,请参阅 RFC 2782

SSHFP

SSH 服务器算法编号、指纹类型编号以及密钥指纹 - 例如 2 1 123456789abcdef67890123456789abcdef67890

如果您已为该区域启用 DNSSEC,请使用此记录类型。

TXT

文本数据,可包含任意文本,也可用于定义机器能识别的数据,例如安全信息或滥用行为防范信息。

TXT 记录可以包含一个或多个文本字符串;每个字符串的最大长度为 255 个字符。如果记录数据超过 255 字节,请将记录划分为 255 字节的字符串,并将每个字符串用引号引起来 - 例如 "String one 255 bytes" "String two 255 bytes"

邮件代理和其他软件代理会将多个字符串连接在一起。

请用引号括起每个字符串,例如 "Hello world" "Bye world"

每条 TXT 记录的长度上限为 1,000 个字符。如果您需要提高此限额,请与Trusted Cloud by S3NS 支持团队联系。

后续步骤

  • 如需了解用于资源记录集的 gcloud 命令,请参阅 gcloud dns record-sets
  • 如需查看 gcloud 或 API 操作的状态,请参阅监控 DNS 传播
  • 如需了解您在使用 Cloud DNS 时可能会遇到的常见问题的解决方案,请参阅问题排查
  • 如需大致了解 Cloud DNS,请参阅 Cloud DNS 概览