
# 通过DNS解析器实现云上云下业务互访
#### 背景
用户基于数据管理和信息安全等方面的因素考虑，数据没有全部部署在云上，选择采用本地数据中心与华为云混合部署的组网方式。
这种组网方式既可以保证敏感信息的安全，又保留了华为云灵活部署、控制成本等优势， 其组网如[图1]所示。
图1混合组网示意图   
![](https://support.huaweicloud.com/bestpractice-dns/zh-cn_image_0000002264043873.png "点击放大")
在这种组网中，通过VPN或者云专线建立本地数据中心和华为云服务器的通信，使本地服务器和华为云服务器可以互通。
但是，由于一些网络安全因素，本地数据中心服务器无法直接访问华为云内网DNS的100网段地址，华为云服务器可以直接访问云服务100网段。华为云DNS和本地自建DNS服务器均有独立的域名，从而导致了以下问题：
- 本地数据中心的服务器使用本地自建的DNS，仅支持解析本地域名，无法解析华为云服务域名，例如OBS，SFS等。
- 华为云服务器使用华为云的DNS，可以解析内网域名，云服务域名，互联网域名，无法解析本地数据中心的域名。
#### 解决方案
鉴于上述组网方式以及存在的问题，华为云的云解析服务提供了混合DNS解决方案，如[图2]所示。
图2混合DNS解决方案   
![](https://support.huaweicloud.com/bestpractice-dns/zh-cn_image_0000002229004550.png "点击放大")
在混合DNS解决方案中，云解析服务提供解析器，创建入站终端节点（Inbound Rule）和出站终端节点（Outbound Rule），用于解决线下DNS与云上DNS互访的问题。
- **线下站点访问云上资源**
  线下自建DNS把华为云服务域名，云上内网域名都转发到入站终端节点解析（华为云服务域名大部分都是\*.myhuaweicloud.com格式的，可以把myhuaweicloud.com域名转发到入站终端节点，这样myhuaweicloud.com域名及其所有子域名解析都会转发到云上DNS解析）。
  
- **云上资源访问线下站点**
  为出站终端节点创建转发规则指定线下域名，内网DNS针对此线下域名请求都转发到线下自建DNS解析。
  
#### 操作流程
| 操作步骤                                                       | 说明                                 |
|:---|:---|
| [步骤一：配置入站终端节点]     | 入站终端节点可以将本地自建DNS的解析请求转发到华为云内网DNS。  |
| [步骤二：配置出站终端节点]   | 华为云内网DNS通过出站终端节点将特定域名解析转发到您指定的DNS。 |
| [步骤三：配置DNS转发规则] | 在出站终端节点和本地自建DNS分别配置转发规则。           |
   
配置完成后，线下站点与云上资源的互访如[图3]所示。
图3线下站点与云上资源互访示意图   
![](https://support.huaweicloud.com/bestpractice-dns/zh-cn_image_0000002264163929.png "点击放大")
如[图3]所示，线下站点与云上资源的互访路径如下：
①：本地自建DNS将对华为云域名（例如"example.huaweicloud.com"）的解析请求转发到入站终端节点（10.231.x.x）。
②：入站终端节点（10.231.x.x）将对华为云域名的解析请求转发至华为云内网DNS。
③：出站终端节点（10.231.x.x）将对线下域名（例如"example.com"）的解析请求转发至本地自建DNS（192.168.10.179）。
要实现上述互访要求，需要为出站终端节点和本地自建DNS分别配置DNS转发规则：
- 出站终端节点：配置转发规则，将对线下域名（例如"example.com"）的解析转发至本地自建DNS。
- 本地自建DNS：
  - 配置转发规则，将对华为云域名的解析转发至入站终端节点。
  
  - 配置线下域名（例如"example.com"）的解析记录。
   
 
 #### 步骤一：配置入站终端节点
入站终端节点可以将本地自建DNS的解析请求转发到华为云内网DNS
1. 进入[解析器列表页面](https://console.huaweicloud.com/dns/?#/dns/resolverList)。
2. 单击管理控制台左上角的![](https://support.huaweicloud.com/bestpractice-dns/zh-cn_image_0000001884579401.png)，选择区域和项目。
3. 在页面右上角，单击"创建终端节点"。
4. 根据界面提示配置参数。 关键配置参数如下：
   - **终端节点方式**：选择"入站"。
   
   - **VPC**：选择云上资源所属VPC。
   
   - **IP地址**：指定IP地址，例如"10.231.x.x"。
    
5. 单击"立即创建"，完成入站终端节点的创建。
 
 #### 步骤二：配置出站终端节点
华为云内网DNS通过出站终端节点将特定域名解析转发到您指定的DNS。
1. 在页面右上角，单击"创建终端节点"。
2. 根据界面提示配置参数。 关键配置参数如下：
   - **终端节点方式**：选择"出站"。
   
   - **VPC**：选择云上资源所属VPC。
   
   - **IP地址**：指定IP地址，例如"10.231.x.x"。
    
3. 单击"立即创建"，完成出站终端节点的创建。
 
 #### 步骤三：配置DNS转发规则
**配置出站终端节点的DNS forward规则**
1. 进入[解析器列表页面](https://console.huaweicloud.com/dns/?#/dns/resolverList)。
2. 单击管理控制台左上角的![](https://support.huaweicloud.com/bestpractice-dns/zh-cn_image_0000001884579401.png)，选择区域和项目。
3. 在"出站终端节点"页签，单击已创建的出站终端节点"操作"列的"添加规则"。
4. 根据界面提示配置参数，为出站终端节点配置转发规则。 关键配置参数如下：
   - **域名**：线下域名，例如"example.com"。
   
   - **VPC**：选择云上资源所属VPC。
   
   - **IP地址**：本地自建DNS的IP地址，例如"192.168.10.179"。
    
5. 单击"确定"。
**配置本地自建DNS的DNS forward规则**
1. 登录线下节点（本地数据中心）的服务器，IP地址为"192.168.10.179"。
2. 执行如下命令，安装bind，为服务器配置DNS服务。 **yum install bind**
   
3. 自建DNS安装完成后，通过如下命令为DNS配置forward规则，将自建DNS无法解析的域名统一转发到入站终端节点。 **vim /etc/named.conf**
   关键配置参数如下：
   1. 增加监听IP：192.168.10.179
   
   2. 增加默认forward配置，将自建DNS无法解析的域名转发到入站终端节点。
      图4自建DNS Forward规则示例   
      ![](https://support.huaweicloud.com/bestpractice-dns/zh-cn_image_0000002229164386.png "点击放大")
      ![](https://support.huaweicloud.com/bestpractice-dns/public_sys-resources/note_3.0-zh-cn.png)
      "10.231.x.x"为入站终端节点配置的IP地址。
      
   
   3. 在自建DNS中，创建域名"example.com"，域名zone文件的路径为：/opt/dns/zones/example.com.z。
      ```
      zone "example.com" IN {
                  type master;
                  file "/opt/dns/zones/example.com.z";
      };
      ```
      
    
4. 执行如下命令，为自建DNS的域名"example.com"配置解析记录。
   **vim /opt/dns/zones/example.com.z**
   ```
   example.com. 172800 IN NS ns1.test.net.
   example.com. 172800 IN NS ns1.test.com.
   example.com. 300 IN SOA ns1.test.net. ns1.test.com. (1 7200 900 1209600 300)
   example.com. 300 IN A 192.168.10.179
   ```
   
 
至此，可以实现线下站点与云上资源的互访。
