上一节我们将三个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之间的隔离