这是一个中转网关,使用时候需要在需要打通的VPC内创建一个挂载点,TGW会管理一张路由表来决定流量的转发到对应的挂载点上。本质上是EC2的请求路由到TGW,然后在查询TGW的路由表来再来决定下一跳,所以需要同时修改VPC 内子网的路由表和TGW的路由表。
TGW的网络拓扑图如下:

1. 创建TGW
根据要求创建TGW,如果不需要和本地网络打通,这里填写名称和描述就好。

建议开启以下三个选项:
DNS support:开启打通VPC的DNS支持,这个DNS support无法解析对端的私有R53记录,还需要使用Resolver才行 [^1]
Default route table association:自动创建一个路由表并且关联这个TGW
Default route table propagation:自动路由表自动传播,这样每次更新的时候就不用手动管理路由。
2. 在每个VPC新建挂载点
创建挂载点需要选择关联的TGW以及挂载点的Type,除了VPC之外还有peering,DX类型的可供选择。

同样这里也要开启对DNS的支持,另外关于Appliance Mode support,如果这个功能开启的话,流量只能在相同的可用区进行转发,这个功能开启需要慎重考虑。
3. TGW的路由会自动学,如果没开启的话需要手动添加
手动新建TGW的路由表并且关联到一个TGW,如果前面开启了Default route table association和Default route table propagation不再需要此步骤。

需要在Routes 部分手动添加路由规则

4. 改子网路由表
和peering一一样,需要把对应的流量指到对端,这里10.1.0.0/16的流量到TGW。

5. 跨账户RAM分享,对端RAM 接收
如果需要跨账户打通网络,那么需要用到TGW的share功能,其实就是使用RAM进行资源共享。
对方也是需要在RAM里进行确认,并且接收方不能二次share此TGW。
