注意:
- 本教程需要访问 Oracle Cloud。要注册免费账户,请参阅开始使用 Oracle Cloud Infrastructure 免费套餐。
- 它对 Oracle Cloud Infrastructure 身份证明、租户和区间使用示例值。完成实验室后,请使用特定于云环境的那些值替换这些值。
在 Oracle Cloud Infrastructure 中配置 BIND9 域名系统
简介
OraStage 是一家能源领域的领先公司,专注于可再生能源解决方案和创新电力技术,该公司宣布了一项战略性决定,将工作负载迁移到 Oracle Cloud Infrastructure (OCI),以提高性能、可扩展性和安全性。
考虑到 OraStage 概述的具体需求和条件,该公司需要云端的混合域名系统 (DNS) 解决方案,此处的混合意味着除了 OCI DNS 服务之外,还使用自己的 Berkeley Internet Name Domain version 9 (BIND9) DNS 系统,他们希望构建的最终体系结构显示在以下映像中。
OraStage DNS 要求:
-
该公司拥有多个内部域和子域,所有这些域都应通过其在 OCI 中的 BIND9 DNS 进行解析,其中 OraStage 将管理所有相关区域和记录。其中一个域是
orastage.com
,我们将在本教程中使用它。因此,对orastage.com
的任何查询都必须转发到其 BIND9。 -
在某些情况下,他们仍然需要解析 OCI 本机域(
oraclevcn.com
、oraclecloud.com
等),而这可以通过使用 OCI 专用 DNS 组件来实现:专用视图、转发端点和规则以及监听端点。 -
所有查询都必须通过 pfSense 防火墙实例进行检查。
-
为了避免单点故障,OraStage 计划使用另一台 DNS 服务器,并利用 OCI 负载平衡器在主 DNS 和辅助 DNS 之间分配查询。
本教程系列将逐步指导您实现上述概述的要求,从头开始构建整个解决方案。您可以从以下列表中轻松导航到每个教程:
-
教程 1:在 OCI 中配置 BIND9 DNS 。了解如何在计算实例上安装和配置 BIND9,使其成为 OCI 中两个测试环境的本地 DNS 服务器。这些环境将包括“前端”和“后端”服务器,每个服务器都托管在单独的分支网络中。BIND9 服务器将处理定向到
orastage.com
的所有 DNS 查询。 -
教程 2:在 OCI 中的 BIND9 DNS 方案上实施高可用性。本教程重点介绍添加辅助 BIND9 服务器以及配置网络负载平衡器 (Network Load Balancer,NLB) 以在两台服务器之间分配 DNS 流量。对
orastage.com
的 DNS 查询将定向到 NLB IP,这将平衡主 BIND9 服务器和辅助 BIND9 服务器之间的负载。如果一台服务器不可用,DNS 解析将继续,不会中断服务。 -
教程 3:使用 OCI DNS 解析本机域。仅关注特定用例,在需要解析
oraclevcn.com
和oraclecloud.com
等原生域的情况下,我们在 OCI 中使用原生 DNS 组件。BIND9 本教程中未使用 DNS。 -
教程 4:使用 pfSense 防火墙向 DNS 体系结构添加安全性。侧重于在 OCI 中的中心 VCN 中安装 pfSense 防火墙,并执行所需的网络配置以通过要检查的防火墙路由所有东西流量,包括 DNS 查询(在过去的教程中完成)。
BIND9 概览
BIND9(Berkeley Internet Name Domain version 9) 是世界上最广泛使用和成熟的 DNS(Domain Name System,域名系统)服务器软件包之一。它由互联网系统联盟 (ISC) 开发和维护。BIND9 是互联网大部分 DNS 基础设施的支柱,为小型和大规模部署提供强大可靠的 DNS 服务。
BIND9 的灵活性、稳健性和广泛功能集使其适用于从小型内部网络到互联网上最大的公共 DNS 服务的各种 DNS 应用。
BIND9 的主要功能
-
DNS 协议支持:支持所有主要的 DNS 功能和协议,包括 IPv4 和 IPv6、DNSSEC(DNS 安全扩展)和 TSIG(事务处理 SIGnature)。
-
DNSSEC(DNS 安全扩展):提供高级安全功能来保护 DNS 数据完整性和真实性,防止高速缓存中毒和欺骗等攻击。
-
可扩展性和性能:适用于小型到超大型 DNS 部署,具有高效处理高查询负载和大区域的功能。
-
灵活性和定制性:
- 具有丰富的优化 DNS 行为、区域管理和查询处理选项,可以进行高度可配置。
- 支持各种类型的区域,包括主区域(主区域)、从属区域(辅助区域)和存根区域。
-
动态 DNS:支持动态 DNS (Dynamic DNS,DDNS),允许在不重新启动服务器的情况下实时更新 DNS 记录。
-
访问控制和安全性:
- 实施访问控制列表 (access control list,ACL),用于限制对 DNS 服务的访问以及管理可以查询或更新区域的人员。
- 支持基于查询源为 DNS 查询提供不同答案的视图。
-
日志记录和监视:
- 用于跟踪查询、更新和服务器性能的广泛日志记录功能。
- 与监视工具集成,确保高可用性和快速故障排除。
-
高速缓存:提供强大的高速缓存机制,通过高速缓存 DNS 响应来提高性能并减少权威 DNS 服务器上的负载。
-
区域传输:支持使用 AXFR(全区域传输)和 IXFR(增量区域传输)在 DNS 服务器之间进行安全区域传输。
BIND9 的常见用例
-
权威 DNS 服务器:托管域的 DNS 记录,为 DNS 查询提供权威响应。
-
递归 DNS 服务器:通过递归查询其他 DNS 服务器来解决客户机的 DNS 查询。
-
转发 DNS 服务器:将 DNS 查询转发到其他 DNS 服务器,通常与缓存结合使用。
-
辅助(从属)DNS 服务器:维护主服务器中的区域数据副本,提供冗余和负载平衡。
BIND9 的安装和配置
-
安装:可以在各种操作系统(包括 Linux、UNIX 和 Windows)上安装 BIND9。它可以通过大多数 Linux 发行版上的软件包管理器获得,或者可以从源进行编译。
-
配置:主配置文件为
named.conf
,管理员可在其中定义区域、访问控制、日志记录选项和其他设置。区域文件包含每个域的实际 DNS 记录。
在 OCI 上使用 BIND9
一些客户可能会选择使用和管理自己的 DNS(例如 BIND9)而不是使用 Oracle Cloud Infrastructure (OCI) 托管 DNS 服务,原因有很多:
-
定制和灵活性:
-
高级配置:像 BIND9 这样的定制 DNS 解决方案提供了广泛的可配置性,允许客户定制其 DNS 设置以满足托管服务可能不支持的特定要求。
-
专用功能:某些组织需要高级功能,例如特定的查询日志记录、详细的访问控制或托管服务可能未提供的定制 DNS 记录。
-
-
成本注意事项:
-
成本管理:对具有大量 DNS 流量的组织而言,自我管理的 DNS 可能更加经济高效,因为这样可以避免与托管服务相关的可变成本。
-
可预测的费用:运营自己的 DNS 服务器可以带来更可预测的成本,因为他们只需要管理基础设施成本而不是为托管的 DNS 使用量付费。
-
-
控制和安全性:
-
完全控制:企业可能更喜欢完全控制 DNS 基础设施,包括实施定制安全策略、详细日志记录和细粒度访问控制。
-
数据隐私:对于高度敏感或受监管的环境,将 DNS 流量保存在自己的网络中是一项安全要求,可确保数据隐私并遵守法规。
-
-
性能和可靠性:
-
性能优化:通过自我管理的 DNS,组织可以根据自己的需求来配置特定于高速缓存、负载平衡和地理位置的 DNS 响应,从而优化性能。
-
可靠性:通过管理自己的 DNS 服务器,组织可以实施高可用性配置和冗余措施来满足特定的可靠性要求。
-
-
与现有基础设施集成:
-
旧系统:具有旧系统组织的现有 DNS 基础设施与其他系统和流程深度集成,因此可以更轻松地继续管理自己的 DNS。
-
定制集成:自托管 DNS 可以与需要特定 DNS 配置或交互的其他定制或第三方应用无缝集成。
-
-
法规和合规要求:
- 合规性需求:某些行业具有严格的监管要求,需要控制其 IT 基础设施(包括 DNS)的各个方面,以符合法律和合规性标准。
-
学习和专业知识:
- 技能开发:一些组织希望保持内部对 DNS 管理的专业知识和知识,这对于排除故障和优化其整体 IT 基础设施很有价值。
-
供应商锁定避免:
- 避免锁定:通过管理自己的 DNS,企业可以避免被锁定在特定供应商的生态系统中,从而提高切换提供商或迁移工作负载的灵活性,而无需进行大量重新配置。
尽管 OCI 托管 DNS 服务提供了易用性、可扩展性以及更低的管理开销,但这些因素凸显了某些组织可能选择管理自己的 DNS 基础设施的原因。
在 OCI 中设置 BIND9 的目标
-
BIND9 和 OCI 简介
- 了解 BIND9 是什么及其在 DNS 管理中的作用。
- 概述 Oracle Cloud Infrastructure (OCI) 及其与此设置相关的关键组件。
-
先决条件和初始设置
- 确定并收集必要的设置先决条件。
- 设置用于托管 BIND9 服务器的 OCI 实例(虚拟机)。
-
配置 OCI 环境
- 在 OCI 中配置基本网络设置,通过路由规则和网关在所有相关服务器和客户端之间建立适当的通信,通过安全列表允许 DNS 流量。
-
在 OCI 实例上安装 BIND9
- 通过 SSH 访问 OCI 实例。
- 安装 BIND9 所需的软件包和依赖项。
-
配置 BIND9
- 配置主 BIND9 配置文件 (
named.conf
)。 - 设置用于转发 DNS 查找的区域文件。
- 配置主 BIND9 配置文件 (
-
启动和管理 BIND9 服务
- 启动 BIND9 服务并将其配置为在引导时启动。
- 验证 BIND9 服务是否正常运行。
-
测试 DNS 服务器
- 使用命令行工具(例如,dig、host)测试 DNS 解析。
- 确保正向查找已正确配置且可运行。
-
保护 BIND9 服务器
- 实施保护 BIND9 服务器的优秀实践,包括访问控制。
-
结论和其他资源
- 总结所做的事情。
- 为进一步学习提供其他资源和参考资料。
目标
-
在本教程结束时,您将使用在 Oracle Cloud Infrastructure (OCI) 上运行的功能性 BIND9 DNS 服务器。您将了解 DNS 的基本知识以及 BIND9 的运行方式,从而可以在云环境中配置、管理和保护 BIND9 服务器。此外,您还将掌握在 OCI 中对 BIND9 DNS 设置进行故障排除和维护的知识。本教程还将帮助您提高在网络和计算服务中操作各种 OCI 组件的技能。
-
本教程的主要目标是使 FE-VM (
fe.orastage.com
) 可以查询 BE-VM (be.orastage.com
),反之亦然,使用 Primary-DNS (primary-dns.orastage.com
) 作为权威 DNS 服务器。
最终架构
先决条件
-
访问 OCI 租户以及管理所需网络和计算服务的权限。
-
基本了解 OCI 网络路由和安全及其功能:虚拟云网络 (VCN)、路由表、动态路由网关 (DRG)、安全列表和堡垒。
-
基本了解 Ubuntu Linux 和 DNS。
-
需要三个虚拟云网络 (Virtual Cloud Network,VCN),每个虚拟云网络需要一个专用子网。
- DNS-VCN:这将托管主 DNS 服务器。除辅助 DNS 和网络负载平衡器外。
- 前端 VCN:这将托管其中一个客户端。除了 OCI DNS 转发器之外。
- 后端 VCN:这将托管其他客户端。除了 OCI DNS 转发器之外。
任务 1:设置路由和安全网络组件
任务 1.1:创建 VCN
-
确保已创建以下 VCN。
- DNS-VCN (
10.0.0.0/16
),包含 DNS-Private-Subnet (10.0.0.0/24
)。 - 前端 VCN (
10.1.0.0/16
),其中包含 FE-Private-Subnet (10.1.0.0/24
)。 - 后端 VCN (
10.2.0.0/16
),其中包含 BE-Private-Subnet (10.2.0.0/24
)。
- DNS-VCN (
-
单击左上角的汉堡菜单(≡)。
- 单击 Networking 。
- 单击虚拟云网络。
-
我们可以看到相应 VCN,每个 VCN 只有一个专用子网,并关联了默认路由表和安全列表。
任务 1.2:创建动态路由网关 (DRG)
DRG 是虚拟路由器,用于为从一个 VCN 到另一个 VCN 的专用流量提供路径,或者为 VCN 与内部部署网络(甚至为具有其他云环境网络的 VCN)之间的专用流量提供路径。因此,它是适用于每个 OCI 网络环境的强大而关键的组件。在本教程中,我们将使用它来在同一区域中的多个 VCN 之间建立连接。
-
单击左上角的汉堡菜单(≡)。
- 单击 Networking 。
- 单击动态路由网关。
-
单击创建动态路由网关。
- 输入 DRG 的名称。
- 单击创建动态路由网关。
-
已成功创建 DRG。
任务 1.3:将 VCN 附加到 DRG
-
在 DRG 详细信息页中,创建虚拟云网络附加。要创建,请单击 Create virtual cloud network attach 。
-
DNS-VCN 附加:
-
前端 VCN 附加:
-
后端 VCN 附加:
-
-
已成功连接所有 VCN。默认情况下,这些附加将使用自动生成的 DRG 路由表,该表允许每个附加动态学习到其他 VCN 的路由。
-
所有 VCN 都应该能够相互连接。因此,我们必须使用一些路由和安全规则来促进他们之间的通信。在任务 1.4、任务 1.5 和任务 1.6 中,我们将:
- 允许 SSH 访问,以便我们可以登录到实例。
- 在需要的地方允许 DNS 流量。
- 在需要时允许 Ping 流量。
- 在需要时提供出站 Internet 访问。
- 确保每个计算实例都能够通过 DRG 连接到另一个计算实例。
任务 1.4:为 DNS-VCN 配置路由和安全
-
这必须在子网级别执行。导航到“VCN”页并单击 DNS-VCN 。
-
单击专用子网。
-
单击指定路由表的路由表。
-
请务必添加以下规则。
0.0.0.0/0
-NAT 网关:要单向访问 Internet,请根据需要安装软件包/修补程序。在本教程中,我们需要此访问权限才能在 Primary-DNS 服务器上安装 BIND9 软件包。10.1.0.0/16
— DRG:将发往前端 VCN 的流量路由到 DRG。10.2.0.0/16
— DRG:将发往后端 VCN 的流量路由到 DRG。
-
如果未创建 NAT 网关,请先按照步骤创建一个,然后再在上面的步骤中添加路由规则。
- 转到 DNS-VCN 详细信息页,然后单击 NAT 网关。
- 单击创建 NAT 网关。
-
输入以下信息。
- 输入 NAT 网关的名称。
- 选择 Ephemeral Public IP Address 。
- 单击创建 NAT 网关。
已成功创建 NAT 网关。
-
在我们完成 DNS-VCN 子网的路由部分后,我们立即采取安全性措施。转到 Subnet Details(子网详细信息)页面,然后单击分配的安全列表。
-
确保允许入站流量。
- 任意位置的 SSH 通信(端口 22)。
- 来自前端 VCN 和后端 VCN 的 DNS 流量(TCP/端口 53 和 UDP/端口 53)。
-
确保允许所有出站流量。
任务 1.5:为前端 VCN 配置路由和安全
-
这必须在子网级别执行。导航到“VCN”页,然后单击 Frontend-VCN 。
-
单击专用子网。
-
单击指定路由表的路由表。
-
请务必添加以下规则。
0.0.0.0/0
— NAT 网关:要单向访问互联网,此处需要它,以便 FE-VM ** 能够使用 OCI 堡垒服务,而使用服务网关也可以执行该任务。10.0.0.0/16
— DRG:将发往 DNS-VCN 的流量路由到 DRG。10.2.0.0/16
— DRG:将发往后端 VCN 的流量路由到 DRG。
-
如果未创建 NAT 网关,请按照任务 1.4 中的步骤创建一个 NAT 网关,然后再在上述步骤中添加路由规则。
-
在我们完成了 Frontend-VCN 的路由部分后,我们立即采取安全措施。转到 Subnet Details(子网详细信息)页面,然后单击分配的安全列表。
-
确保允许入站流量。
- 任意位置的 SSH 通信(端口 22)。
- 来自 Backend-VCN (ICMP,类型 8)的 Ping 流量,我们将在测试阶段需要此规则。
-
确保允许所有出站流量。
任务 1.6:为后端 VCN 配置路由和安全
-
这必须在子网级别执行。导航到“VCN”页并单击后端 VCN 。
-
单击专用子网。
-
单击指定路由表的路由表。
-
请务必添加以下规则。
0.0.0.0/0
— NAT 网关:要单向访问互联网,此处需要它,以便 BE-VM 能够使用 OCI 堡垒服务,而使用服务网关也可以执行该任务。10.0.0.0/16
— DRG:将发往 DNS-VCN 的流量路由到 DRG。10.1.0.0/16
— DRG:将发往前端 VCN 的流量路由到 DRG。
-
如果未创建 NAT 网关,请按照任务 1.4 中的步骤创建一个 NAT 网关,然后再在上述步骤中添加路由规则。
-
在我们完成了 Backend-VCN 的路由部分后,我们立即采取安全措施。转到 Subnet Details(子网详细信息)页面,然后单击分配的安全列表。
-
确保允许入站流量。
- 任意位置的 SSH 通信(端口 22)。
- 来自 Frontend-VCN (ICMP,类型 8)的 Ping 流量,我们将在测试阶段需要此规则。
-
确保允许所有出站流量。
-
基本网络组件现已准备就绪(VCN、子网、路由表、DRG 和安全列表)。现在,体系结构应如下图所示。
任务 2:预配 OCI 计算实例
预配将在其中配置 BIND9 的计算实例。
任务 2.1:生成 SSH 密钥对
必须在创建实例之前完成此操作。SSH 密钥用于向 Linux 计算实例进行验证。可以使用 Windows 计算机上的 PuTTYgen 工具或任何计算机上的 ssh-keygen 实用程序生成密钥。在本教程中,我们将在 OCI Cloud Shell 中使用 ssh-keygen 。
-
单击 Cloud Shell 。
-
运行
ssh-keygen
命令以生成密钥对。 -
使用
cd .ssh
命令导航到默认的.ssh
目录并复制公钥文件id_rsa.pub
的内容,我们将在任务 2.2 中使用此项。
任务 2.2:预配主 DNS 计算实例
-
单击左上角的汉堡菜单(≡)。
- 单击计算。
- 单击实例。
-
单击创建实例。
-
输入实例名称。
-
选择 Ubuntu 20.04 作为实例的操作系统。
-
在主网络中,输入以下信息。
- 选择 DNS-VCN 。
- 选择专用子网。
-
为实例分配专用 IP 地址
10.0.0.10
。 -
粘贴在任务 2.1 中生成的公钥。
-
向下滚动到页面末尾,然后单击显示高级选项。
-
单击 Oracle Cloud Agent 。
- 选择堡垒插件,因为稍后我们将使用堡垒来访问实例。
- 单击创建。
-
已成功创建 Primary-DNS 计算实例。
-
体系结构应如下图所示。
在后面的任务中,我们将在 Primary-DNS 实例中安装和配置 BIND9。
任务 3:安装并配置 BIND9
任务 3.1:使用堡垒访问主 DNS 计算实例
-
首先,我们需要通过 SSH 建立对计算实例的访问,以便安装和配置 BIND9。但是,在专用子网中创建实例时,由于实例没有公共 IP,因此我们无法直接从任何位置访问实例,因此我们将使用其他 OCI 服务。
OCI Bastion 是充当中介的托管服务,可安全访问专用网络中的资源。对于需要访问未公开到公共 Internet 的资源的管理用途,它特别有用,您可以将其视为跳转服务器即服务。
- 单击身份和安全。
- 单击堡垒。
-
单击创建堡垒。
-
输入以下信息。
- 输入堡垒名称。
- 选择 VCN (DNS-VCN ) 及其子网。
- CIDR 块允许列表是我们应该从堡垒连接的允许 IP 范围,在此处我们使用了
0.0.0.0/0
进行此实现,如果需要,我们可以通过选择所连接的公共 IP 地址来更具体。 - 单击创建堡垒。
-
已创建堡垒。我们必须创建一个会话,允许我们在特定时间(默认为 3 小时)内连接到目标资源 ( Primary-DNS )。
-
输入以下信息。
- 会话类型:选择托管 SSH 会话。
- 会话名称:输入会话的名称。
- 用户名:输入用户名。对于 Ubuntu Linux 实例,默认用户名是 ubuntu 。
- 计算实例:选择在任务 2.2 中创建的 Primary-DNS 实例。
- 粘贴我们在任务 2.1 中生成的相同公钥。
- 单击创建会话。
-
创建会话后,单击三个点和复制 SSH 命令。
命令应如下所示:
ssh -i <privateKey> -o ProxyCommand="ssh -i <privateKey> -W %h:%p -p 22 ocid1.bastionsession.oc1.eu-milan-1.amaaaaaaldij5aiaa6buxxxxxxxxxxxxxxxxxxrlnywmo3n2pty5wpf7fq@host.bastion.eu-milan-1.oci.oraclecloud.com" -p 22 ubuntu@10.0.0.10
-
打开 OCI Cloud Shell。
- 使用
cd .ssh
命令导航到.ssh
目录。 - 粘贴 SSH 命令。确保将
<privateKey>
替换为私钥文件名id_rsa
。
- 使用
-
已成功注册。
任务 3.2:安装 BIND9
访问实例后,我们将安装 BIND9 并确保它已启动且正在运行。
-
运行以下命令。
sudo apt update sudo apt install bind9 bind9utils bind9-doc bind9-host
-
运行
sudo systemctl status named
命令以检查 BIND9 服务状态。它处于活动(正在运行)状态。 -
运行
sudo systemctl enable named
命令以启用该服务,以便在重新引导后自动启动该服务。
任务 3.3:更改实例的全限定域名 (Fully Qualified Domain Name,FQDN)
-
要更改实例的 FQDN,请使用
sudo vi /etc/hosts
命令访问 hosts 文件并添加以下行。10.0.0.10 primary-dns.orastage.com primary-dns
-
要验证更改,请运行
hostname -f
命令查看新的 FQDN。
任务 3.4:配置 named.conf.options
文件
-
添加配置。
-
在
/etc/bind/named.conf.options
文件的末尾添加以下行并保存该文件。recursion yes; notify yes; allow-query { any; }; allow-query-cache { any; }; allow-recursion { any; }; forwarders { 8.8.8.8; }; auth-nxdomain no; # conform to RFC1035 listen-on { localhost; any; }; allow-transfer { any; };
-
重新启动 BIND9 服务。
-
检查服务状态。
-
任务 3. 5:使用 netstat
显示 TCP/UDP 端口状态
net-tools 是一个命令行实用程序包,它为 Linux OS 提供了一组重要的网络工具。
-
运行
sudo apt install net-tools
命令以安装 net-tools。这是使用netstat
命令所必需的。 -
运行
sudo netstat -antu
命令以检查实例正在监听的端口/协议。如下图中所示,对于 IP10.0.0.10
,应打开 TCP/port 53 和 UDP/port 53。
任务 3.6:配置 named.conf.local
文件
-
在
/etc/bind/named.conf.local
文件的末尾添加以下行。zone "orastage.com" { type master; allow-transfer { any; }; file "/var/lib/bind/db.orastage.com"; };
任务 3.7:配置 db.orastage.com
文件
-
db.orastage.com
文件尚不存在。要创建,请运行sudo vi /var/lib/bind/db.orastage.com
命令并将以下内容添加到文件中。$TTL 1D @ IN SOA primary-dns.orastage.com. admin.orastage.com. ( 329 ; serial 604800 ; refresh (1 week) 86400 ; retry (1 day) 2419200 ; expire (4 weeks) 604800 ; minimum (1 week) ) IN NS primary-dns.orastage.com. primary-dns IN A 10.0.0.10 fe IN A 10.1.0.5 be IN A 10.2.0.5
任务 3.8:配置 50-cloud-init.yaml
文件
-
访问
/etc/netplan/50-cloud-init.yaml
文件并添加以下行。nameservers: addresses: [10.0.0.10] search: [orastage.com]
-
运行
sudo netplan apply
命令,以使更改生效。
任务 3.9:禁用 iptables 防火墙
-
我们将暂时仅针对本教程禁用 iptables,以避免在测试阶段出现任何类型的连接问题。
-
运行
sudo su
命令以切换到 root 用户。 -
要保存现有防火墙规则的备份,请运行
iptables-save > /root/firewall_rules.backup
命令。 -
运行以下命令以清除所有规则并允许通过防火墙的所有流量。
iptables -F iptables -X iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT iptables -P FORWARD ACCEPT
-
完成任务 6 后,运行
iptables-restore < /root/firewall_rules.backup
命令以恢复防火墙规则。 -
在清除规则后,我们应该确保此更改在重新引导后是持久的。因此,运行
apt install iptables-persistent
命令安装软件包。 -
运行
iptables-save > /etc/iptables/rules.v4
命令。 -
要查看 iptables 规则,请运行
iptables -L
命令,它应该为空。
-
任务 3.10:重新启动 BIND9
-
运行以下命令以重新启动该服务。
sudo systemctl restart named
任务 3.11:测试
-
在查询已添加到
db.orastage.com
文件的域名时执行多次测试,并查看它是否在本地回答查询。-
orastage.com
域:host -a orastage.com
。 -
Primary-DNS
域:host -a primary-dns.orastage.com
。 -
FE-VM
域:host -a fe.orastage.com
。 -
BE-VM
域:host -a be.orastage.com
。
-
任务 4:配置 OCI 转发端点和规则
每个 OCI VCN 都有一个默认解析程序,可用于解析同一 VCN、不同 VCN、内部部署网络甚至互联网上公开发布的主机名。在本任务中,我们将使用解析程序中的两个组件来实现将查询转发到 BIND9 实例 Primary-DNS 的要求,即:
- 转发端点:允许 DNS 解析程序查询转发规则中定义的远程 DNS。
- 转发规则:用于控制当解析程序的专用视图未回答查询时如何处理 DNS 查询。将对
orastage.com
的查询转发到哪个远程 DNS 服务器并使用哪个转发端点?
任务 4.1:为前端 VCN 配置转发端点和规则
在 Frontend-VCN 中创建转发端点和规则,将 orastage.com
查询从 FE-VM 指向 Primary-DNS 实例。
-
导航到 Frontend-VCN ,然后单击 DNS 解析程序。
-
单击创建端点。
-
输入以下信息。
- 名称:输入端点的名称。
- 子网:选择 VCN 的专用子网。
- 端点类型:选择转发。
- 转发 IP 地址:输入
10.1.0.6
。 - 单击创建端点。
-
已成功创建转发端点 ( FWD )。
-
单击规则和管理规则。
-
输入以下信息。
- 规则条件:选择域。
- 域:输入
orastage.com
域。 - 源端点:选择转发端点。
- 目标 IP 地址:输入 BIND9 实例
10.0.0.10
的 IP。
-
已成功创建转发规则。
任务 4.2:为后端 VCN 配置转发端点和规则
在后端 VCN 中创建转发端点和规则,将 orastage.com
查询从 BE-VM 指向 Primary-DNS 实例。
- 导航到 Backend-VCN ,然后单击 DNS 解析程序。
-
单击创建端点。
-
输入以下信息。
- 名称:输入端点的名称。
- 子网:选择 VCN 的专用子网。
- 端点类型:选择转发。
- 转发 IP 地址:输入
10.2.0.6
。 - 单击创建端点。
-
已成功创建转发端点 ( FWD )。
-
单击规则和管理规则。
-
输入以下信息。
- 规则条件:选择域。
- 域:输入
orastage.com
域。 - 源端点:选择转发端点。
- 目标 IP 地址:输入 BIND9 实例
10.0.0.10
的 IP。
-
已成功创建转发规则。
-
体系结构应如下图所示。
任务 5:预配客户机实例以执行 DNS 查询
任务 5.1:创建 FE-VM
计算实例
-
单击左上角的汉堡菜单(≡)。
- 单击计算。
- 单击实例。
-
单击创建实例。
-
输入实例的名称。
-
选择 Oracle Linux 8 作为实例的操作系统。
-
在主网络中,输入以下信息。
- 选择 Frontend-VCN 。
- 选择专用子网。
-
为实例分配专用 IP 地址
10.1.0.5
。 -
粘贴在任务 2.1 中生成的公钥。
-
向下滚动到页面末尾,然后单击显示高级选项。
-
单击 Oracle Cloud Agent 。
-
选择 Bastion 插件,因为我们将使用 Bastion 访问实例并单击 Create 。
-
已成功创建 FE-VM 计算实例。
任务 5.2:创建 BE-VM
计算实例
-
单击实例和创建实例。
-
输入实例名称。
-
选择 Oracle Linux 8 作为实例的操作系统。
-
在主网络中,输入以下信息。
- 选择 Backend-VCN 。
- 选择专用子网。
-
为实例分配专用 IP 地址
10.2.0.5
。 -
粘贴在任务 2.1 中生成的公钥。
-
向下滚动到页面末尾,然后单击显示高级选项。
-
单击 Oracle Cloud Agent 。
-
选择 Bastion 插件,因为我们将使用 Bastion 访问实例并单击 Create 。
-
已成功创建 BE-VM 计算实例。
-
体系结构已完成。
注:在以后的任务中,我们将测试多个方案并验证设置是否按预期工作。
任务 6:测试和验证
任务 6.1:使用堡垒和测试访问 FE-VM 计算实例
-
FE-VM 客户机应该能够解析
be.orastage.com
。- 单击身份和安全。
- 单击堡垒。
-
单击创建堡垒。
-
输入以下信息。
- 堡垒名称:输入堡垒的名称。
- 配置网络:选择 VCN ( Frontend-VCN ) 及其子网。
- CIDR 块允许列表是我们应该从堡垒连接的允许的 IP 范围,在此处我们已使用
0.0.0.0/0
进行此实现,如果需要,我们可以通过选择要从中连接的公共 IP 地址来更具体。 - 单击创建堡垒。
-
已创建堡垒。我们必须创建一个会话,以在特定时间(默认为 3 小时)内连接到目标资源 ( FE-VM )。
-
输入以下信息。
- 会话类型:选择托管 SSH 会话。
- 会话名称:输入名称。
- 用户名:输入用户名。对于 Oracle Linux 实例,默认用户为
opc
。 - 计算实例:选择在任务 5 中创建的 FE-VM 实例。
- 粘贴在任务 2.1 中生成的相同公钥。
- 单击创建会话。
-
创建会话后,单击三个点和复制 SSH 命令。
命令应如下所示:
ssh -i <privateKey> -o ProxyCommand="ssh -i <privateKey> -W %h:%p -p 22 ocid1.bastionsession.oc1.eu-milan-1.amaaaaaaldij5aiaskfyan4yj7yx3bmm57rckmvvawikppba5mxxzo2q7dka@host.bastion.eu-milan-1.oci.oraclecloud.com" -p 22 opc@10.1.0.5
- 打开云 shell,然后使用
cd .ssh
命令导航到.ssh
目录。 - 粘贴 SSH 命令,并确保将
<privateKey>
替换为私有密钥文件名id_rsa
。 - 输入 yes ,然后单击 Enter 。
- 打开云 shell,然后使用
-
测试从 FE-VM 到
be.orastage.com
的orastage.com
查询。您可以使用不同的方法验证设置。- 运行
host
命令。 - 运行
ping
命令。 - 运行
dig
命令。
- 运行
如上面的测试所示,我们可以检索 BE-VM 域的 IP 地址,并且 ping 正在使用主机名,这意味着测试成功。
任务 6.2:使用堡垒和测试访问 BE-VM 计算实例
-
BE-VM 客户机应该能够解析
fe.orastage.com
。- 单击身份和安全。
- 单击堡垒。
-
单击创建堡垒。
-
输入以下信息。
- 堡垒名称:输入堡垒的名称。
- 配置网络:选择 VCN ( Backend-VCN ) 及其子网。
- CIDR 块允许列表是我们应该从堡垒连接的允许的 IP 范围,在此处我们已使用
0.0.0.0/0
进行此实现,如果需要,我们可以通过选择要从中连接的公共 IP 地址来更具体。 - 单击创建堡垒。
-
已创建堡垒。我们必须创建一个会话,以在特定时间(默认为 3 小时)内连接到目标资源 ( BE-VM )。
-
输入以下信息。
- 会话类型:选择托管 SSH 会话。
- 会话名称:输入名称。
- 用户名:输入用户名。对于 Oracle Linux 实例,默认用户为
opc
。 - 计算实例:选择在 STEP 06 中创建的 BE-VM 实例。
- 粘贴在任务 2.1 中生成的相同公钥。
- 单击创建会话。
-
创建会话后,单击三个点和复制 SSH 命令。
命令应如下所示:
ssh -i <privateKey> -o ProxyCommand="ssh -i <privateKey> -W %h:%p -p 22 ocid1.bastionsession.oc1.eu-milan-1.amaaaaaaldij5aia73xclnp6h6i2mjnpsuer2bnz4cblejfemnr6uk7pafla@host.bastion.eu-milan-1.oci.oraclecloud.com" -p 22 opc@10.2.0.5
- 打开云 shell,然后使用
cd .ssh
命令导航到.ssh
目录。 - 粘贴 SSH 命令,并确保将
<privateKey>
替换为私有密钥文件名id_rsa
。 - 输入 yes ,然后单击 Enter 。
- 打开云 shell,然后使用
-
测试从 BE-VM 到
fe.orastage.com
的orastage.com
查询。您可以使用不同的方法验证设置。- 运行
host
命令。 - 运行
ping
命令。 - 运行
dig
命令。
- 运行
如上面的测试所示,我们可以检索 FE-VM 域的 IP 地址,并且 ping 正在使用主机名,这意味着测试成功。
后续步骤
在本教程中,我们构建了一个小型 BIND9 DNS 架构,其中包含基本组件;Oracle Cloud Infrastructure 中的服务器和客户端设置。在整个细分市场中,您将通过处理路由表、DRG、安全列表、堡垒等不同组件,深入了解 OCI 网络路由和安全性。您还学习了如何在 OCI 环境中安装和配置功能性 BIND9 DNS。
在下一个教程中:教程 2:在 Oracle Cloud Infrastructure 中的 BIND9 域名系统上实施高可用性,我们将通过将高可用性层纳入体系结构来增强此设置,这对于减少停机时间并改善用户体验至关重要。
确认
- 作者 — Anas abdallah(云网络专家)
更多学习资源
浏览 docs.oracle.com/learn 上的其他实验室,或者访问 Oracle Learning YouTube 渠道上的更多免费学习内容。此外,请访问 education.oracle.com/learning-explorer 成为 Oracle Learning Explorer。
有关产品文档,请访问 Oracle 帮助中心。
Configure BIND9 Domain Name System in Oracle Cloud Infrastructure
G13023-03
Copyright ©2025, Oracle and/or its affiliates.