通过DNS解析器和Linux Bind实现跨账号域名解析
应用场景
华为云DNS解析器主要用于混合云DNS解决方案,即客户本地网络无缝连接到华为云虚拟私有云(VPC)基础设施网络,其主要目标是简化DNS管理,实现华为云环境中域名的高效解析。
通过使用DNS解析器,组织可以解析本地DNS基础设施和华为云之间的DNS查询,从而实现本地网络和华为云资源之间的连接,促进混合部署并实现无缝通信,也避免了在华为云环境中构建另一套DNS来解析本地网络与华为云之间的域名,从而节省管理成本。
在本实践中,我们将实现以下目标:
- 在本地网络环境中部署Linux Bind服务器,实现跨账号DNS解析。
- 配置华为云环境中的DNS解析器,实现域名解析。
- 通过域名实现跨账号服务器之间的通信。
解决方案
如图1所示,为了演示本地网络与华为云之间的DNS解析,我们将在业务账号中创建3个VPC,其中隔离VPC用于部署一个Linux Bind服务器,本地网络的IP地址范围为172.28.0.0/16,另外两个VPC分别用于DNS解析器的使用和连通性测试。在生产账号中创建一个VPC,用于承载生产工作负载。所有VPC将通过企业路由器连接,以实现不同账号资源之间的通信。
- VM01:本地网络中的服务器。
- ECS01:业务账号中的测试服务器。
- ECS02:生产账号中的测试服务器。
DNS解析器关联业务VPC,所有DNS规则将在不同账号的不同VPC之间共享。
云上ECS实例发出的DNS查询将首先发送到华为云DNS服务器,如果是请求线下IDC自建DNS的内网域名(转发规则指定的域名),则通过出站终端节点转发到线下IDC自建DNS来解析。

本实践所涵盖的本地网络环境与华为云环境中的IP地址均为示例,仅供参考使用。实际应用中,请根据真实网络规划进行部署。
准备工作
- 您需要熟悉以下基本概念:
- 华为云基础架构(HFA)中的多账号结构策略。
- 使用企业路由器或VPC对等连接实现VPC网络互通。
- 华为云环境中的DNS解析。
- 熟悉Linux环境及BIND软件包的使用。
- 业务部署区域:目前DNS解析器已经在部分区域上线,您需要在已上线区域规划业务,详细请参见解析器简介。
- 资源访问管理:在多账号环境中,您需要使用华为资源访问管理(Resource Access Manager,简称RAM)服务,在不同账号之间共享DNS规则,避免在每个账号中重复创建解析器规则。DNS解析器和规则应该仅配置在业务账号中。
- 账号权限:您需要至少在3个不同的华为云账号中拥有Root权限,具体用途如下:
账号类型
用途
中转账号
用于通过企业路由器连接不同VPC
业务账号
用于托管共享资源(如DNS解析器)
生产账号
用于托管生产工作负载
步骤一:建立不同账号之间的VPC连接
- 在业务账号中,创建3个不同VPC,用途如下:
- 关联Linux Bind服务器作为本地网络。
- 关联DNS解析器。
- 关联业务账号中的测试服务器。
- 在生产账号中,创建1个VPC,关联生产账号中的测试服务器。
- 在中转账号中,创建企业路由器并配置VPC连接和路由表。
- 将企业路由器共享给业务账号和生产账号。
- 在生产账号中,创建VPC连接将生产VPC添加到企业路由器。
- 在业务账号中,创建VPC连接将账号中所有VPC添加到企业路由器。
- 在中转账号中配置企业路由器的路由表,如下所示:
- 将业务账号下的所有VPC关联到默认路由表。
- 在企业路由器的默认路由表中,为业务账号和生产账号中的所有VPC创建传播。
- 将生产VPC关联到自定义路由表。
- 在企业路由器的自定义路由表中,为业务账号和生产账号中的所有VPC创建传播。
步骤二:部署服务器
- 在业务账号中部署Linux Bind服务器,并在业务账号和生产账号中部署测试服务器。
- 设置业务账号中的 Linux Bind 服务器。
- 登录Linux Bind服务器ECS-VM01,输入以下命令安装 bind 实用工具并修改 Bind 的主配置文件。
$ sudo yum update $ sudo yum install bind-utils $ vim /etc/named.conf
- 修改BIND主配置文件。
- 配置受信任的ACL列表,仅允许从ECS01、ECS-VM01、备用Linux Bind、ECS-Common、ECS02的地址进行DNS查询。
对应IP地址:172.28.0.101、172.28.0.214、172.28.0.78、10.6.48.101、10.16.8.101
- 绑定服务器监听53端口,确保安全组绑定测试服务器允许53端口。
- 从受信任的IP地址列表中允许查询。
- 如果有备用DNS服务器,允许传输到备用DNS服务器。
- 配置受信任的ACL列表,仅允许从ECS01、ECS-VM01、备用Linux Bind、ECS-Common、ECS02的地址进行DNS查询。
- 在 Linux Bind 服务器上配置本地文件,输入以下命令插入脚本:
$ vim /etc/named/named.conf.local zone "test.example.com" { type master; file "/etc/named/zones/db.test.example.com"; # 区域文件路径 }; zone "28.172.in-addr.arpa" { type master; file "/etc/named/zones/db.172.28"; # 172.28.0.0/24 子网 };
- 创建正向区域文件,通过以下命令编辑文件。
$ sudo chmod 755 /etc/named $ sudo mkdir /etc/named/zones $ sudo vim /etc/named/zones/db.test.example.com
根据下图修改并插入高亮信息。
- 创建反向区域文件,通过以下命令编辑文件。
$ sudo vim /etc/named/zones/db.172.28
根据下图修改并插入高亮信息。
- 检查BIND配置语法。
$ sudo named-checkconf $ sudo named-checkzone test.example.com /etc/named/zones/db.test.example.com $ sudo named-checkzone 128.10.in-addr.arpa /etc/named/zones/db.172.28
- 启动BIND服务。
$ sudo systemctl enable named $ sudo systemctl start named
- 登录Linux Bind服务器ECS-VM01,输入以下命令安装 bind 实用工具并修改 Bind 的主配置文件。
配置DNS解析器
结果验证
在同一账号内测试DNS解析
- 从ECS-VM01解析其关联的内网域名。
nslookup host1.test.example.com
- 从ECS-Common解析ECS-VM01关联的域名。
nslookup host1.test.example.com
总结
在本文中,我们学习了如何在华为云环境中部署Linux Bind DNS服务器,并结合DNS解析器在多账户环境中进行域名解析。
DNS解析器有助于避免从本地环境到华为云环境中重复设置域名控制器,从而降低管理成本。