Transit Gateway组网实验

在第一章我们提到,Transit Gateway将将网状的结构变成星型结构,大大简化了组网的复杂度(注意VPC的CIDR不能有重叠):

image-20220911183919859

本节我们将基于Transit Gateway将三个VPC打通,三个VPC的网段分别为10.0.0.0/16, 10.1.0.0/16, 10.2.0.0/16:

image-20220911184000731

当新的VPC连接到TGW上时,TGW会自动把它的CIDR加到自己的路由表(TGW route table)上,所以每个attachment能将数据包发送到其他两个attachment:

Destination Target Route type
VPC A CIDR Attachment for VPC A propagated
VPC B CIDR Attachment for VPC B propagated
VPC C CIDR Attachment for VPC C propagated

在配置完Transit Gateway attachment后,为每个VPC配置路由表,它们之间便可以互相访问:

image-20220911184022033

例如,此时如果VPC A想访问VPC C,在走到TGW的路由表后,发现10.2.0.0/16要转到att-c,于是tgw可以将流量送到VPC C

准备工作 - 创建VPC

创建三个VPC,它们网段分别为10.0.0.0/16, 10.1.0.0/16, 10.2.0.0/16,分别命名为project1-vpcproject2-vpcproject3-vpc

保证每个VPC至少有一个公网,然后在每个VPC里分别创建一台EC2,命名为instance-1, instance-2, instance-3

将这三个EC2的安全组放开ICMP协议对10.0.0.0/8网段的访问,这样它们之间具有互相ping的能力。

但是目前由于网络不通,它们之间还无法进行通讯。待实验完成后,它们之间可以互相ping通

创建Transit Gateway

进入VPC页面,在Transit Gateway页面创建一个新的tgw:

image-20220913072702923

输入tgw的名称和描述,其他选项保持默认,然后点击创建:

image-20220913072750624

创建后,要等一分钟状态变为avaliable

添加attachment

上一节我们创建好了一个tgw,还需要往上面绑定三个VPC。

Transit gateway attachment页面进行添加:

image-20220913072910218

选择上一节创建的tgw,这里选择VPC类型的Attachment

image-20220913072946619

选择一开始创建的project1-vpc及其子网:

image-20220913073047391

当我们把VPC attach到tgw时,必须指定这个tgw使用一个或多个AZ;在每个az,要指定一个且最多一个子网。然后TGW会在这个子网里创建一个ENI(占用这个子网一个IP)
只要指定了一个AZ,流量能被路由到该az的所有子网——不仅仅只是这个AZ
如果没有指定某个AZ,那么这个AZ就访问不到TGW


点击Create transit gateway attachement


重复上面步骤两次,为project2-vpcproject3-vpc添加Attachment。

添加路由

将三个VPC绑定到tgw上后,此时它们之间还是不能互相访问,这是因为它们的路由表上还需要添加路由:

image-20220913073502694

分别为三个VPC的子网上添加一条10.0.0.0/8到tgw的路由

测试

登录到project2-vpc上的EC2,此时它可以访问到其他两个VPC的EC2:

image-20220913073758339


查看Transit gateway的路由表,发现只有一个路由表,这个路由表被三个attachment共用:

image-20220915164101840

下一节我们将介绍基于Transit Gateway的路由表来控制VPC之间是否能互相访问