按照本指南开始使用 Internal DNS。
-
确保你拥有可访问 Gateway resolver 策略 与 Internal DNS 的 Enterprise 账户。
-
考虑连接到 Gateway resolver 的不同方式。
-
若将使用 API token 进行身份验证,请确保你拥有以下权限:
API token 配置
权限
- Account - DNS Views - Edit
- Zone - DNS - Edit
- Account - Account Settings - Edit
- Zone - DNS Settings - Edit
- Zone - Zone - Edit
账户资源
- Include - (你的账户)
Zone 资源
-
Include - Specific zones
为 Internal DNS 创建 token 时,我们建议将其范围限定到特定内部 zone,而不是使用“All zones”。这遵循最小权限原则。若你之后创建新的内部 zone,需要更新 token 范围以包含它们。对自动 zone 类型范围(例如“所有内部 zone”)的支持计划在未来版本中提供。
-
在 Cloudflare 仪表板中,前往 Internal DNS(内部 DNS) 页面。
Go to Internal DNS ↗ -
选择 Create an internal zone(创建内部区域)。
-
为内部 zone 指定名称。
内部 zone 配置条件
- 内部 zone 可包含 Cloudflare 为公共 zone 支持的相同 DNS 记录类型。
- 内部 zone 可与同一账户中的公共 zone 同名。
- 每个内部 zone 可关联多个 view。1
- 一个账户中可以有多个同名的内部 zone。但是,两个同名的内部 zone 不能关联到同一个 view。
- 内部 zone 不受任何顶级域 (TLD) 限制。这意味着,若内部 zone 的 TLD 未公开注册(例如
xyz.local)、创建在 TLD 本身(local)上,甚至创建在根(.)上,都可以创建。
1 内部 DNS zone 的逻辑分组,由 Gateway resolver 策略引用,以定义特定查询应如何解析。
- 使用你偏好的方式为内部 zone 添加 DNS 记录:
- 对每个要添加的内部 zone 重复此过程。
- 使用 Create Zone 端点创建内部 zone。指定账户 ID 并将
type设为internal。
内部 zone 配置条件
- 内部 zone 可包含 Cloudflare 为公共 zone 支持的相同 DNS 记录类型。
- 内部 zone 可与同一账户中的公共 zone 同名。
- 每个内部 zone 可关联多个 view。1
- 一个账户中可以有多个同名的内部 zone。但是,两个同名的内部 zone 不能关联到同一个 view。
- 内部 zone 不受任何顶级域 (TLD) 限制。这意味着,若内部 zone 的 TLD 未公开注册(例如
xyz.local)、创建在 TLD 本身(local)上,甚至创建在根(.)上,都可以创建。
1 内部 DNS zone 的逻辑分组,由 Gateway resolver 策略引用,以定义特定查询应如何解析。
示例
Required API token permissions
At least one of the following token permissions is required:Zone Zone EditZone DNS Edit
curl "https://api.cloudflare.com/client/v4/zones" \
--request POST \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"account": {
"id": "<ACCOUNT_ID>"
},
"name": "<ZONE_NAME>",
"type": "internal"
}'- 使用你偏好的方式为内部 zone 添加 DNS 记录:
- 导入 格式化的 BIND 文件。请参阅 DNS 记录操作指南。
- 使用其他 API 端点(如
/batch)管理 DNS 记录。详情请参阅批量记录更改。
- 对每个要添加的内部 zone 重复此过程。
在内部 DNS 查询解析过程中,若在匹配的内部 zone 中未找到内部记录,Cloudflare 将检查匹配的内部 zone 是否引用了另一个内部 zone。可连续跟随引用,链中最多五个引用。
详情请参阅reference zone。
-
在 Cloudflare 仪表板中,转到 Internal DNS(内部 DNS) 页面。
Go to Internal DNS ↗ -
选择一个 zone。
-
在所选 zone 内,转到 Reference zone(引用区域)。
-
选择 Add reference zone(添加引用区域)。
-
找到要用作引用的 zone,并在对应行中选择 Select(选择)。
- 使用 Update DNS settings 端点,从一个内部 zone 添加对另一个内部 zone 的引用。在
--json中,指定带有参数reference_zone_id的internal_dns对象。
在以下示例中,内部 zone A(ID 8a904aeb565c42cfa207d98f6edea2f3)引用内部 zone B(ID 8e64c6fb4b514f3faf64de81efc11e51)。
Required API token permissions
At least one of the following token permissions is required:Zone DNS Settings WriteDNS Write
curl "https://api.cloudflare.com/client/v4/zones/8a904aeb565c42cfa207d98f6edea2f3/dns_settings" \
--request PATCH \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"internal_dns": {
"reference_zone_id": "8e64c6fb4b514f3faf64de81efc11e51"
}
}'由于 resolver 策略需要 DNS view,你必须至少有一个 view,才能将请求路由到内部 zone。
-
在 Cloudflare 仪表板中,前往 Internal DNS(内部 DNS) 页面。
Go to Internal DNS ↗ -
前往 Internal DNS Views(内部 DNS 视图)。
-
选择 Create a view(创建视图)。
-
为 view 指定描述性名称。
DNS view 配置条件
- DNS view 可以为空,不关联任何内部 zone。
- DNS view 不能包含公共 DNS zone。1
- 给定 DNS view 内,每个内部 DNS zone 名称必须唯一。
- 给定 Cloudflare 账户内,每个 DNS view 名称必须唯一。
1 包含公共 DNS 记录且可被公共解析器访问的 DNS zone。
- 选择 Manage zones(管理区域) 将 zone 添加到 view。选择应通过 Gateway resolver 发送到该 view 的查询进行解析的内部 zone。
- 选择 Save(保存) 确认。
- 使用 Create Internal DNS View 端点。对于你创建的每个 view,列出应归入该 view 的所有内部 zone。
DNS view 配置条件
- DNS view 可以为空,不关联任何内部 zone。
- DNS view 不能包含公共 DNS zone。1
- 给定 DNS view 内,每个内部 DNS zone 名称必须唯一。
- 给定 Cloudflare 账户内,每个 DNS view 名称必须唯一。
1 包含公共 DNS 记录且可被公共解析器访问的 DNS zone。
除了在设置 resolver 策略时选择内部 DNS view 外,你还可以启用 fallback through public DNS(通过公共 DNS 回退) 选项。
- 在 Cloudflare One ↗ 中,转到 Traffic policies(流量策略) > Firewall policies(防火墙策略) > Resolver policies(解析器策略)。
- 选择 Add a policy(添加策略),并输入名称与描述。
- 为你希望路由的流量创建表达式。有关选择器、运算符与值的指导,请参阅 Gateway resolver 策略。
- 选择 Use Internal DNS(使用内部 DNS)。选择匹配该表达式的查询应发送到的 view。
- (可选)根据你的用例调整 Fallback through public DNS(通过公共 DNS 回退) 选项。
- Off:Gateway DNS resolver 将响应原样返回给客户端。
- On:若来自内部 zone 的响应为 REFUSED、NXDOMAIN,或类型为 CNAME 的响应,Gateway DNS resolver 会将该查询发送到 Cloudflare 1.1.1.1 公共解析器,并尝试通过公共 DNS 解析该查询。
- 选择 Create policy(创建策略) 以确认。
使用 Zero Trust > Gateway > Rules 下的 API 端点设置 resolver 策略。有关选择器、运算符与值的指导,请参阅 Gateway。
使用规则设置对象定义 resolve_dns_internally,指定 view_id 与 fallback 选项。回退选项的行为如下:
none:Gateway DNS resolver 将响应原样返回给客户端。public_dns:若来自内部 zone 的响应为 REFUSED、NXDOMAIN,或类型为 CNAME 的响应,Gateway DNS resolver 会将该查询发送到 Cloudflare 1.1.1.1 公共解析器,并尝试通过公共 DNS 解析该查询。
添加 Gateway resolver 策略后,它将列在相应内部 view 的 Resolver policies referencing this view 下。
你也可以使用 Cloudflare Terraform provider ↗ 管理 Internal DNS 资源。模式与公共 DNS zone 相同——唯一区别是在 cloudflare_zone 资源上将 type = "internal"。
日常管理使用 zone 范围的 API token,创建新 zone 时使用账户级别 token。若你的 token 限定到特定 zone,请在添加新内部 zone 时记得更新它。完整工作示例请参阅 Terraform provider 文档 ↗。