VPC网络规划最佳实践(四):跨VPC子网路由控制
当云上的业务系统网络复杂到可以通过点对点连接VPC时,就需要具备子网内跨VPC流量转发的灵活能力。
以华为云为例,VPC提供了默认路由表和定制路由表的能力,其中定制路由表需要申请工单配额才能打开。让我们来看看这两个路由表的功能。
默认路由表
1.在没有自定义路由表的情况下,在VPC创建的子网会自动与默认路由表相关联;也就是说,无论在VPC中创建多少个子网,它们都与默认路由表相关联。
2.使用对等连接打通VPC后,在本端和对端配置Sub_A、Sub_B、Sub_X和Sub_Y子网路由策略(如图所示),然后:
图:默认路由表
自定义路由表
1.用户定义的路由表可以与VPC创建的多个子网相关联,但是每个子网只能属于一个路由表。
2.使用对等连接打通VPC后,可以在自定义路由表中配置本端和对端的路由策略,可以实现跨VPC任意子网之间的路由转发。
3.如下图所示,可以在VPC路由和转发以下子网:
图:自定义路由表
使用默认路由表不能实现跨VPC流量的灵活转发,但是我们可以使用ACL实现跨VPC的流量访问控制。
有VPC_1和VPC_2,它们通过对等连接来连接。在本端和对端配置Sub_A、Sub_B、Sub_X和Sub_Y的路由策略后,考虑以下场景需求:
场景1: Sub_A Sub_X,Sub_B Sub_Y必选,Sub_A和Sub_Y断开,Sub_B和Sub_X断开。
解决方案:采用子网间ACL访问控制,Sub_X的ACL实例可以设置一个pass-through Sub _ A,Sub_Y的ACL实例可以设置一个pass through Sub _ Y(Sub _ X Sub _ Y设置ACL释放规则后默认拒绝访问其他子网)
图:场景1
场景2: sub _ asub _ x Sub_Y,Sub_B sub _ y,但是Sub_B和sub _ x没有连接。
解决方案:子网间采用ACL访问控制。为了简化配置规则,只需要把带Sub_A的规则放在sub _ x的ACL实例上就可以了,(此时只有Sub_X创建了ACL实例,所有子网默认拒绝访问,也就是Sub_B被屏蔽。)
图:场景二
原因和理由
之所以写这篇关于VPC子网路由访问控制的文章,是因为在某省会城市卫健委的项目中,客户强烈要求定制路由表的能力。当时本地资源池节点只有默认路由表的能力,所以建议用ACL实现。虽然ACL方案也能满足需求,但是如果业务系统足够复杂,管理和维护不如自定义路由表直观灵活。
这篇文章构思了好几天。一方面要深刻理解默认路由表和自定义路由各自的机制,同时也要考虑如何用文字和逻辑表达清楚。希望你不用太努力就能看懂这篇文章。