You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

通过Transit Gateway连接VPC时Terraform路由配置报错求助

问题诊断与解决方案

错误根源

AWS不允许在VPC路由表中,将属于当前VPC CIDR范围且更具体的子网段路由指向Transit Gateway(TGW)、VPC对等连接这类跨VPC目标。你的VPC_2 CIDR是192.168.0.0/16,192.168.0.0/24是它的子网段,AWS默认会把这个网段的流量当作本地VPC内部流量处理,强行配置指向TGW就会触发InvalidParameterValue错误。

而核心问题是两个VPC使用了重叠的CIDR块(均为192.168.0.0/16),这本身就是AWS架构的禁忌——重叠CIDR的VPC无法通过标准TGW/VPC对等连接正常路由,路由表无法区分两个VPC的网段。

解决步骤

1. 修正VPC CIDR(优先处理)

必须调整其中一个VPC的CIDR为不重叠网段,比如:

  • 将VPC_2的CIDR改为10.0.0.0/16,对应子网调整为10.0.100.0/24
  • 或者将VPC_1的CIDR改为172.16.0.0/16,子网保持172.16.0.0/24

修改后,VPC_2的路由表中192.168.0.0/24不再属于自身CIDR范围,即可正常指向TGW。

2. 调整路由表配置(修正CIDR后执行)

VPC_2子网路由表修正

修正VPC_2的CIDR后,原路由配置可保留,只需确保子网CIDR与VPC CIDR匹配:

resource "aws_route_table" "vpc_2_subnet_route_table" {
  vpc_id = aws_vpc.internet_vpc.id

  # 0.0.0.0/0 -> NAT(保持不变)
  route {
    cidr_block     = "0.0.0.0/0"
    nat_gateway_id = aws_nat_gateway.nat_gateway.id
  }

  # 192.168.0.0/24 -> TGWA(现在可正常生效)
  route {
   cidr_block         = "192.168.0.0/24"
   transit_gateway_id = aws_ec2_transit_gateway.tgw.id
  }

  tags = {
    Name = "internet-private-route-table"
  }
}

TGW路由表验证

确保TGW路由表的转发逻辑符合需求:

  • 0.0.0.0/0指向VPC_2的TGW附件,保障VPC_1的互联网流量走VPC_2的NAT网关
  • 192.168.0.0/24指向VPC_1的TGW附件,保障VPC_2返回VPC_1子网的流量正确路由

3. 验证TGW路由传播(可选但建议)

若开启TGW的路由传播功能,可省去手动配置TGW路由的步骤,让VPC的子网CIDR自动传播到TGW路由表,减少配置错误概率。

额外注意事项

  • 重叠CIDR的VPC不仅会导致路由配置失败,还会引发后续流量转发混淆(比如两个VPC都有192.168.0.10实例,TGW无法判断转发目标),必须彻底避免这种架构。
  • 若因业务限制无法修改VPC CIDR,只能通过中转EC2实例(在VPC_2部署EC2作为路由转发节点)处理192.168.0.0/24流量,但该方式复杂度高,不推荐。

内容的提问来源于stack exchange,提问作者sYNC

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 01:57:48