Tenant 自定义 nameserver(TCNS)允许你定义 tenant 级别的自定义 nameserver,并在 Cloudflare tenant 内的不同 accounts 中使用它们。
TCNS 按不同集合(ns_set)组织,TCNS 名称可由任意域名提供,即使该域名在 Cloudflare 中不存在对应 zone。
例如,若 TCNS 为 ns1.example.com 和 ns2.vanity.test,则 example.com 和 vanity.test 这两个域名无需在 Cloudflare 中作为 zone 存在。
租户自定义 nameserver(如果由租户所有者创建)将可供属于该租户任何账户的所有 zone 使用。仅可通过 API 使用。
要进行此配置,需满足以下条件:
- Tenant owners 最多可创建五组不同的 tenant 自定义 nameserver 集合。每组 nameserver 集合必须包含 2 到 5 个不同的 nameserver 名称(
ns_name),且每个名称不能属于多个集合。例如,若ns1.example.com属于ns_set 1,则不能同时属于ns_set 2,反之亦然。 - 子域设置或反向 zone 可以使用 tenant 自定义 nameserver,前提是它们使用的 nameserver 集合(
ns_set)与其父 zone、子 zone 或同一层级树中的任何其他 zone 不同。
如果您是账户所有者,且您的账户属于具有自定义 nameserver 的租户,请执行以下操作:
-
使用端点 Update DNS Settings for a Zone,并相应配置
nameservers对象。"nameservers": { "type": "custom.tenant" } -
如果您未使用 Cloudflare Registrar,请在 registrar 处更新 nameserver 以使用 TCNS 名称。如果您使用 Cloudflare Registrar,则无需进一步操作。
要使这些 TCNS 成为今后添加到账户的所有新 zone 的默认 nameserver,请使用端点 Update DNS Settings for an Account。在 zone_defaults 对象中设置以下内容:
"zone_defaults": {
"nameservers": {
"type": "custom.tenant"
}
}-
如果您使用 Cloudflare Registrar,请使用 Update DNS settings 端点,将
nameservers对象中的type参数设为不同值。然后,联系 Cloudflare Support,将 nameserver 设回您选择使用的 nameserver。 -
如果您未使用 Cloudflare Registrar,请使用 Update DNS settings 端点 选择不同的 nameserver 类型,并在域名 registrar 处移除 TCNS。
如果您是租户所有者,并希望为租户内的账户提供 TCNS,请执行以下操作:
- 遵守
ns_name和ns_set的条件,并使用以下 POST 命令在租户中创建 TCNS:
curl https://api.cloudflare.com/client/v4/tenants/{tenant_id}/custom_ns \
--header "X-Auth-Email: <EMAIL>" \
--header "X-Auth-Key: <API_KEY>" \
--header "Content-Type: application/json" \
--data '{
"ns_name": "<NS_NAME>",
"ns_set": <SET>
}'-
将账户自定义 nameserver 和 IP 地址作为 glue(A 和 AAAA)记录添加到域名的 registrar(RFC 1912 ↗)。
-
如果用于租户自定义 nameserver 的域名不在同一账户中,您必须在权威 DNS 提供商处,为已配置的 nameserver 名称(例如
ns1.example.com)创建A/AAAA记录。
| Type | Name | Content |
|---|---|---|
A |
ns1.example.com |
<IPv4> |
要获取租户账户中所有 TCNS 名称的列表,请使用以下 API 请求:
curl https://api.cloudflare.com/client/v4/tenants/{tenant_id}/custom_ns \
--header "X-Auth-Email: <EMAIL>" \
--header "X-Auth-Key: <API_KEY>"