您可以使用以下两个替代 API 端点之一来管理 Cloud DNS API 的 DNS 记录:Changes
和 ResourceRecordSets
。
虽然 Changes
API 要求您删除现有资源记录集以添加新的资源记录集,但您可以使用 ResourceRecordSets
API 替换资源记录集。
本页面介绍如何使用 Changes
和 ResourceRecordSets
API 添加、删除和更新资源记录集,以及如何使用 import
、export
、transaction
命令。
准备工作
您必须已创建代管区域并已满足创建区域的前提条件。
您可以在记录集中添加或移除 DNS 记录,方法是创建事务来指定要执行的操作并执行该事务。事务是一组必须一起传播的一项或多项记录更改。事务要么整体成功要么整体失败,因此您的数据绝不会出现中间状态。
如需详细了解 DNS 记录类型,请参阅支持的 DNS 记录类型列表。
添加记录
添加记录时,您可以向同一 DNS 域名的记录集中添加两个值或字符串。添加记录集时,必须在第一个值和第二个值之间添加空格。
控制台
要创建记录集,请按以下步骤操作:
在 Google Cloud 控制台中,进入 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=MANAGED_ZONE
将
MANAGED_ZONE
替换为您要管理其记录集的代管区域的名称,例如my-zone-name
。如需在事务中添加记录集,请使用
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
要执行事务,请使用
gcloud dns record-sets transaction execute
命令:gcloud dns record-sets transaction execute \ --zone=MANAGED_ZONE
如需添加通配符事务,请使用
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
)
Terraform
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
:您的项目 IDMANAGED_ZONE
:您的代管区域名称或 IDDNS_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
...
移除记录
控制台
要移除记录或记录集,请按照下列步骤操作:
在 Google Cloud 控制台中,转到 Cloud DNS 页面。
点击您要删除其记录集的区域名称。区域详细信息页面上会列出该区域的记录。
选中要删除的记录旁边的复选框。
点击删除记录集。
gcloud
如需移除一项事务,请使用 gcloud dns record-sets transaction remove
命令:
gcloud dns record-sets transaction remove 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,以秒为单位(例如30
)RECORD_TYPE
:记录类型,例如A
。MANAGED_ZONE
:代管区域的名称
如需替换现有记录,请发出 remove
命令,后跟 add
命令。
API
要使用已删除的资源记录集更新事务,请使用 changes.create
方法:
POST https://dns.googleapis.com/dns/v1/projects/PROJECT_ID/managedZones/MANAGED_ZONE/changes
{ "deletions": [ { "name": DNS_NAME, "type": RECORD_TYPE, "ttl": TTL, "rrdatas": [ RR_DATA ] } ] "additions": [] }
请替换以下内容:
PROJECT_ID
:您的项目 IDMANAGED_ZONE
:您的代管区域名称或 IDDNS_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
...
导入和导出记录集
如需将记录集复制到代管区域中以及从代管区域中复制记录集,您可以使用 import
和 export
。您可以导入和导出 BIND 格式的区域文件或 YAML 格式的记录。
gcloud
如需导入记录集,请使用
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
使用
gcloud dns record-sets import
命令时,指定--replace-origin-ns
会将区域的 NS 记录替换为区域文件中指定的 NS 记录。这些记录必须与由 Cloud DNS 分配用以托管区域的域名服务器相匹配。此外还必须与父级(委派)区域中指定的 NS 记录一致。默认情况下,Cloud DNS 不会覆盖 NS 记录。如果您使用此标志,则必须验证 NS 记录是否正确。它们必须来自 Cloud DNS 分配给同一域名服务器的相同区域的先前导出内容。如需导出记录集,请使用
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
显示当前记录集
如需显示您的区域的当前 DNS 记录,请使用 gcloud dns record-sets list
命令:
gcloud
如需显示您的区域的当前 DNS 记录,请使用 gcloud dns record-sets list
命令:
gcloud dns record-sets list \ --zone="myzonename"
该命令将输出前 100 条记录所对应资源记录集的 JSON 响应。您可以指定以下附加参数:
--limit
:需要列出的最大记录集数--name
:仅列出具有此确切域名的记录集--type
:仅列出此类型的记录;如果存在,则还必须使用--name
参数
创建资源记录集
控制台
要创建资源记录集,请按以下步骤操作:
在 Google Cloud 控制台中,转到 Cloud DNS 页面。
点击要为其创建资源记录集的区域。
在区域详情页面上,点击添加标准。
为记录集输入 DNS 名称,例如
test.example.com
。选择资源记录类型。
输入资源记录集的存留时间 (TTL),例如
30
。选择 TTL 单位,例如
minutes
。根据您选择的记录类型输入详细信息。
点击创建。
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
:项目的 IDMANAGED_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
...
Terraform
查看一个资源记录集的详细信息
此过程假设您在代管区域内创建了一个名称和类型相同的资源记录集。
控制台
要查看现有资源记录集的详细信息,请按以下步骤操作:
在 Google Cloud 控制台中,转到 Cloud DNS 可用区页面。
点击要查看资源记录集的区域。
区域详情页面将列出了该区域中所有资源记录集的详细信息。
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
:项目的 IDMANAGED_ZONE
:此资源记录集关联的代管区域(例如my-zone-name
);此资源记录集的名称必须以代管区域的 DNS 名称作为其后缀RRSET_NAME
:匹配传入查询的 DNS 名称,并使用此区域的 DNS 名称作为其后缀,例如test.example.com
RRSET_TYPE
:此资源记录集的资源记录类型,例如A
。
修补资源记录集
控制台
要将部分更新应用于现有资源记录集,请按以下步骤操作:
在 Google Cloud 控制台中,转到 Cloud DNS 可用区页面。
点击要为其更新资源记录集的区域。
在区域详情页面上,点击您要更新的资源记录集旁边的edit修改。
完成必要的更新后,点击保存。
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
:项目的 IDMANAGED_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
...
删除资源记录集
控制台
要删除现有的资源记录集,请按以下步骤操作:
在 Google Cloud 控制台中,转到 Cloud DNS 可用区页面。
点击要为其删除资源记录集的区域。
在区域详情页面上,选中要删除的资源记录集的 DNS 名称旁边的复选框。
点击删除记录集。
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
:项目的 IDMANAGED_ZONE
:此资源记录集关联的代管区域(例如my-zone-name
);此资源记录集的名称必须以代管区域的 DNS 名称作为其后缀RRSET_NAME
:匹配传入查询的 DNS 名称,并使用此区域的 DNS 名称作为其后缀,例如test.example.com
RRSET_TYPE
:此资源记录集的资源记录类型,例如A
。
选择资源记录类型
适用的记录类型 | 进入 |
---|---|
A |
主机的数字地址,采用 IPv4 点分十进制格式。 |
AAAA |
主机的数字 IP 地址,采用 IPv6 十六进制数字格式。 |
ALIAS (预览版) |
要为传入地址查询解析的规范名称,例如 |
CAA |
有权为此网域颁发证书的证书授权机构,例如
创建 |
CNAME |
您还可以使用
有时,域名服务器会返回 |
DNSKEY |
解析器用于通过 ZSK 和 KSK 密钥来验证记录真实性的 DNSSEC 公钥 - 例如
您只能在处于 |
DS |
安全委派区域的 DNSSEC 密钥指纹,例如 您只能在公开区域中添加此记录类型。除非您为委派区域启用(和激活)DNSSEC,否则此记录集类型不会为该区域激活 DNSSEC。默认情况下,区域不会启用 DNSSEC。 |
SVCB HTTPS |
服务优先级 ( |
IPSECVPNKEY |
IPSec 公共 VPN 密钥。 您只能在公开区域中添加此记录类型。 |
MX |
代表您的网域接收电子邮件的邮件交换服务器的偏好设置编号和 DNS 名称。SMTP 服务器首选具有较低偏好设置编号的服务器。 例如: 确保偏好设置编号和 DNS 名称之间有一个空格。您输入的 MX 记录必须以英文句点 ( 您可以创建多个具有不同优先级的记录来配置备份邮件服务器,或者使用相同的优先级将负载分配到多个邮件服务器上。 例如,如要将电子邮件定向到您的 Google Workspace 账号,请输入以下内容:
|
NAPTR |
用于映射动态委派发现系统 (DDDS) 应用所使用的统一资源名称 (URN) 的名称权威指针规则 - 例如
DDDS 应用使用 |
NS |
为您的网域或子网域提供 DNS 服务的权威域名服务器的 DNS 名称。您的 |
PTR |
完全限定域名 (FQDN) 或映射到 IP 地址的网域规范名称,例如
|
SPF |
|
SRV |
用于指定特定服务的服务器位置,即主机名和端口号的数据 - 例如 如需了解详情,请参阅 RFC 2782。 |
SSHFP |
SSH 服务器算法编号、指纹类型编号以及密钥指纹 - 例如 如果您已为该区域启用 DNSSEC,请使用此记录类型。 |
TLSA |
基于 DNS 的命名实体认证 (DANE) TLSA 证书关联信息。
TLSA 记录包含用于验证 X.509 证书的信息(例如 HTTPS 使用的证书),而无需依赖于一组预配置的证书授权机构 (CA) 对其进行签名 - 例如 如果您已为该区域启用 DNSSEC,请使用此记录类型。 |
TXT |
文本数据,可包含任意文本,也可用于定义机器能识别的数据,例如安全信息或滥用行为防范信息。 TXT 记录可以包含一个或多个文本字符串;每个字符串的最大长度为 255 个字符。如果记录数据超过 255 字节,请将记录划分为 255 字节的字符串,并将每个字符串用引号引起来 - 例如 邮件代理和其他软件代理会将多个字符串连接在一起。 请用引号括起每个字符串,例如 每条 TXT 记录的长度上限为 1,000 个字符。如果您需要提高此限额,请与 Google Cloud 支持团队联系。 |
后续步骤
- 如需了解用于记录集的
gcloud
命令,请参阅gcloud dns record-sets
。 - 如需查看
gcloud
或 API 操作的状态,请参阅监控 DNS 传播。 - 如需访问 API 信息,请参阅
Changes
API 方法。 - 如需了解您在使用 Cloud DNS 时可能会遇到的常见问题的解决方案,请参阅问题排查。
- 如需大致了解 Cloud DNS,请参阅 Cloud DNS 概览。