本文档介绍火山引擎私网解析(PrivateZone)的工作原理。
私网解析 PrivateZone 的解析器可以通过权威、转发或递归的方式响应来自 VPC 或入站终端节点的 DNS 查询请求。接收到 DNS 查询请求时,解析器会先后判断是否可以使用权威、转发或递归的方式响应 DNS 查询请求。
- 如果解析器判断可以使用其中一种方式响应 DNS 查询请求,就会使用该方式。此时,DNS 解析完成。
- 如果解析器判断不能使用当前方式响应 DNS 查询请求,就会判断是否可以使用下一种方式响应 DNS 查询请求。如果解析器判断所有方式都不能用来响应 DNS 查询请求,则 DNS 解析失败。

私网解析 PrivateZone 如何处理 DNS 查询请求
解析器接收到 DNS 查询请求后,按以下次序先后判断是否可以使用权威、转发或递归的方式响应 DNS 查询请求。下图展示了私网解析 PrivateZone 的判断过程和对 DNS 查询请求的处理流程。

步骤一:解析器判断是否可以使用权威的方式响应 DNS 查询请求
解析器判断 DNS 查询请求是否匹配私网解析 PrivateZone 中的域名(包括云产品权威域名)。参见 解析器如何判断 DNS 查询请求与私网解析 PrivateZone 中的域名(包括云产品权威域名)匹配 。
- 如果找到了与 DNS 查询请求匹配私网解析 PrivateZone 中的域名(包括云产品权威域名),解析器首先在缓存中查询匹配成功的域名(包括云产品权威域名)的解析记录。
- 如果在缓存中找到了解析记录,解析器就会返回找到的解析记录。此时,DNS 解析完成。
说明
如果域名开启了智能解析或负载均衡,则该域名的解析记录不会被缓存。
- 如果没有在缓存中找到解析记录,解析器会向私网解析 PrivateZone 的权威 DNS 服务器发送 DNS 查询请求。
- 如果权威 DNS 服务器找到了解析记录,就会向解析器返回找到的解析记录。解析器把解析记录返回给客户端并在缓存中保存该记录。此时,DNS 解析完成。
- 如果权威 DNS 服务器没有找到解析记录,解析器会判断域名是否开启了递归解析:
- 如果没有找到与 DNS 查询请求匹配的域名(包括云产品权威域名),解析器会进行下一步。参见 步骤二:解析器尝试以转发的方式响应 DNS 查询请求。
解析器如何判断 DNS 查询请求与私网解析 PrivateZone 中的域名(包括云产品权威域名)匹配
对于来自私网解析 PrivateZone 中的域名(包括云产品权威域名)所关联的 VPC 的 DNS 查询请求,如果 DNS 查询请求的域名与私网解析 PrivateZone 中的域名(包括云产品权威域名)相同或者是私网解析 PrivateZone 中的域名(包括云产品权威域名)的子域名,则 DNS 查询请求与私网解析 PrivateZone 中的域名(包括云产品权威域名)匹配成功。
说明
DNS 查询请求与私网解析 PrivateZone 中的域名(包括云产品权威域名)的匹配过程遵循最长后缀匹配原则。例如,DNS 查询请求的域名是 123.abc.example.com
,如果私网解析 PrivateZone 中同时有 example.com
和 abc.example.com
两个域名,那么 DNS 查询请求与域名 abc.example.com
匹配成功。
步骤二:解析器判断是否可以使用转发的方式响应 DNS 查询请求
解析器判断 DNS 查询请求是否匹配类型为 转发到外部DNS系统 的转发规则。参见 解析器如何判断 DNS 查询请求与转发规则匹配。
- 如果找到了与 DNS 查询请求匹配的转发规则,解析器首先在缓存中查询是否有按转发规则获取的解析记录。
- 如果在缓存中找到了解析记录,那么解析器会返回找到的解析记录。此时,DNS 解析完成。
- 如果在缓存中没有找到解析记录,解析器就会按照匹配成功的转发规则把 DNS 查询请求转发到外部(例如自建 IDC 或第三方云服务)的 DNS 服务器,然后把外部 DNS 服务器的 DNS 响应返回给客户端。此时,DNS 解析完成。
- 如果没有找到与 DNS 查询请求匹配的转发规则,解析器会继续进行下一步。参见 步骤三:解析器尝试以递归的方式响应 DNS 查询请求。
解析器如何判断 DNS 查询请求与转发规则匹配
对于来自转发规则所关联的 VPC 的 DNS 查询请求,如果 DNS 查询请求的域名与转发规则所关联的转发域名相同或者是转发规则所关联的转发域名的子域名,则 DNS 查询请求与转发规则匹配成功。
例如,假设转发域名是 example.com
,那么 DNS 查询请求的域名是 example.com
,abc.example.com
或 1234.abc.example.com
时,转发规则都可以匹配成功。
步骤三:解析器判断是否可以使用递归的方式响应 DNS 查询请求
解析器判断 DNS 查询请求是否满足递归解析代理的生效条件。参见 解析器如何判断 DNS 查询请求满足递归解析代理的生效条件。
- 如果 DNS 查询请求满足递归解析代理的生效条件,解析器首先在缓存中查询是否有来自公网递归 DNS 服务器的解析记录。
- 如果在缓存中找到了解析记录,那么解析器会返回找到的解析记录。此时,DNS 解析完成。
- 如果在缓存中没有找到解析记录,解析器会向公网递归 DNS 服务器发送 DNS 查询请求:
- 如果 DNS 查询请求匹配到了类型为 自定义线路 的转发规则,解析器会返回从公网递归 DNS 服务器获取的查询结果。公网递归 DNS 服务器的出口 IP 地址的线路是您配置的自定义线路。解析器也会在缓存中保存该记录。此时,DNS 解析完成。
- 如果 DNS 查询请求没有匹配到类型为 自定义线路 的转发规则,解析器会返回从公网递归 DNS 服务器获取的查询结果。公网递归 DNS 服务器的出口 IP 地址的线路是火山引擎公网 IP 默认的 BGP 线路。解析器也会在缓存中保存该记录。此时,DNS 解析完成。
- 如果 DNS 查询请求不满足递归解析代理的生效条件,那么 DNS 解析失败。
解析器如何判断 DNS 查询请求满足递归解析代理的生效条件
如果一个 DNS 查询请求满足以下任意一个条件,则该 DNS 查询请求满足递归解析代理的生效条件:
- DNS 查询请求的域名不匹配私网解析 PrivateZone 中的任何域名(包括云产品权威域名),也不匹配任何类型为 转发到外部DNS系统 的转发规则。
- DNS 查询请求的域名匹配私网解析 PrivateZone 中的域名(包括云产品权威域名)。该域名(包括云产品权威域名)开启了递归解析,且 DNS 查询请求的域名不匹配域名(包括云产品权威域名)下的任何一条解析记录。例如,DNS 查询请求的域名是
www.example.com
,且私网解析 PrivateZone 中有一个域名 example.com
,但该域名下没有任何一条解析记录的域名匹配 www.example.com
。