Oracle私有DNS为VCN内的实例提供DNS服务,它可以解析公有域名 (如www.google.com),可以解析VCN本地域名 (如 *.oraclevcn.com),也允许用户使用自定义的私有 DNS 域名,并支持在跨VCN及混合云环境中提供域名解析服务,本文将深入探讨部署私有 DNS 的一些常见场景。
在研究场景之前,让我们快速回顾一下私有DNS服务的基本组件:
区域 (Zone):私有 DNS 区域包含只能从 VCN 内访问的 DNS 数据。私有 DNS 区域具有与 Internet DNS 区域类似的功能,但只为可以通过 VCN 访问它的客户端提供响应。
视图 (View):视图是私有区域的集合。您可以从解析器引私有视图来管理如何回答 DNS 查询。一个区域只能属于一个视图。任意数量的解析器都可以使用任何给定的视图,从而允许您跨 VCN 共享私有 DNS 数据。
解析器 (Resolver):私有 DNS 解析器提供对 DNS 查询的响应,默认侦听 169.254.169.254。它通过优先级依次检查引用视图、默认视图、每个规则以及最后使用 Internet DNS 来提供响应。

解析器端点 (End Point):解析器端点有两种形式:侦听端点 (Listener) 允许 DNS 解析器回答来自 VCN 外部的 DNS 查询。转发端点 (Forwarder) 允许 DNS 解析器将DNS查询转发到规则中定义的远程DNS 。
转发端点提供了一个灵活的转发策略引擎,支持域和 CIDR 作为 DNS 转发端点的可选过滤器:
域名:有条件地将基于域名的DNS请求转发到特定的DNS服务器IP地址。
CIDR:将来自特定 IP 地址的请求转发到特定的 DNS 服务器 IP 地址。
无:将所有 DNS 请求转发到特定的 DNS 服务器 IP 地址。

所有以上组件链接在一起,且可以通过各种方式进行配置,以支持更复杂的场景,我们将在后面研究这些场景。
接下来,让我们了解一下 OCI 默认行为是什么。当您部署 VCN、子网或计算实例时,DNS 系统在后台工作以提供完整功能。一个简单的例子可以在下面看到:

部署 VCN 后,您将获得一个专用的 VCN 解析器,您可以在其中添加额外的私有视图和私有区域。请注意,Oracle 不会在您的自定义专用区域中创建任何 DNS 条目,您需要完全管理这些条目。
如需更全面地了解私有 DNS 组件,请查参阅官方文档:
https
://docs.oracle.com/en-us/iaas/Content/DNS/Tasks/privatedns.htm
场景 1 – 同一区域中的多个 VCN 和同一 OCI 租户
让我们看一个场景,用户在同一区域部署了 3 个 VCN,所有 VCN 通过动态路由网关 (DRG) 对等互连以实现网络连接。让 DNS 解析器了解其他 VCN 域的最简单方法是将每个解析器的私有视图附加 (Attach) 到其他解析器,如下所示:

附加私有视图方案的优点是:
设置简单快速
VCN之间不存在 DNS 流量
可以轻松扩展到更多 VCN 或更多自定义私有视图 (最多 10 个)
不需要配置解析器端点
缺点是:
所有VCN 必须位于同一区域
所有VCN 必须在同一个租户中 (支持不同的Compartments)
要实现此场景,您必须使用每个 VCN 解析器并附加其他私有视图:网络 > 虚拟云网络 > 单击 VCN 以查看详细信息,然后点击 DNS 解析器名称 > 管理私人视图并附加其他VCN的私有视图。

场景 2 – 不同区域/租户中的 VCN
在前面的场景中,我们介绍了同一区域和同一 OCI 租户中的多个 VCN 的用例,但是如果您在不同的区域中有多个租户或者多个VCN,我们就需要利用 DNS 解析器端点和转发规则的功能。让我们看一个简单的场景,有 2 个 VCN 在不同的 OCI 区域且属于的租户:

这种情况下,将两个VCN通过远程对等连接Peer起来,每个 VCN 将仅附加有自己的私有视图。vcn-1的DNS 解析器转发端点将针对vcn-2.oraclevcn.com的 DNS 请求转发到vcn-2的侦听端点,同时vcn-2的DNS 解析器转发端点将针对vcn-1.oraclevcn.com的 DNS 请求转发到vcn-1的侦听端点.
解析器端点转发的优点是:
VCN可以在不同的租户中
VCN可以位于不同的区域
转发规则可以比整个 VCN 域更具体(例如:仅某些子网)
缺点是:
无法扩展,每个额外的 VCN 都会引入更多的配置和 DNS 流量
如果使用许多自定义私有视图,将变得难以管理
要部署解析器端点,请转到 VCN 详细信息并单击DNS 解析器名称,单击左侧的端点,然后单击“创建端点”。将两种类型的端点部署在选定的 VCN 子网中。每个端点将从子网中获取 1 个 IP。请注意,端点在可用性域中是高度可用的。

接下来,我们需要在转发端点创建转发规则,因此单击管理规则。输入目标 VCN 的所有域,选择您的转发端点并输入另一个 VCN 中的侦听端点的 IP。

最后要注意的一件事是,需要调整两个 VCN 上的路由和安全规则,以允许协议 UDP 端口 53 在端点之间通过。
场景 3 – 混合云
一种有趣的场景是将所有 DNS 流量转发到远程位置以提高安全性,远程位置可以有一个用于 DNS 清理”坏”域的第 3 方工具 (如Cisco Umbrella)。在此场景中,用户在同一个租户的同一个区域和中有 3 个 VCN,同时用户自己的本地数据中心通过VPN或者FastConnect连接到改OCI区域的DRG上并与上述3个VCN打通路由,在这种情况下,我们将执行以下操作:
将其中一个 VCN 指定为 DNS Hub,以便我们将所有转发配置保存在一个地方
DNS HUB 解析器将附加该区域中的所有VCN的私有视图
DNS Hub 将所有非 OCI DNS 流量转发到您的本地清理器
其他 VCN指定为 Spoke,将所有请求转发到 HUB 侦听器
本地 DNS 还应具有将所有 *.oraclevcn.com 流量转发到 DNS HUB VCN 的规则

上图包含实现此设置所需的所有配置项,唯一的注释是转发规则将以NONE作为转发条件(“none”表示没有特定规则,转发所有内容)。
重要提示:DNS 解析器中的转发规则根据优先级工作。如果一条规则与请求匹配,那么即使查询因超时而失败,解析器也永远不会尝试另一条规则,因此为 HA 而创建两个针对两个本地 DNS 服务器的规则将不起作用。最佳实践是实现以针对重定向的 VIP 为基础的高可用性。
现在您可以尝试利用OCI私有DNS服务轻松实现跨租户、跨区域以及混合云部署的DNS方案了。

作者简介
霍琳,甲骨文售前部门资深咨询顾问,专注 Infrastructure & Platform as a Service ,同时关注容器生态及云原生产品方向。14年IT行业从业经验,擅长网络,虚拟化及存储解决方案。您可以通过lam.huo@oracle.com与他联系。




