TGW Attachment如何选择对应使用的VPC路由表?
TGW Attachment 路由规则与流量转发逻辑
核心规则
TGW Attachment 本身没有主动选择VPC路由表的能力,也不强制绑定VPC默认路由表,所有转发决策完全遵循以下逻辑:
- 跨AZ部署的TGW Attachment会在每个启用的可用区创建一个专属弹性网卡(ENI),这个ENI的所属子网,是你在配置TGW Attachment的AZ子网映射时手动指定的;如果创建时没手动指定,AWS会自动在对应AZ选择一个公有子网放置该ENI。
- 所有经TGW流入VPC A的流量(比如你场景里VPC B发过来的访问公网流量),会先送到对应AZ的TGW ENI上,后续VPC内的转发路径,完全匹配该ENI所属子网关联的路由表规则,和VPC默认路由表没有任何强制关联。
流量转发到IG还是NAT的决策逻辑
流量最终走IG还是NAT,完全取决于TGW ENI所在子网关联的路由表配置:
- 如果TGW ENI放在VPC A的公有子网:ENI会匹配公有子网路由表,0.0.0.0/0路由指向IG,VPC B过来的流量会直接转发到IG。注意VPC B私有子网的实例没有公网IP,这条路径下实例无法正常访问公网。
- 如果TGW ENI放在VPC A的私有子网:ENI会匹配私有子网路由表,0.0.0.0/0路由指向NAT网关,VPC B过来的流量会先转发到NAT,再经NAT转到IG访问公网,这是符合你场景预期的正常路径。
- 如果两个AZ的TGW ENI分别放在公有、私有子网,会出现流量落在不同AZ时转发路径不一致的问题,表现为部分实例访问公网通、部分不通,属于典型配置错误。
关于“TGW Attachment仅支持VPC默认路由表”的误区
这个说法完全错误。VPC的默认路由表本质和用户自定义创建的路由表没有任何功能、优先级上的差异,只有当子网没有关联任何自定义路由表时,才会默认使用VPC默认路由表。只要给TGW ENI所属的子网关联了自定义路由表,TGW流量就会严格遵循自定义路由表的规则转发。
针对你当前的场景,要实现VPC B经VPC A的NAT正常访问公网,只需要编辑VPC A对应的TGW Attachment配置,将所有可用区的子网映射修改为VPC A的私有子网即可,不需要调整TGW路由表或者VPC A现有的路由表配置。
内容的提问来源于stack exchange,提问作者Erik Asplund
相关产品推荐
相关产品推荐

