
# 基于私网NAT网关实现跨VPC访问ELB实例
#### 应用场景
应用服务A和应用服务B分别部署在两个不同的VPC中，如果应用服务A希望访问到部署在应用服务B内的ELB服务，但是由于两个VPC的网络不互通无法完成访问。您可以通过配置私网NAT网关的DNAT规则实现应用服务A跨VPC访问应用服务B，从而实现应用服务A访问到应用服务B中的ELB服务。
#### 方案架构
本文着重介绍使用私网NAT网关实现跨VPC访问ELB的实践案例。
1. 应用服务A与应用服务B分别部署在VPC-A和VPC-B中，应用服务之间互相隔离。
2. 通过私网NAT网关创建DNAT规则，将VPC-A的中转IP映射到VPC-B中的ELB实例，实现VPC-A中的应用服务A跨VPC访问到VPC-B中的ELB实例。
3. 本实践方案无需配置路由。
图1应用服务A实现跨VPC访问ELB   
![](https://support.huaweicloud.com/bestpractice-natgateway/zh-cn_image_0000002370074081.png "点击放大")
#### 方案优势
1. 业务A和业务B分别部署在不同的VPC中，实现了网络相互隔离，保证了业务的安全性。
2. 通过DNAT规则，实现了通过映射方式将您VPC-B内的实例对其他VPC A提供服务，VPC-B中的其他业务不会对VPC-A暴露，实现了精细化的网络管理。
 
#### 约束与限制
针对同一个ELB实例，仅支持在一个VPC内创建一个DNAT规则进行访问，不支持在多个VPC内创建多个中转IP后使用DNAT规则进行访问。
#### 资源规划说明
本示例中需要创建虚拟私有云VPC、弹性云服务器ECS、私网NAT网关和弹性负载均衡ELB，资源规划总体说明请参见[表1]。
 表1资源规划 
| 资源       | 数量           | 说明                                                                                                                                                                                                                                  |
|:---|:---|:---|
| 虚拟私有云和子网 | 2个虚拟私有云和其下子网 | - VPC-A，本示例网段为：192.168.0.0/16。  - subnet-A01，本示例网段为：192.168.0.0/24。   |
| 虚拟私有云和子网 | 2个虚拟私有云和其下子网 | - VPC-B，本示例网段为：10.0.0.0/16。  - subnet-B01，本示例网段为：10.0.0.0/24。               |
| 私网NAT网关  | 1个           | 本示例名称为private_nat_gateway，用于通过DNAT规则打通VPC-A和VPC-B网络。                                                                                                                                                                                |
| 弹性负载均衡   | 1个           | 被访问的ELB实例，部署在VPC-B内。                                                                                                                                                                                                                |
| 弹性云服务器   | 2台。          | - ECS-A，部署在VPC-A中。  - ECS-B，部署在VPC-B中。                                      |
   
#### 准备工作
- 购买两台ECS并配置应用服务，一台ECS-A部署在VPC-A中，一台ECS-B部署在VPC-B中。购买ECS详情请参考[快速购买和使用Linux ECS](https://support.huaweicloud.com/qs-ecs/ecs_01_0103.html)。
- 创建一个HTTP协议的的后端服务器组-B，暂不关联弹性负载均衡，所属虚拟私有云为VPC-B，并将ECS-B添加到该后端服务器组中。创建后端服务器组详情请参考[创建后端服务器组](https://support.huaweicloud.com/usermanual-elb/elb_ug_hdg_0003.html)。
 
 #### 步骤一：创建负载均衡器
1. 进入[购买弹性负载均衡页面](https://console.huaweicloud.com/vpc/?locale=zh-cn#/elb/create/custom)。
2. 根据界面提示选择负载均衡器的基础配置，关键配置参数如[表2]所示。
    表2负载均衡器的基础配置 
   | 参数   | **示例**                                                                                                                                                                       | 说明                                         |
   |:---|:---|:---|
   | 实例类型 | **独享型**                                                                                                                                                                      | 负载均衡的实例类型，选定后不支持修改。                        |
   | 区域   | **华北-北京四**                                                                                                                                                                   | 不同区域的资源之间内网不互通                             |
   | 可用区  | - **可用区1**  - **可用区2**   | 在同一区域下，电力、网络隔离的物理区域，可用区之间内网互通，不同可用区之间物理隔离。 |
   | 名称   | **ELB01**                                                                                                                                                                    | 待创建负载均衡器的名称。                               |
      
   
3. 选定独享型负载均衡实例的基础配置后，您需选择弹性负载均衡的实例规格，实例规格配置参数如[表3]所示。
    表3负载均衡器的规格说明 
   | 参数 | **示例**                                                                                                                                                                         | 说明          |
   |:---|:---|:---|
   | 规格 | - **弹性规格**  - **应用型**   | 选择ELB的实例规格。 |
      
   
4. 请根据界面提示选择负载均衡器的网络配置，配置参数如[表4]所示。
    表4负载均衡器的网络配置 
   | 参数     | **示例**         | 说明                                                                                                                                            |
   |:---|:---|:---|
   | 网络类型   | **IPv4私网**     | 选择ELB实例的网络类型。                                                                                                                                 |
   | 所属VPC  | **VPC-B**      | 负载均衡器所属虚拟私有云，**独享型ELB创建完成后不支持切换**，请做好相关网络规划。                                                                                                  |
   | 前端子网   | **subnet-B01** | 前端子网为独享型负载均衡提供私网IP地址，**用于与内网中的资源进行通信**。 ELB实例创建完成后，如果需要更换前端子网，可以通过解绑并绑定新的IPv4和IPv6地址实现。解绑IP地址可能会影响业务的正常运行，请谨慎操作。 |
   | IPv4地址 | **自动分配IP地址**   | 如果网络类型选择了"IPv4私网"，则需要选择IPv4地址的分配方式。                                                                                                           |
   | 后端子网   | **与前端子网保持一致**  | 后端子网为独享型负载均衡提供私网IP地址，**用于与后端服务器进行通信和健康检查**。                                                                                                   |
      
   
5. 其余参数保持默认，单击"立即购买"，完成ELB实例的创建。
 
#### 步骤二：添加HTTP监听器并配置后端服务器组
为**ELB01** 添加HTTP监听器，并将准备工作中创建的**后端服务器组-B** 添加到该监听器下，监听器的"访问控制"设置为"**允许所有IP访问** "，详情请参考[添加HTTP监听器](https://support.huaweicloud.com/usermanual-elb/elb_ug_jt_0008.html)。
 #### 步骤三：创建中转IP
1. 进入[私网NAT网关列表](https://console.huaweicloud.com/vpc/?locale=zh-cn#/nat/private/gateway)页面。
2. 在私网NAT网关页面，单击"中转IP \> 创建中转IP"，进入创建中转IP页面。
   图2创建中转IP   
   ![](https://support.huaweicloud.com/bestpractice-natgateway/zh-cn_image_0000002370790089.png "点击放大") 
3. 根据界面提示，配置中转IP，配置参数请参见[表5]。
   图3创建中转IP   
   ![](https://support.huaweicloud.com/bestpractice-natgateway/zh-cn_image_0000002370642073.png "点击放大")
    表5中转IP参数说明 
   | 参数    | **示例**         | 参数说明                      |
   |:---|:---|:---|
   | 中转VPC | **VPC-A**      | 中转IP所在的VPC。               |
   | 中转子网  | **subnet-A01** | 中转子网相当于一个中转网络，是中转IP所属的子网。 |
   | 中转IP  | **自动分配**       | 选择中转IP的分配方式**。**          |
      
   
4. 完成中转IP的创建。
 
#### 步骤四：创建私网NAT网关
1. 进入[购买私网NAT网关页面](https://console.huaweicloud.com/vpc/?locale=zh-cn#/nat/private/create)。
2. 根据界面提示，配置私网NAT网关的基本信息，关键配置参数请参见[表6]，其余配置保持默认。
    表6参数说明 
   | 参数    | **示例**                  | 参数说明              |
   |:---|:---|:---|
   | 名称    | **private_nat_gateway** | 私网NAT网关名称。        |
   | 虚拟私有云 | **VPC-B**               | 私网NAT网关所属的VPC。    |
   | 子网    | **subnet-B01**          | 私网NAT网关所属VPC中的子网。 |
   | 规格    | **小型**                  | 私网NAT网关的规格。       |
      
   
3. 单击"立即购买"，完成私网NAT网关的创建。
 
#### 步骤五：创建DNAT规则
1. 进入[私网NAT网关列表](https://console.huaweicloud.com/vpc/?locale=zh-cn#/nat/private/gateway)页面。

2. 在私网NAT网关页面，单击需要添加DNAT规则的私网NAT网关名称。
3. 在私网NAT网关详情页面中，单击"DNAT规则"页签。
4. 在DNAT规则页签中，单击"添加DNAT规则"。
5. 根据界面提示，配置添加DNAT规则参数，详情请参见[表7]。
    表7DNAT规则参数说明 
   | **参数** | **示例**            | **说明**                                                                                        |
   |:---|:---|:---|
   | **本端网络**                                                                                                                 |||
   | 端口类型   | **具体端口**          | 具体端口：属于端口映射方式。私网NAT网关会将以指定协议和端口访问该中转IP的请求转发到目标云主机实例的指定端口上。                                    |
   | 支持协议   | **TCP**           | 协议类型分为TCP和UDP两种类型。                                                                            |
   | 实例类型   | **负载均衡器**         | 选择对外部私网提供服务的实例类型，本示例选择[步骤一]中创建完成的负载均衡器ELB01。               |
   | 业务端口   | **80**            | 实例对外提供服务的协议端口号。                                                                               |
   | **中转网络**                                                                                                                 |||
   | 中转IP   | **192.168.0.144** | 通过绑定中转IP实现IP或端口映射，使IDC或其它VPC可访问本VPC内的服务，本示例选择[步骤三]中创建的中转IP。 |
   | 中转IP端口 | **80**            | 中转IP对外提供服务的端口号。                                                                               |
      
   
6. 配置完成后，单击"确定"，可在DNAT规则列表中查看详情，若"状态"为"运行中"，表示创建成功。
 
#### 步骤六：验证网络连通性
1. 远程登录ECS-B，启动ELB部署的后端服务。 弹性云服务器有多种登录方法，具体请参见[登录弹性云服务器](https://support.huaweicloud.com/ecs_faq/ecs_faq_0632.html)。
   执行命令参考：
   **python3 -m http.server 80**
   图4启动ELB部署的后端服务   
   ![](https://support.huaweicloud.com/bestpractice-natgateway/zh-cn_image_0000002371278717.png "点击放大") 
2. 远程登录ECS-A。
3. 执行以下命令确认网络连通性： **curl http://${中转IP地址}**
   收到类似如下信息，表示ECS-A可以访问到跨VPC的ELB01。
   图5验证跨VPC访问到ELB实例   
   ![](https://support.huaweicloud.com/bestpractice-natgateway/zh-cn_image_0000002371119525.png "点击放大") 
 
