VPC网络规划最佳实践(四):跨VPC子网路由控制

当云上业务系统网络足够复杂,通过对等连接打通VPC后,需要有灵活的子网跨VPC的流量转发的能力。以华为云为例,VPC提供了默认路由表和自定义路由表的能力,其中自定义路由表需要提工单申请配额才能开通。我们来看一下这两种路由表的能力。默认路由表1、在没有开通自定义路由表的情况下,VPC内创建的子网均自动与默认路由表关联;也就是说,VPC内无论创建多少子网,均与一个默认路由表关联。2、采用对等连接打通VPC后,在本端和对端配置Sub_A、Sub_B、Sub_X、Sub_Y子网路由策略(如图所示),则:Sub_A

当云上的业务系统网络复杂到可以通过点对点连接VPC时,就需要具备子网内跨VPC流量转发的灵活能力。

以华为云为例,VPC提供了默认路由表和定制路由表的能力,其中定制路由表需要申请工单配额才能打开。让我们来看看这两个路由表的功能。

默认路由表

1.在没有自定义路由表的情况下,在VPC创建的子网会自动与默认路由表相关联;也就是说,无论在VPC中创建多少个子网,它们都与默认路由表相关联。

2.使用对等连接打通VPC后,在本端和对端配置Sub_A、Sub_B、Sub_X和Sub_Y子网路由策略(如图所示),然后:

  • Sub_A和Sub_X和Sub_Y路由的输出流量是可达的。
  • Sub_B和Sub_X和Sub_Y路由的出站流量是可达的。
  • Sub_X和Sub_A和Sub_B路由的输出流量是可达的。
  • Sub_Y和Sub_A和Sub_B路由的输出流量是可达的。
  • 图:默认路由表

    自定义路由表

    1.用户定义的路由表可以与VPC创建的多个子网相关联,但是每个子网只能属于一个路由表。

    2.使用对等连接打通VPC后,可以在自定义路由表中配置本端和对端的路由策略,可以实现跨VPC任意子网之间的路由转发。

    3.如下图所示,可以在VPC路由和转发以下子网:

  • Sub_A的出站流量可以通过Sub_X和Sub_Y路由到达,Sub _ X Sub _ Y的出站流量可以通过Sub_A路由到达,而通过VPC子网中的其他路由不可到达。
  • Sub_B出站流量和Sub_Z出站流量可以双向到达,但不能通过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方案也能满足需求,但是如果业务系统足够复杂,管理和维护不如自定义路由表直观灵活。

    这篇文章构思了好几天。一方面要深刻理解默认路由表和自定义路由各自的机制,同时也要考虑如何用文字和逻辑表达清楚。希望你不用太努力就能看懂这篇文章。