VPC自定义路由表实现流量安全互访
概览
VPC(Virtual Private Cloud)内支持创建多张自定义路由表,可与云智能网的TGW(Transit Gateway)绑定,使得TGW到VPC方向的流量匹配自定义路由表,可以满足用户更多场景的使用,如实现多VPC间的安全防护。
需求场景
安全VPC:多个VPC之间的互访流量需要经过安全VPC进行防护。
说明:
- 安全VPC是一个特定的虚拟私有云(VPC)配置,它在多个VPC之间的互访流量以及VPC访问公网的流量路径上,部署了第三方的防火墙进行安全防护。
- 第三方防火墙配置不在此赘述,用户可根据实际情况自行配置。
方案概述
两个VPC之间的互访流量经过安全VPC
请求流量从源VPC发出之后,先经过安全VPC中的第三方防火墙实例,再到达目的VPC;回向流量从目的VPC发出之后,同样先经过安全VPC中的第三方防火墙实例,再回到源VPC。
按以下方式配置路由表(详见配置步骤):
- 业务 VPC 路由设定:对于 VPC-A 与 VPC-B,系统默认路由表已能满足基础通信需求。在其接入云智能网(CSN)的过程中,系统将自动把指向这两个 VPC 的三大私网段路由信息同步至中转网关(TGW),无需额外复杂操作,确保最简捷的连通基础构建。
- 路由表分类与关联:CSN中将默认路由表定义为不可信路由表,手动创建一张自定义路由表定义为可信路由表,VPC-A与VPC-B关联不可信路由表,安全VPC关联可信路由表。
- 安全 VPC 流量导向精细化:安全VPC自定义路由表绑定至中转网关(TGW),将安全VPC入向流量导流至防火墙;安全VPC系统路由表引流至TGW。
配置步骤
环境准备
创建VPC-A、VPC-B和安全VPC三个VPC。由于当前在VPC路由表中,子网直连路由优先级高于自定义路由,VPC尽量选择不同网段,为了避免出现流量被直连路由导走情况。本示例中,VPC-A网段为192.168.0.0/16,VPC-B网段为172.16.0.0/16,安全VPC网段为10.0.0.0/16。
具体操作方法参考创建VPC
在安全VPC中创建一台虚机,模拟第三方防火墙;在VPC-A和VPC-B中各创建一台虚机,用于两VPC间互访流量的连通性测试。
具体操作方法参考创建云服务器实例。
合理设置三台虚机的安全组,使得三台实例之间可以相互通信。
具体操作方法参考安全组。
配置流程
步骤一:创建CSN实例并加载VPC
- 登录到百度智能云控制台,创建一个CSN实例。
具体操作方法参考创建云智能网实例。
- 点击创建好的实例名称,进入实例基本信息页面。点击左侧边栏中的“网络实例管理”按钮,进入网络实例管理页面,依次添加VPC-A、VPC-B和安全VPC三个VPC到CSN中。
具体操作方法参考添加网络实例。
- 注意在添加时,"路由学习粒度”选择VPC;“关联至默认路由表”和“被学习至默认路由表”两个功能均选择关闭,在后续步骤中单独配置;“自动为实例配置指向TGW的路由”功能选择开启。
- 加载三个VPC完成后,网络实例管理页面如下图所示。
步骤二:配置CSN实例路由表
- 点击左侧边栏的“路由管理按钮”,进入路由管理页面。此时路由表列表中有一个default路由表,将default路由表定义为不可信路由表。账户开通CSN多路由表白名单后,点击路由表列表中的“+创建”按钮,创建一张自定义路由表定义为可信路由表,名称设置为trusted。
- 在不可信路由表(default)中,添加与VPC-A和VPC-B的关联关系,使得从VPC-A和VPC-B进入TGW的流量匹配不可信路由表。
具体操作可参考关联关系创建方法。
- 在不可信路由表(default)中,添加目标网段分别为VPC-A和VPC-B网段、下一跳实例为安全VPC的两条静态路由,将VPC-A和VPC-B的互访流量转发到安全VPC。
路由添加方法可参考。
- 在可信路由表(trusted)中,创建与安全VPC的关联关系,使得从安全VPC进入TGW的流量匹配可信路由表。
- 在可信路由表(trusted)中,添加VPC-A和VPC-B的学习关系,将经过安全VPC的流量转发到VPC-A或VPC-B。
学习关系创建方法可参考。
- 配置完成后,CSN实例路由表信息如下表所示:
路由表名称 |
路由表描述 |
关联VPC |
路由 |
|
---|---|---|---|---|
目标网段 |
下一跳 |
|||
default |
不可信流量 |
VPC-A、VPC-B |
192.168.0.0/16 |
安全VPC |
172.16.0.0/16 |
安全VPC |
|||
trusted |
可信流量 |
安全VPC |
192.168.0.0/16 |
VPC-A |
172.16.0.0/16 |
VPC-B |
步骤三:配置安全VPC路由表
- 登录到私有网络控制台,点击左侧边栏的“路由表”按钮,进入路由表页面,点击“创建路由表”按钮,路由表名称设置为路由表A,所在网络选择安全VPC。
- 创建完成后,点击路由表A右侧的“管理”按钮,进入路由表A详情页面。
点击“+添加路由”按钮,源网段选择自定义配置,输入0.0.0.0/0,目的网段输入VPC-A的网段,路由类型选择实例路由,下一跳实例选择用户第三方防火墙实例。用同样的方法也添加目的地址为VPC-B网段、其他配置相同的路由。
步骤四:绑定TGW与安全VPC自定义路由表
- 在路由表A详情页面中,点击左侧边栏的“绑定TGW”按钮,再点击“+绑定TGW”按钮,与已创建的TGW实例进行绑定,使得TGW进入安全VPC方向的流量匹配自定义路由表。
- 配置完成后,各VPC路由表信息如下表所示:
VPC名称 |
路由表名称 |
绑定资源 |
路由 |
||
---|---|---|---|---|---|
源网段 |
目标网段 |
下一跳 |
|||
VPC-A |
default |
VPC内全部资源 |
0.0.0.0/0 |
192.168.0.0/16 |
系统 |
0.0.0.0/0 |
192.168.0.0/16 |
TGW实例 |
|||
0.0.0.0/0 |
172.16.0.0/12 |
TGW实例 |
|||
0.0.0.0/0 |
10.0.0.0/8 |
TGW实例 |
|||
VPC-B |
default |
VPC内全部资源 |
0.0.0.0/0 |
172.16.0.0/16 |
系统 |
0.0.0.0/0 |
192.168.0.0/16 |
TGW实例 |
|||
0.0.0.0/0 |
172.16.0.0/12 |
TGW实例 |
|||
0.0.0.0/0 |
10.0.0.0/8 |
TGW实例 |
|||
安全VPC |
default |
VPC内除TGW外全部资源 |
0.0.0.0/0 |
10.0.0.0/16 |
系统 |
0.0.0.0/0 |
192.168.0.0/16 |
TGW实例 |
|||
0.0.0.0/0 |
172.16.0.0/12 |
TGW实例 |
|||
0.0.0.0/0 |
10.0.0.0/8 |
TGW实例 |
|||
路由表A |
TGW实例(TGW进入VPC方向的流量匹配该路由表) |
0.0.0.0/0 |
10.0.0.0/16 |
系统 |
|
0.0.0.0/0 |
192.168.0.0/16 |
第三方防火墙实例 |
|||
0.0.0.0/0 |
172.16.0.0/16 |
第三方防火墙实例 |
连通性测试
- 登录安全VPC中的第三方防火墙实例,执行以下命令启动允许转发。
# 临时启用允许转发,重启后会失效
echo 1 > /proc/sys/net/ipv4/ip_forward
# 永久启动允许转发
echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf
sudo sysctl -p
- 登录VPC-A中的虚机,对VPC-B中虚机的ip执行ping操作,测试VPC-A与VPC-B的连通性,同时在安全VPC中的第三方防火墙实例上,执行tcpdump命令,检查VPC-A与VPC-B的互访流量是否经过第三方防火墙。
# 测试VPC-A与VPC-B连通性
ping <虚机ip地址>
# 测试流量是否通过第三方防火墙
tcpdump host <源虚机ip地址> and <目的虚机ip地址>