文档首页/ 虚拟私有云 VPC/ 最佳实践/ VPC网络安全/ 通过对等连接和第三方防火墙实现多VPC互访流量清洗
更新时间:2024-10-25 GMT+08:00

通过对等连接和第三方防火墙实现多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互访使用第三方防火墙组网规划

资源规划说明

本示例中需要创建虚拟私有云VPC、弹性云服务器ECS以及VPC对等连接,资源规划总体说明请参见表1

以下资源规划详情仅为示例,供您参考,您需要根据实际业务情况规划资源。

表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对等连接配置

弹性云服务器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进行网络通信。

表2 VPC资源规划详情

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

自定义路由表

部署防火墙的子网

表3 ECS资源规划详情

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

部署业务的云服务器

ecs-C01

vpc-C

subnet-C01

10.3.0.220

部署业务的云服务器

ecs-X01

vpc-X

subnet-X01

192.168.0.5

部署防火墙的云服务器

表4 VPC对等连接资源规划详情

VPC对等连接名称

本端VPC

对端VPC

peer-AX

vpc-A

vpc-X

peer-BX

vpc-B

vpc-X

peer-CX

vpc-C

vpc-X

组网规划说明

本示例中需要在VPC路由表中配置路由,实现VPC之间的互通以及通过防火墙的流量清洗、组网规划总体说明请参见表5

以下路由规划详情仅为示例,供您参考,您需要根据实际业务情况规划路由。

表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

10.3.0.0/24

对等连接

peer-AX

自定义

  • 目的地址指向vpc-C的子网subnet-C01
  • 连通子网subnet-A01和subnet-C01

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

10.3.0.0/24

对等连接

peer-BX

自定义

  • 目的地址指向vpc-C的子网subnet-C01
  • 连通子网subnet-B01和subnet-C01

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

10.2.0.0/24

对等连接

peer-CX

自定义

  • 目的地址指向vpc-B的子网subnet-B01
  • 连通子网subnet-B01和subnet-C01

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。

自定义路由表:rtb-vpc-custom-X

10.1.0.0/24

对等连接

peer-AX

自定义

  • 目的地址指向vpc-A的子网subnet-A01
  • 连通子网subnet-A01和subnet-X01

10.2.0.0/24

对等连接

peer-BX

自定义

  • 目的地址指向vpc-B的子网subnet-B01
  • 连通子网subnet-B01和subnet-X01

10.3.0.0/24

对等连接

peer-CX

自定义

  • 目的地址指向vpc-C的子网subnet-C01
  • 连通子网subnet-C01和subnet-X01

约束与限制

  • VPC对等连接只能实现同区域VPC的网络互通,因此请确保您的VPC位于同一个区域内。
  • 需要通过VPC对等连接通信的VPC的子网网段不能重叠,否则对等连接不会生效,更多详情请参见无效的VPC对等连接配置
  • 第三方防火墙部署的ECS所在的子网需要关联自定义路由表 ,请确保您资源所在的区域支持自定义路由表功能。

    如果在网络控制台的左侧子栏目看到独立的“路由表”选项,表示支持自定义路由表功能。

    图2 支持定义路路由

操作步骤

  1. 在区域A内,创建4个VPC及其子网。

    具体方法请参见创建虚拟私有云和子网

    本示例中的VPC和子网资源规划详情请参见表2

  2. 创建vpc-X内的自定义路由表,并将subnet-X01关联至自定义路由表。

    1. 在vpc-X内,创建自定义路由表。

      具体方法请参见创建自定义路由表

    2. 将子网subnet-X01的关联至2.a创建的自定义路由表。

      子网创建完成后,自动关联VPC默认路由表,因此当前子网subnet-X01关联的是vpc-X的默认路由表,需要更换为2.a创建的自定义路由表。

      具体方法请参见更换子网关联的路由表

  3. 创建四个ECS,分别属于不同的VPC内。

    具体方法请参见自定义购买ECS

  4. 配置ecs-X的网卡,并安装第三方防火墙软件。

    1. 关闭ecs-X的网卡“源/目的检查”。
      1. 在ECS列表中,单击目标ECS的名称。

        进入ECS详情页。

      2. 选择“弹性网卡”页签,并单击展开ECS的网卡详情区域,可以查看“源/目的检查”功能。

        图3所示,表示“源/目的检查”功能已关闭。

        图3 关闭网卡的“源/目的检查”功能
    2. 在ecs-X中安装第三方防火墙。

  5. (可选)为云服务器配置虚拟IP。

    此步骤为可选:您可以在vpc-X中创建主备服务器,并绑定同一虚拟IP,当主服务器发生故障无法对外提供服务时,动态将虚拟IP切换到备服务器,继续对外提供服务。如果部署第三方防火墙的弹性云服务器不需要主备,此步骤不需要执行。
    1. 在vpc-X的子网内,创建虚拟IP。

      具体方法请参见申请虚拟IP地址

    2. 将虚拟IP绑定到部署防火墙的主备ECS上。

      具体方法请参见虚拟IP绑定云服务器

  6. 创建3个VPC对等连接,并配置路由。

    1. 创建3个VPC对等连接。
      • 如果您的VPC在同一个账号内,具体方法请参见创建同一账户下的对等连接,您只需要执行该章节的“创建VPC对等连接”小节。
      • 如果您的VPC在不同一个账号内,具体方法请参见创建不同账户下的对等连接,您需要执行该章节的“创建VPC对等连接”小节和“接受对等连接”小节。

      本示例中的VPC对等连接资源规划详情请参见表4

    2. 在3个业务VPC的默认路由表中,添加指向其他3个VPC,下一跳为对等连接的路由。

      具体方法请参见添加自定义路由

      本示例中,分别在vpc-A、vpc-B、vpc-C的路由表中,添加表6中规划的路由。

    3. 在防火墙VPC的默认路由表和自定义路由表中,分别配置路由。

      具体方法请参见添加自定义路由

      本示例中,分别在vpc-X的默认路由表和自定义路由表中,添加表7中规划的路由。

  7. 登录ECS,验证防火墙是否生效。

    ECS有多种登录方法,具体请参见登录弹性云服务器

    本示例是通过管理控制台远程登录(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之间的通信情况。