本文档介绍如何在火山引擎私网解析(PrivateZone)中实现递归解析。
如果您的主域名的不同子域名需要分别被映射到 VPC 内的资源和互联网上的资源,您就需要开启递归解析功能。开启递归解析后,对于不在解析记录中的子域名,私网解析 PrivateZone 会向互联网上的 Local DNS 服务器发送 DNS 查询请求。
为了避免 Local DNS 出口 IP 造成的解析结果跨网问题,您还可以创建 自定义线路 转发规则,使用火山引擎公共解析(PublicDNS)的递归 DNS 服务器的解析结果作为响应,同时选择递归 DNS 服务器的出口 IP 的运营商。参见 自定义递归 DNS 服务器的出口运营商。
注意
如果 DNS 查询请求被发送到互联网,DNS 解析的延时会增加。因此,我们建议您尽可能将记录值设置为 火山引擎私有网络(VPC) 内的 IP 地址。
假设您为指定 VPC 关联了域名 example.com
。VPC 内的资源需要访问指定子域名 api.example.com
。该子域名指向 API 服务器的互联网 IP 地址。此时,您可以为域名 example.com
开启递归解析功能。
递归解析功能开启之后,VPC 内的资源访问 api.example.com
时,私网解析 PrivateZone 会通过互联网上的 Local DNS 服务器进行查询并返回解析结果。解析结果为 Local DNS 服务器返回的解析记录。
子域名 ecs.example.com
在域名的解析记录中。VPC 内的资源发送对 ecs.example.com
子域名的解析请求时,私网解析 PrivateZone 会返回记录值 10.0.1.128
。
添加域名 example.com
。您需要在添加域名时开启递归解析。参见 添加域名 了解如何添加一个域名。
为域名 example.com
添加一条解析记录:
ecs
。这样,域名就是 ecs.example.com
。10.0.1.128
。参见 添加解析记录 了解如何添加一条解析记录。
远程连接到域名所关联的 VPC 中的 ECS 实例。使用 nslookup 命令验证递归解析是否对 api.example.com
生效。如果 DNS 响应是一个互联网 IP 地址,则说明递归解析生效。
$ nslookup api.example.com Server: 100.96.0.2 Address: 100.96.0.2#53 Non-authoritative answer: Name: api.example.com Address: xx.xxx.xxx.xx
参见 更新域名配置 将 example.com
的 递归解析 设置为 关闭。
在 ECS 实例中,使用 nslookup 命令验证 api.example.com
是否还能被成功解析。如果 DNS 响应是 NXDOMAIN,则说明递归解析已经被关闭。
$ nslookup api.example.com Server: 100.96.0.2 Address: 100.96.0.2#53 ** server can't find api.example.com: NXDOMAIN