通过对等连接和第三方防火墙实现多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为例,您可以清晰的看到流量的请求路径和响应路径。
资源规划说明
本示例中需要创建虚拟私有云VPC、弹性云服务器ECS以及VPC对等连接,资源规划总体说明请参见表1。
以下资源规划详情仅为示例,供您参考,您需要根据实际业务情况规划资源。
资源 |
说明 |
---|---|
虚拟私有云VPC |
VPC的资源规划详情如表2所示。 本示例中共有4个VPC,包括业务所在VPC和防火墙所在的VPC。这些VPC位于同一个区域内,且这些VPC的子网网段不重叠。
须知:
需要通过对等连接通信的VPC的子网网段不能重叠,否则对等连接不会生效,更多详情请参见无效的VPC对等连接配置。 |
弹性云服务器ECS |
ECS的资源规划详情如表3所示。 本示例中共有4个ECS,这些ECS分别位于不同的VPC内,这些ECS如果位于不同的安全组,需要在安全组中添加规则放通对端安全组的网络。 |
VPC对等连接 |
VPC对等连接的资源规划详情如表4所示。
本示例中共3个对等连接,网络连通需求如下:
由于VPC对等连接具有传递性,通过路由配置,vpc-A、vpc-B以及vpc-C之间可以通过vpc-X进行网络通信。 |
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 |
自定义路由表 |
部署防火墙的子网 |
组网规划说明
本示例中需要在VPC路由表中配置路由,实现VPC之间的互通以及通过防火墙的流量清洗、组网规划总体说明请参见表5。
以下路由规划详情仅为示例,供您参考,您需要根据实际业务情况规划路由。
路由表 |
说明 |
---|---|
业务所在VPC |
vpc-A、vpc-B、vpc-C为业务VPC,路由表的规划详情如表6所示。 在vpc-A、vpc-B、vpc-C的默认路由表中,分别添加指向其他VPC子网,下一跳为对等连接的路由,实现不同VPC之间的网络互通。 |
防火墙所在VPC |
vpc-X为防火墙VPC,路由表的规划详情如表7所示。
|
VPC名称 |
VPC路由表 |
目的地址 |
下一跳类型 |
下一跳 |
路由类型 |
路由作用 |
---|---|---|---|---|---|---|
vpc-A |
默认路由表:rtb-vpc-A |
10.2.0.0/24 |
对等连接 |
peer-AX |
自定义 |
|
10.3.0.0/24 |
对等连接 |
peer-AX |
自定义 |
|
||
192.168.0.0/24 |
对等连接 |
peer-AX |
自定义 |
|
||
vpc-B |
默认路由表:rtb-vpc-B |
10.1.0.0/24 |
对等连接 |
peer-BX |
自定义 |
|
10.3.0.0/24 |
对等连接 |
peer-BX |
自定义 |
|
||
192.168.0.0/24 |
对等连接 |
peer-BX |
自定义 |
|
||
vpc-C |
默认路由表:rtb-vpc-C |
10.1.0.0/24 |
对等连接 |
peer-CX |
自定义 |
|
10.2.0.0/24 |
对等连接 |
peer-CX |
自定义 |
|
||
192.168.0.0/24 |
对等连接 |
peer-CX |
自定义 |
|
VPC名称 |
VPC路由表 |
目的地址 |
下一跳类型 |
下一跳 |
路由类型 |
路由作用 |
---|---|---|---|---|---|---|
vpc-X |
默认路由表:rtb-vpc-X |
0.0.0.0/0 |
服务器实例 |
ECS-X |
自定义 |
本文以防火墙部署在一台ECS上为例,如果您的防火墙同时部署在多台ECS上,对外通过虚拟IP通信,则路由下一跳选择虚拟IP。 |
自定义路由表:rtb-vpc-custom-X |
10.1.0.0/24 |
对等连接 |
peer-AX |
自定义 |
|
|
10.2.0.0/24 |
对等连接 |
peer-BX |
自定义 |
|
||
10.3.0.0/24 |
对等连接 |
peer-CX |
自定义 |
|
约束与限制
- VPC对等连接只能实现同区域VPC的网络互通,因此请确保您的VPC位于同一个区域内。
- 需要通过VPC对等连接通信的VPC的子网网段不能重叠,否则对等连接不会生效,更多详情请参见无效的VPC对等连接配置。
- 第三方防火墙部署的ECS所在的子网需要关联自定义路由表 ,请确保您资源所在的区域支持自定义路由表功能。
如果在网络控制台的左侧子栏目看到独立的“路由表”选项,表示支持自定义路由表功能。
图2 支持定义路路由
操作步骤
- 在区域A内,创建4个VPC及其子网。
具体方法请参见创建虚拟私有云和子网。
本示例中的VPC和子网资源规划详情请参见表2。
- 创建vpc-X内的自定义路由表,并将subnet-X01关联至自定义路由表。
- 在vpc-X内,创建自定义路由表。
具体方法请参见创建自定义路由表。
- 将子网subnet-X01的关联至2.a创建的自定义路由表。
子网创建完成后,自动关联VPC默认路由表,因此当前子网subnet-X01关联的是vpc-X的默认路由表,需要更换为2.a创建的自定义路由表。
具体方法请参见更换子网关联的路由表。
- 在vpc-X内,创建自定义路由表。
- 创建四个ECS,分别属于不同的VPC内。
具体方法请参见自定义购买ECS。
- 配置ecs-X的网卡,并安装第三方防火墙软件。
- 关闭ecs-X的网卡“源/目的检查”。
- 在ECS列表中,单击目标ECS的名称。
- 选择“弹性网卡”页签,并单击展开ECS的网卡详情区域,可以查看“源/目的检查”功能。
如图3所示,表示“源/目的检查”功能已关闭。
- 在ecs-X中安装第三方防火墙。
- 关闭ecs-X的网卡“源/目的检查”。
- (可选)为云服务器配置虚拟IP。
此步骤为可选:您可以在vpc-X中创建主备服务器,并绑定同一虚拟IP,当主服务器发生故障无法对外提供服务时,动态将虚拟IP切换到备服务器,继续对外提供服务。如果部署第三方防火墙的弹性云服务器不需要主备,此步骤不需要执行。
- 在vpc-X的子网内,创建虚拟IP。
具体方法请参见申请虚拟IP地址。
- 将虚拟IP绑定到部署防火墙的主备ECS上。
具体方法请参见虚拟IP绑定云服务器。
- 在vpc-X的子网内,创建虚拟IP。
- 创建3个VPC对等连接,并配置路由。
- 创建3个VPC对等连接。
- 如果您的VPC在同一个账号内,具体方法请参见创建同一账户下的对等连接,您只需要执行该章节的“创建VPC对等连接”小节。
- 如果您的VPC在不同一个账号内,具体方法请参见创建不同账户下的对等连接,您需要执行该章节的“创建VPC对等连接”小节和“接受对等连接”小节。
本示例中的VPC对等连接资源规划详情请参见表4。
- 在3个业务VPC的默认路由表中,添加指向其他3个VPC,下一跳为对等连接的路由。
具体方法请参见添加自定义路由。
本示例中,分别在vpc-A、vpc-B、vpc-C的路由表中,添加表6中规划的路由。
- 在防火墙VPC的默认路由表和自定义路由表中,分别配置路由。
具体方法请参见添加自定义路由。
本示例中,分别在vpc-X的默认路由表和自定义路由表中,添加表7中规划的路由。
- 创建3个VPC对等连接。
- 登录ECS,验证防火墙是否生效。
ECS有多种登录方法,具体请参见登录弹性云服务器。
本示例是通过管理控制台远程登录(VNC方式)。
- 登录ecs-A01,验证vpc-A与vpc-B网络互通情况。
命令示例:
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 ---
- 不要中断7.a,登录ecs-X01,验证vpc-A到vpc-B的流量是否通过ecs-X01。
- 在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
- 参考7.a~7.c,检查其他VPC之间的通信情况。
- 登录ecs-A01,验证vpc-A与vpc-B网络互通情况。