管理记录

如需管理 Cloud DNS API 的 DNS 记录,您需要向 API 发送更改请求。本页面介绍如何进行更改,包括对资源记录集集合执行的添加和删除操作。本页面还介绍如何使用 importexporttransaction 命令向 API 发送所需的更改。

准备工作

您必须已创建托管地区并已满足该任务的前提条件。

请注意,您可以通过创建和执行事务来指定要执行的操作,从而在记录集中添加或移除 DNS 记录。事务是一组必须一起传播的一项或多项记录更改。事务要么整体成功要么整体失败,因此您的数据绝不会出现中间状态。

添加记录

添加记录时,您可以向同一 DNS 域名的记录集中添加两个值或字符串。添加记录集时,必须在第一个值和第二个值之间添加空格。

控制台

如需在 Cloud Console 中创建记录集,请执行以下操作:

  1. 转到 Cloud DNS 页面
  2. 点击要添加记录的托管地区的名称。
  3. 在“地区详细信息”屏幕上,点击添加记录集
  4. 在“创建记录集”屏幕上的 DNS 名称字段中,输入 DNS 地区的子网域。例如 mail。结尾处会自动添加结尾句点。

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

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

  6. TTL 字段中,输入一个数值表示资源记录的生存时间,即可缓存的时间期限。此值必须是正整数。从“TTL 单位”下拉菜单中选择时间单位。例如 30 minutes

  7. 根据您已选择的资源记录类型,按表中所述填充剩余字段。

  8. 您可以通过点击添加一项来输入其他信息。

  9. 点击创建

gcloud

  1. 如需启动事务,请使用 gcloud dns record-sets transaction start 命令:
gcloud dns record-sets transaction start --zone="my-zone-name"
  

其中

  • --zone 是您要管理其记录集的托管地区的名称。
  1. 如需在事务中添加记录集,请使用 gcloud dns record-sets transaction add 命令:
gcloud dns record-sets transaction add 10.2.3.4 --name="test.example.com" \
  --ttl="30" \
  --type="A" \
  --zone="my-zone-name"
  

其中

  • --name 是要添加的记录集的 DNS 或域名。
  • --ttl 是记录集的 TTL(存留时间),以秒为单位。
  • --type中描述的记录类型。
  • --zone 是您要管理其记录集的托管地区的名称。
  1. 如需执行事务,请使用 gcloud dns record-sets transaction execute 命令:
gcloud dns record-sets transaction execute --zone="my-zone-name"

如需添加通配符事务,请使用以下命令:

gcloud dns record-sets transaction add --zone="my-zone-name" \
    --name="*.example.com." \
    --type=CNAME \
    --ttl=300 "sinkhole.example.com"
 

其中

  • --name 是要添加的记录集的 DNS 或域名。
  • --ttl 是记录集的存留时间,以秒为单位。
  • --type中描述的记录类型。
  • --zone 是您要管理其记录集的托管地区的名称。

API

要使用新资源记录集更新事务,请使用 create 方法。

POST https://www.googleapis.com/dns/v1/projects/PROJECT_ID/managedZones/managedZone/changes
{
  "deletions": [
    {
      "name": "test.example.com.",
      "type": "A",
      "ttl": "30",
      "rrdatas": [
        "198.51.100.5"
      ]
    }
  ]
  "additions": [
    {
      "name": "test.example.com.",
      "type": "A",
      "ttl": "30",
      "rrdatas": [
        "203.0.113.1"
      ]
    }
  ]
}

其中 PROJECT_ID 是您的项目 ID,managedZone 是您的托管地区的名称或 ID。

支持的 DNS 记录类型列表

点击此处在 API Explorer 上试用

移除记录

控制台

要从 Cloud Console 中移除记录或记录集,请执行以下操作:

  1. 转到 Cloud DNS 页面
  2. 点击您要删除其记录集的地区名称。“地区详细信息”页面上会列出该地区的记录。
  3. 点击要删除的记录旁边的复选框。
  4. 点击删除记录集

gcloud

如需移除事务,请使用 gcloud dns record-sets transaction remove 命令:

gcloud dns record-sets transaction remove 10.2.3.4 --name="test.example.com" \
    --ttl="number of seconds" \
    --type="record type" \
    --zone="zone name"
  

其中

  • --name 是要移除的记录集的 DNS 或域名。
  • --ttl 是记录集的存留时间,以秒为单位。
  • --type中描述的记录类型。

如需替换现有记录,请发出 remove 命令,后跟 add 命令。

API

要使用删除的资源记录集更新事务,请使用 create 方法。

POST https://www.googleapis.com/dns/v1/projects/PROJECT_ID/managedZones/managedZone/changes
{
  "deletions": [
    {
      "name": "test.example.com.",
      "type": "A",
      "ttl": "30",
      "rrdatas": [
        "198.51.100.5"
      ]
    }
  ]
  "additions": [
    {
      "name": "test.example.com.",
      "type": "A",
      "ttl": "30",
      "rrdatas": [
        "203.0.113.1"
      ]
    }
  ]
}

其中 PROJECT_ID 是您的项目 ID,managedZone 是您的托管地区的名称或 ID。

支持的 DNS 记录类型列表

点击此处在 API Explorer 上试用

有关选择资源记录类型的详细信息

适用的记录类型 输入
A

主机的数字 IP 地址,采用以句点分隔的十进制数字格式。

AAAA

主机的数字 IP 地址,采用 IPv6 十六进制数字格式。

CAA

有权为此网域颁发证书的证书授权机构。

CNAME

以该 DNS 名称作为别名的规范名称。

DNSKEY

其他运营商用于确保安全传输的 DNSSEC 密钥。此记录集类型只在“转移”状态下才能添加到已启用 DNSSEC 的地区。

DS

安全委派地区的 DNSSEC 密钥指纹。除非您为委派地区启用(和激活)DNSEC,否则此记录集类型不会为该地区激活 DNSEC。

IPSECVPNKEY

IPSec 公共 VPN 密钥。如果使用此记录集类型,但这个地区尚未启用 DNSSEC,则建议您启用 DNSSEC。

MX

邮件交换服务器的编号和 DNS 名称,该编号用于指示服务器的优先级。系统会优先尝试编号较小的服务器。确保编号与 DNS 名称之间有一个空格。

NAPTR

用于映射统一资源名称的命名权威指针规则。

NS

权威域名服务器的 DNS 名称。您的 NS 记录必须与地区的域名服务器匹配。

PTR

资源的规范名称,通常用于反向查找。

SPF

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

SRV

用于指定特定服务的服务器位置,即主机名和端口号的数据。如需了解详情,请参阅RFC 2782

SSHFP

SSH 服务器算法编号、指纹类型编号以及密钥指纹。如果您已为该地区启用 DNSSEC,请使用此记录类型。

TLSA

基于 DNS 的命名实体认证 (DANE) TLSA 证书关联信息。

TXT

文本数据,可包含任意文本,也可用于定义机器能识别的数据,例如安全信息或滥用行为防范信息。TXT 记录可以包含一个或多个文本字符串;每个字符串的最大长度为 255 个字符。邮件代理和其他软件代理会将多个字符串连接在一起。请用引号括起每个字符串。例如:


"Hello world" "Bye world"

导入和导出记录集

您可以使用 importexport 将记录集复制到托管地区以及从托管地区中复制记录集。您可以导入和导出的格式包括 BIND 地区文件格式或者 YAML 记录格式。

如需导入记录集,请使用 dns record-sets import 命令。--zone-file-format 标志通知 import 进程准备接收 BIND 格式的地区文件。如果省略此标志,则 import 会准备接收 YAML 格式的记录文件:

gcloud dns record-sets import -z=examplezonename \
   --zone-file-format path-to-example-zone-file

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

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

如果省略此标志,export 会将记录集导出为 YAML 格式的记录文件:

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

例如:

---
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

显示当前记录集

如需显示您的地区的当前 DNS 记录,请使用以下命令:

gcloud

gcloud dns record-sets list --zone="myzonename"
该命令将输出前 100 条记录所对应资源记录集的 JSON 响应。您可以指定以下附加参数:
  • limit:需要列出的最大记录集数。
  • name:仅列出具有此确切域名的记录集。
  • type:仅列出此类型的记录。如果存在,则还必须使用 --name 参数。

Python

def list_resource_records(project_id, zone_name):
    client = dns.Client(project=project_id)
    zone = client.zone(zone_name)

    records = zone.list_resource_record_sets()

    return [(record.name, record.record_type, record.ttl, record.rrdatas)
            for record in records]

后续步骤