如需管理 Cloud DNS API 的 DNS 记录,您需要向 API 发送更改请求。本页面介绍如何进行更改,包括对资源记录集集合执行的添加和删除操作。本页面还介绍如何使用 import
、export
和 transaction
命令向 API 发送所需的更改。
准备工作
您必须已创建托管地区并已满足该任务的前提条件。
请注意,您可以通过创建和执行事务来指定要执行的操作,从而在记录集中添加或移除 DNS 记录。事务是一组必须一起传播的一项或多项记录更改。事务要么整体成功要么整体失败,因此您的数据绝不会出现中间状态。
添加记录
添加记录时,您可以向同一 DNS 域名的记录集中添加两个值或字符串。添加记录集时,必须在第一个值和第二个值之间添加空格。
控制台
如需在 Cloud Console 中创建记录集,请执行以下操作:
- 转到 Cloud DNS 页面
- 点击要添加记录的托管地区的名称。
- 在“地区详细信息”屏幕上,点击添加记录集。
在“创建记录集”屏幕上的 DNS 名称字段中,输入 DNS 地区的子网域。例如
mail
。结尾处会自动添加结尾句点。如需创建通配符 DNS 记录,请输入星号。例如
*.example.com
。选择资源记录类型。例如
MX
。在 TTL 字段中,输入一个数值表示资源记录的生存时间,即可缓存的时间期限。此值必须是正整数。从“TTL 单位”下拉菜单中选择时间单位。例如
30 minutes
。根据您已选择的资源记录类型,按表中所述填充剩余字段。
您可以通过点击添加一项来输入其他信息。
点击创建。
gcloud
- 如需启动事务,请使用 gcloud dns record-sets transaction start 命令:
gcloud dns record-sets transaction start --zone="my-zone-name"
其中
--zone
是您要管理其记录集的托管地区的名称。
- 如需在事务中添加记录集,请使用 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
是您要管理其记录集的托管地区的名称。
- 如需执行事务,请使用 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://dns.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。
移除记录
控制台
要从 Cloud Console 中移除记录或记录集,请执行以下操作:
- 转到 Cloud DNS 页面
- 点击您要删除其记录集的地区名称。“地区详细信息”页面上会列出该地区的记录。
- 点击要删除的记录旁边的复选框。
- 点击删除记录集。
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://dns.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。
有关选择资源记录类型的详细信息
适用的记录类型 | 输入 |
---|---|
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" |
导入和导出记录集
您可以使用 import
和 export
将记录集复制到托管地区以及从托管地区中复制记录集。您可以导入和导出的格式包括 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
参数。