上一节我们将三个VPC打通,它们之间有了彼此互访的能力。
但是在企业中通常要对VPC之间的访问做限制,例如A与C之间不能进行通讯:

本节我们将实现上面的要求,A和B、B和C能互相通讯,但是A和C之间禁止访问。
上一节中,之所以所有VPC都能互通,是因为每个attachment都共享一张路由表
只要每个attachment有自己单独的路由表,我们就能控制与其他网段之间的访问
接下我们将重建Transit Gateway,然后为每个attachment设置单独的路由表:

我们继续基于上一节创建的三个VPC,但要先删除掉原来的tgw和三个tgw attachment:


创建新的Transit Gateway,注意Default route table association和Default route table propagation不要钩选:

Default route table association会把TGW的默认路由表应用到所有attachment上:
Automatically associate transit gateway attachments with this transit gateway’s default route table
然后和上一节一样,分别将三个VPC attach到这个TGW上:


和上一节不同,我们需要主动创建三个TGW route table, 然后分别绑定对应的三个attachment上。
在TGW route table页面上点击创建:

总共创建三个route table, 分别命名为vpc-a-attachment, vpc-b-attachment, vpc-c-attachment:

创建完成的页面:

分别将三个路由表绑定到对应TGW attachment上:

例如vpc-a-attachment路由表绑定到VPC A的attachment:

分别对三张路由表进行绑定。
这一步我们将主动在路由表上创建传播:
VPC A attachment的路由表,只为它创建到VPC B attachment的传播VPC B attachment的路由表,为它创建VPC A attachment和VPC C attachment的传播VPC C attachment的路由表,只为它创建到VPC B attachment的传播。点击Create propagation:

对于VPC A attachment,选择VPC B对应的attachment:

对于VPC B attachment的路由表,为它选择其他两个attachment:


为三个路由表创建propagation完成后,查看Routes,此时根据其他VPC的CIDR,自动创建好了路由:

上面我们操作的是TGW的路由表,在子网层面,三个VPC的路由表也需要进行设置。将所有到10.0.0.0/8的流量转到对应的TGW:

登录到三个VPC的机器,此时VPC A的机器能ping通VPC B的机器:

但是VPC C的机器却访问不了VPC A:

VPC B的机器能访问通其他两个VPC:

本节我们通过为每个VPC attachment设置单独的TGW路由表,实现了VPC之间的隔离