文档首页/ 云解析服务 DNS/ 最佳实践/ 内网域名解析最佳实践/ 通过DNS解析器和Linux Bind实现跨账号域名解析
更新时间:2025-08-19 GMT+08:00
分享

通过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来解析。

图1 解决方案示意图

本实践所涵盖的本地网络环境与华为云环境中的IP地址均为示例,仅供参考使用。实际应用中,请根据真实网络规划进行部署。

准备工作

  • 您需要熟悉以下基本概念:
    • 华为云基础架构(HFA)中的多账号结构策略。
    • 使用企业路由器或VPC对等连接实现VPC网络互通。
    • 华为云环境中的DNS解析。
    • 熟悉Linux环境及BIND软件包的使用。
  • 业务部署区域:目前DNS解析器已经在部分区域上线,您需要在已上线区域规划业务,详细请参见解析器简介
  • 资源访问管理:在多账号环境中,您需要使用华为资源访问管理(Resource Access Manager,简称RAM)服务,在不同账号之间共享DNS规则,避免在每个账号中重复创建解析器规则。DNS解析器和规则应该仅配置在业务账号中。
  • 账号权限:您需要至少在3个不同的华为云账号中拥有Root权限,具体用途如下:

    账号类型

    用途

    中转账号

    用于通过企业路由器连接不同VPC

    业务账号

    用于托管共享资源(如DNS解析器)

    生产账号

    用于托管生产工作负载

步骤一:建立不同账号之间的VPC连接

  1. 在业务账号中,创建3个不同VPC,用途如下:
    • 关联Linux Bind服务器作为本地网络。
    • 关联DNS解析器。
    • 关联业务账号中的测试服务器。
  2. 在生产账号中,创建1个VPC,关联生产账号中的测试服务器。
  3. 在中转账号中,创建企业路由器并配置VPC连接和路由表。
    1. 将企业路由器共享给业务账号和生产账号。
    2. 在生产账号中,创建VPC连接将生产VPC添加到企业路由器。
    3. 在业务账号中,创建VPC连接将账号中所有VPC添加到企业路由器。
    4. 在中转账号中配置企业路由器的路由表,如下所示:
      • 将业务账号下的所有VPC关联到默认路由表。
      • 在企业路由器的默认路由表中,为业务账号和生产账号中的所有VPC创建传播。
      • 将生产VPC关联到自定义路由表。
      • 在企业路由器的自定义路由表中,为业务账号和生产账号中的所有VPC创建传播。

步骤二:部署服务器

  1. 在业务账号中部署Linux Bind服务器,并在业务账号和生产账号中部署测试服务器。
    1. 在业务账号中,购买弹性云服务器,具体信息如下:
      • ECS-VM01:作为内部部署网络中的测试服务器,私网IP:172.28.0.101。
      • ECS01:作为本地网络中的主Linux Bind服务器,私网IP:172.28.0.214。
      • ECS-Common:作为业务账号中的测试服务器,私网IP:10.6.48.101。
    2. 在ecs-vm01中,将DNS服务器IP指向Linux Bind服务器的IP地址172.28.0.214。
    3. 在生产账号中,购买弹性云服务器。

      ECS02:作为生产账号的测试服务器,私网IP:10.16.8.101。

  2. 设置业务账号中的 Linux Bind 服务器。
    1. 登录Linux Bind服务器ECS-VM01,输入以下命令安装 bind 实用工具并修改 Bind 的主配置文件。
      $ sudo yum update
      $ sudo yum install bind-utils
      $ vim /etc/named.conf
    2. 修改BIND主配置文件。
      • 配置受信任的ACL列表,仅允许从ECS01ECS-VM01备用Linux BindECS-CommonECS02的地址进行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服务器。
    1. 在 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 子网
      };
    2. 创建正向区域文件,通过以下命令编辑文件。
      $ sudo chmod 755 /etc/named
      $ sudo mkdir /etc/named/zones
      $ sudo vim /etc/named/zones/db.test.example.com

      根据下图修改并插入高亮信息。

    3. 创建反向区域文件,通过以下命令编辑文件。
      $ sudo vim /etc/named/zones/db.172.28

      根据下图修改并插入高亮信息。

    4. 检查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
    5. 启动BIND服务。
      $ sudo systemctl enable named
      $ sudo systemctl start named

配置DNS解析器

  1. 在业务账号中,创建入站终端节点和出站终端节点。

    详细请参见创建入站终端节点创建出站终端节点

  2. 配置出站规则,并将DNS查询转发到Linux Bind服务器。

    详细请参见添加转发规则

  3. 在同一账号中,将创建的出站规则共享至生产账号。

    详情请参见创建转发规则共享

  4. 在生产账号中,进入DNS服务,将生产VPC与被共享的DNS解析器出站规则关联。

结果验证

在同一账号内测试DNS解析

  • 从ECS-VM01解析其关联的内网域名。

    nslookup host1.test.example.com

  • 从ECS-Common解析ECS-VM01关联的域名。

    nslookup host1.test.example.com

总结

在本文中,我们学习了如何在华为云环境中部署Linux Bind DNS服务器,并结合DNS解析器在多账户环境中进行域名解析。

DNS解析器有助于避免从本地环境到华为云环境中重复设置域名控制器,从而降低管理成本。

相关文档