
# 通过对等连接和第三方防火墙实现多VPC互访流量清洗
#### 应用场景
虚拟私有云支持用户自主配置和管理虚拟网络环境，您可以在VPC中使用安全组及网络ACL来进行网络访问控制，也可以使用第三方防火墙软件，对云上的业务进行灵活的安全控制。
本文为您介绍通过防火墙软件实现VPC内流量安全管控的需求，首先基于VPC对等连接实现多个VPC网络互通，然后VPC之间互访流量通过防火墙软件过滤清洗。
#### 方案架构
本示例中vpc-A、vpc-B、vpc-C为业务所在的VPC，vpc-X为防火墙所在的VPC，这些VPC通过对等连接实现网络互通。vpc-A、vpc-B、vpc-C之间互通的流量均需要经过vpc-X上的防火墙。根据默认路由表配置，所有vpc-X的入方向流量均引入防火墙，通过防火墙清洗后的流量根据自定义路由表的目的地址送往指定业务VPC。
在[图1]中，以ecs-A01访问ecs-C01为例，您可以清晰的看到流量的请求路径和响应路径。
图1云上VPC互访使用第三方防火墙组网规划   
![](https://support.huaweicloud.com/bestpractice-vpc/zh-cn_image_0000001359777038.png)
#### 资源规划说明
本示例中需要创建虚拟私有云VPC、弹性云服务器ECS以及VPC对等连接，资源规划总体说明请参见[表1]。
![](https://support.huaweicloud.com/bestpractice-vpc/public_sys-resources/note_3.0-zh-cn.png)
以下资源规划详情仅为示例，供您参考，您需要根据实际业务情况规划资源。
 表1云上VPC互访使用第三方防火墙资源规划总体说明 
| 资源        | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
|:---|:---|
| 虚拟私有云VPC  | VPC的资源规划详情如[表2]所示。 本示例中共有4个VPC，包括业务所在VPC和防火墙所在的VPC。这些VPC位于同一个区域内，且这些VPC的子网网段不重叠。 - vpc-A、vpc-B、vpc-C为业务VPC，vpc-X为防火墙VPC，这些VPC通过对等连接实现网络互通。  - vpc-A、vpc-B、vpc-C、vpc-X各有一个子网。  - vpc-A、vpc-B、vpc-C各有一个默认路由表，子网关联VPC默认路由表。  - vpc-X有两个路由表，一个系统自带的默认路由表，一个用户创建的自定义路由表，vpc-X的子网关联自定义路由表。 默认路由表控制vpc-X的入方向流量，自定义路由表控制vpc-X的出方向流量。    注意： 需要通过对等连接通信的VPC的子网网段不能重叠，否则对等连接不会生效，更多详情请参见[无效的VPC对等连接配置](https://support.huaweicloud.com/usermanual-vpc/vpc_peering_0012.html)。 |
| 弹性云服务器ECS | ECS的资源规划详情如[表3]所示。 本示例中共有4个ECS，这些ECS分别位于不同的VPC内，这些ECS如果位于不同的安全组，需要在安全组中添加规则放通对端安全组的网络。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| VPC对等连接   | VPC对等连接的资源规划详情如[表4]所示。 本示例中共3个对等连接，网络连通需求如下： - peer-AX：连通vpc-A和vpc-X的网络。  - peer-BX：连通vpc-B和vpc-X的网络。  - peer-CX：连通vpc-C和vpc-X的网络。   由于VPC对等连接具有传递性，通过路由配置，vpc-A、vpc-B以及vpc-C之间可以通过vpc-X进行网络通信。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
   
 表2VPC资源规划详情 
| VPC名称 | VPC网段          | 子网名称       | 子网网段           | 关联路由表  | 子网作用     |
|:---|:---|:---|:---|:---|:---|
| vpc-A | 10.1.0.0/16    | subnet-A01 | 10.1.0.0/24    | 默认路由表  | 部署业务的子网  |
| vpc-B | 10.2.0.0/16    | subnet-B01 | 10.2.0.0/24    | 默认路由表  | 部署业务的子网  |
| vpc-C | 10.3.0.0/16    | subnet-C01 | 10.3.0.0/24    | 默认路由表  | 部署业务的子网  |
| vpc-X | 192.168.0.0/16 | subnet-X01 | 192.168.0.0/24 | 自定义路由表 | 部署防火墙的子网 |
   
 表3ECS资源规划详情 
| ECS名称   | VPC名称 | 子网名称       | 私有IP地址      | 镜像                                                                                | 安全组                                                                         | ECS作用      |
|:---|:---|:---|:---|:---|:---|:---|
| ecs-A01 | vpc-A | subnet-A01 | 10.1.0.139  | 公共镜像： CentOS 8.2 64bit | sg-demo： 通用Web服务器 | 部署业务的云服务器  |
| ecs-B01 | vpc-B | subnet-B01 | 10.2.0.93   | 公共镜像： CentOS 8.2 64bit | sg-demo： 通用Web服务器 | 部署业务的云服务器  |
| ecs-C01 | vpc-C | subnet-C01 | 10.3.0.220  | 公共镜像： CentOS 8.2 64bit | sg-demo： 通用Web服务器 | 部署业务的云服务器  |
| ecs-X01 | vpc-X | subnet-X01 | 192.168.0.5 | 公共镜像： CentOS 8.2 64bit | sg-demo： 通用Web服务器 | 部署防火墙的云服务器 |
   
 表4VPC对等连接资源规划详情 
| VPC对等连接名称 | 本端VPC | 对端VPC |
|:---|:---|:---|
| peer-AX   | vpc-A | vpc-X |
| peer-BX   | vpc-B | vpc-X |
| peer-CX   | vpc-C | vpc-X |
   
#### 组网规划说明
本示例中需要在VPC路由表中配置路由，实现VPC之间的互通以及通过防火墙的流量清洗、组网规划总体说明请参见[表5]。
![](https://support.huaweicloud.com/bestpractice-vpc/public_sys-resources/note_3.0-zh-cn.png)
以下路由规划详情仅为示例，供您参考，您需要根据实际业务情况规划路由。
 表5云上VPC互访使用第三方防火墙组网规划总体说明 
| 路由表      | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
|:---|:---|
| 业务所在VPC  | vpc-A、vpc-B、vpc-C为业务VPC，路由表的规划详情如[表6]所示。 在vpc-A、vpc-B、vpc-C的默认路由表中，分别添加指向其他VPC子网，下一跳为对等连接的路由，实现不同VPC之间的网络互通。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| 防火墙所在VPC | vpc-X为防火墙VPC，路由表的规划详情如[表7]所示。 1. 在vpc-X的默认路由表中，根据您防火墙部署方案分为以下情况： - 防火墙部署在一台ECS上，则添加目的地址为默认网段（0.0.0.0/0），下一跳为ecs-X01的路由，将流量引入防火墙所在的云服务器。  - 防火墙部署在两台ECS上，对外通过同一个虚拟IP通信，当主ECS发生故障无法对外提供服务时，动态将虚拟IP切换到备ECS，继续对外提供服务。此场景下，则添加目的地址为默认网段（0.0.0.0/0），下一跳为虚拟IP的路由，将流量进入虚拟IP，由虚拟IP将流量引入防火墙所在的云服务器。   本文以防火墙部署在一台ECS上为例，vpc-A、vpc-B、vpc-C互访的流量，都需要经过vpc-X，然后通过该条路由，将流量引入防火墙中进行清洗过滤。   2. 在vpc-X的自定义路由表中，添加目的地址为业务VPC子网网段（vpc-A、vpc-B、vpc-C子网），下一跳为对等连接的路由，将清洗后的流量引入业务VPC。   |
   
 表6业务VPC路由表规划 
| VPC名称 | VPC路由表          | 目的地址           | 下一跳类型 | 下一跳     | 路由类型 | 路由作用                                                                                                                                                                                                                                                                                                                                                                     |
|:---|:---|:---|:---|:---|:---|:---|
| vpc-A | 默认路由表：rtb-vpc-A | 10.2.0.0/24    | 对等连接  | peer-AX | 自定义  | - 目的地址指向vpc-B的子网subnet-B01  - 连通子网subnet-A01和subnet-B01              |
| vpc-A | 默认路由表：rtb-vpc-A | 10.3.0.0/24    | 对等连接  | peer-AX | 自定义  | - 目的地址指向vpc-C的子网subnet-C01  - 连通子网subnet-A01和subnet-C01                |
| vpc-A | 默认路由表：rtb-vpc-A | 192.168.0.0/24 | 对等连接  | peer-AX | 自定义  | - 目的地址指向vpc-X的子网subnet-X01  - 连通子网subnet-A01和subnet-X01   |
| vpc-B | 默认路由表：rtb-vpc-B | 10.1.0.0/24    | 对等连接  | peer-BX | 自定义  | - 目的地址指向vpc-A的子网subnet-A01  - 连通子网subnet-A01和subnet-B01               |
| vpc-B | 默认路由表：rtb-vpc-B | 10.3.0.0/24    | 对等连接  | peer-BX | 自定义  | - 目的地址指向vpc-C的子网subnet-C01  - 连通子网subnet-B01和subnet-C01                   |
| vpc-B | 默认路由表：rtb-vpc-B | 192.168.0.0/24 | 对等连接  | peer-BX | 自定义  | - 目的地址指向vpc-X的子网subnet-X01  - 连通子网subnet-B01和subnet-X01      |
| vpc-C | 默认路由表：rtb-vpc-C | 10.1.0.0/24    | 对等连接  | peer-CX | 自定义  | - 目的地址指向vpc-A的子网subnet-A01  - 连通子网subnet-A01和subnet-C01                 |
| vpc-C | 默认路由表：rtb-vpc-C | 10.2.0.0/24    | 对等连接  | peer-CX | 自定义  | - 目的地址指向vpc-B的子网subnet-B01  - 连通子网subnet-B01和subnet-C01                 |
| vpc-C | 默认路由表：rtb-vpc-C | 192.168.0.0/24 | 对等连接  | peer-CX | 自定义  | - 目的地址指向vpc-X的子网subnet-X01  - 连通子网subnet-C01和subnet-X01          |
   
 表7防火墙VPC路由表规划 
| VPC名称 | VPC路由表                  | 目的地址        | 下一跳类型 | 下一跳     | 路由类型 | 路由作用                                                                                                                                                                                                                                                                                                                                                                                                               |
|:---|:---|:---|:---|:---|:---|:---|
| vpc-X | 默认路由表：rtb-vpc-X         | 0.0.0.0/0   | 服务器实例 | ECS-X   | 自定义  | - 目的地址指向部署防火墙的ecs-X  - 将vpc-X入方向的流量引入防火墙   本文以防火墙部署在一台ECS上为例，如果您的防火墙同时部署在多台ECS上，对外通过虚拟IP通信，则路由下一跳选择虚拟IP。 |
| vpc-X | 自定义路由表：rtb-vpc-custom-X | 10.1.0.0/24 | 对等连接  | peer-AX | 自定义  | - 目的地址指向vpc-A的子网subnet-A01  - 连通子网subnet-A01和subnet-X01                                                     |
| vpc-X | 自定义路由表：rtb-vpc-custom-X | 10.2.0.0/24 | 对等连接  | peer-BX | 自定义  | - 目的地址指向vpc-B的子网subnet-B01  - 连通子网subnet-B01和subnet-X01                                                      |
| vpc-X | 自定义路由表：rtb-vpc-custom-X | 10.3.0.0/24 | 对等连接  | peer-CX | 自定义  | - 目的地址指向vpc-C的子网subnet-C01  - 连通子网subnet-C01和subnet-X01                                                        |
   
#### 约束与限制
- VPC对等连接只能实现同区域VPC的网络互通，因此请确保您的VPC位于同一个区域内。
- 需要通过VPC对等连接通信的VPC的子网网段不能重叠，否则对等连接不会生效，更多详情请参见[无效的VPC对等连接配置](https://support.huaweicloud.com/usermanual-vpc/vpc_peering_0012.html)。
 
#### 操作步骤
1. 在区域A内，创建4个VPC及其子网。 
   具体方法请参见[创建虚拟私有云和子网](https://support.huaweicloud.com/usermanual-vpc/zh-cn_topic_0013935842.html)。
   本示例中的VPC和子网资源规划详情请参见[表2]。
   
   
2. 创建vpc-X内的自定义路由表，并将subnet-X01关联至自定义路由表。 
   1. 在vpc-X内，创建自定义路由表。
      具体方法请参见[创建自定义路由表](https://support.huaweicloud.com/usermanual-vpc/vpc_route01_0005.html)。
      
   
   2. 将子网subnet-X01的关联至[2.a]创建的自定义路由表。
      子网创建完成后，自动关联VPC默认路由表，因此当前子网subnet-X01关联的是vpc-X的默认路由表，需要更换为[2.a]创建的自定义路由表。
      具体方法请参见[更换子网关联的路由表](https://support.huaweicloud.com/usermanual-vpc/vpc_route01_0008.html)。
      
   
   
   
   
3. 创建四个ECS，分别属于不同的VPC内。 
   具体方法请参见[自定义购买ECS](https://support.huaweicloud.com/usermanual-ecs/ecs_03_7002.html)。
   
   
4. 配置ecs-X的网卡，并安装第三方防火墙软件。 
   1. 关闭ecs-X的网卡"源/目的检查"。
      1. 在ECS列表中，单击目标ECS的名称。 进入ECS详情页。
         
      
      2. 选择"弹性网卡"页签，并单击![](https://support.huaweicloud.com/bestpractice-vpc/zh-cn_image_0000001987762837.png)展开ECS的网卡详情区域，可以查看"源/目的检查"功能。
         如[图2]所示，表示"源/目的检查"功能已关闭。
         图2关闭网卡的"源/目的检查"功能   
         ![](https://support.huaweicloud.com/bestpractice-vpc/zh-cn_image_0000001953483430.png) 
       
   
   2. 在ecs-X中安装第三方防火墙。 您可以自行安装或者通过[华为云商店](https://marketplace.huaweicloud.com/all/?q=JemYsueBq-WimSU)购买第三方防火墙。
      
   
   3. 打开ecs-X的IP转发功能。
      1. 执行以下命令，切换root用户。 **su root**
         
      
      2. 执行以下命令，查看IP转发功能是否已开启。 **cat /proc/sys/net/ipv4/ip_forward**
         回显结果：1为开启，0为关闭。
         - 回显为1，任务结束。
         
         - 回显为0，继续执行以下操作。
          
      
      3. 执行以下配置，打开IP转发功能。
         1. 执行以下命令，打开"/etc/sysctl.conf"文件。 **vim /etc/sysctl.conf**
            
         
         2. 按i进入编辑模式。
         
         3. 修改或者添加以下内容。
            ```
            net.ipv4.ip_forward = 1  # 开启IPv4转发
            net.ipv6.conf.all.forwarding = 1  # 若需要支持IPv6，开启IPv6转发
            ```
            
         
         4. 按ESC退出，并输入:wq!保存配置。
          
      
      4. 执行以下命令，使修改生效。 **sudo sysctl -p**
         以上配置为永久生效，重启后不会失效。
         
       
   
   
   
   
5. （可选）为云服务器配置虚拟IP。 
   此步骤为可选：您可以在vpc-X中创建主备服务器，并绑定同一虚拟IP，当主服务器发生故障无法对外提供服务时，动态将虚拟IP切换到备服务器，继续对外提供服务。如果部署第三方防火墙的弹性云服务器不需要主备，此步骤不需要执行。
   1. 在vpc-X的子网内，创建虚拟IP。 具体方法请参见[申请虚拟IP地址](https://support.huaweicloud.com/usermanual-vpc/vpc_vip_0002.html)。
      
   
   2. 将虚拟IP绑定到部署防火墙的主备ECS上。 具体方法请参见[虚拟IP绑定云服务器](https://support.huaweicloud.com/usermanual-vpc/zh-cn_topic_0067802474.html)。
      
    
   
   
6. 创建3个VPC对等连接，并配置路由。 
   1. 创建3个VPC对等连接。
      - 如果您的VPC在同一个账号内，具体方法请参见[创建对等连接连通同账户下的两个VPC网络](https://support.huaweicloud.com/usermanual-vpc/zh-cn_topic_0046655037.html)，您只需要执行该章节的"创建VPC对等连接"小节。
      
      - 如果您的VPC在不同一个账号内，具体方法请参见[创建对等连接连通不同账户下的两个VPC网络](https://support.huaweicloud.com/usermanual-vpc/zh-cn_topic_0046655038.html)，您需要执行该章节的"创建VPC对等连接"小节和"接受对等连接"小节。
      
      
      本示例中的VPC对等连接资源规划详情请参见[表4]。
      
   
   2. 在3个业务VPC的默认路由表中，添加指向其他3个VPC，下一跳为对等连接的路由。 具体方法请参见[添加自定义路由](https://support.huaweicloud.com/usermanual-vpc/vpc_route01_0006.html)。
      本示例中，分别在vpc-A、vpc-B、vpc-C的路由表中，添加[表6]中规划的路由。
      
   
   3. 在防火墙VPC的默认路由表和自定义路由表中，分别配置路由。 具体方法请参见[添加自定义路由](https://support.huaweicloud.com/usermanual-vpc/vpc_route01_0006.html)。
      本示例中，分别在vpc-X的默认路由表和自定义路由表中，添加[表7]中规划的路由。
      
   
   
   
   
7. 登录ECS，验证防火墙是否生效。 
   ECS有多种登录方法，具体请参见[登录弹性云服务器](https://support.huaweicloud.com/ecs_faq/ecs_faq_0632.html)。
   本示例是通过管理控制台远程登录（VNC方式）。
   1. 登录ecs-A01，验证vpc-A与vpc-B网络互通情况。
      ping *ecs-B01的私有IP地址*
      命令示例：
      ping 10.2.0.93
      回显类似如下信息，表示网络互通配置成功。
      ```
      [root@ecs-A01 ~]# ping 10.2.0.93
      PING 10.2.0.93 (10.2.0.93) 56(84) bytes of data.
      64 bytes from 10.2.0.93: icmp_seq=1 ttl=64 time=0.849 ms
      64 bytes from 10.2.0.93: icmp_seq=2 ttl=64 time=0.455 ms
      64 bytes from 10.2.0.93: icmp_seq=3 ttl=64 time=0.385 ms
      64 bytes from 10.2.0.93: icmp_seq=4 ttl=64 time=0.372 ms
      ...
      --- 10.2.0.93 ping statistics ---
      ```
      
   
   2. 不要中断[7.a]，登录ecs-X01，验证vpc-A到vpc-B的流量是否通过ecs-X01。
   
   3. 在ecs-X01上，执行以下命令，检查eth0网卡的流量变化。
      至少连续执行两次命令，检查RX packets和TX packets是否变化。
      ifconfig eth0
      流量变化说明，表示流量通过ecs-X01，流量被防火墙过滤。
      ```
      [root@ecs-X01 ~]# ifconfig eth0
      eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
              inet 192.168.0.5  netmask 255.255.255.0  broadcast 192.168.0.255
              inet6 fe80::f816:3eff:feb6:a632  prefixlen 64  scopeid 0x20<link>
              ether fa:16:3e:b6:a6:32  txqueuelen 1000  (Ethernet)
              RX packets 726222  bytes 252738526 (241.0 MiB)
              RX errors 0  dropped 0  overruns 0  frame 0
              TX packets 672597  bytes 305616882 (291.4 MiB)
              TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
      [root@ecs-X01 ~]# ifconfig eth0
      eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
              inet 192.168.0.5  netmask 255.255.255.0  broadcast 192.168.0.255
              inet6 fe80::f816:3eff:feb6:a632  prefixlen 64  scopeid 0x20<link>
              ether fa:16:3e:b6:a6:32  txqueuelen 1000  (Ethernet)
              RX packets 726260  bytes 252748508 (241.0 MiB)
              RX errors 0  dropped 0  overruns 0  frame 0
              TX packets 672633  bytes 305631756 (291.4 MiB)
              TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
      ```
      
   
   4. 参考[7.a]\~[7.c]，检查其他VPC之间的通信情况。
   
   
   
   
 
